Documentation
¶
Overview ¶
Package ops defines the operations backend can build.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CoreBuilder ¶
type CoreBuilder interface { // Graph returns the graph in which the nodes are created into. Graph() Graph // Constant returns a node representing a numerical constant value in the graph. Constant(value platform.HostBuffer) (Node, error) // Tuple returns a node representing a tuple of nodes. Tuple(nodes []Node) (Tuple, error) // Call returns a node that invokes a subgraph. Call(sg *Subgraph, args ...Node) (Node, error) // Subgraph returns a Graph instance that maps to a new subgraph. Subgraph(name string, args []*shape.Shape) (Graph, error) // Argument returns a node set by a caller when calling the function. Argument(name string, shape *shape.Shape, index int) (Node, error) // Unary returns a node applying a unary operator to a node. Unary(op *ast.UnaryExpr, x Node) (Node, error) // Binary returns a node applying a binary operator between two nodes. Binary(op *ast.BinaryExpr, x, y Node) (Node, error) // Reshape returns a reshape operator node. Reshape(x Node, axisLengths []int) (Node, error) // Concat concatenates multiple arrays into a single array. Concat(axis int, nodes []Node) (Node, error) // Cast returns a cast/convert operator node. Cast(x Node, target dtype.DataType) (Node, error) // Slice returns a slice on a node. Slice(x Node, index int) (Node, error) // Set returns a node to set a slice in an array. Set(x, updates, index Node) (Node, error) // DotGeneral returns a general dot operator node. DotGeneral(x, y Node, batchAxes, reduceAxes [2][]int) (Node, error) // While returns a while loop node. While(cond, body *Subgraph, state Node) (Node, error) // BroadcastInDim broadcasts data across a given set of axis. BroadcastInDim(x Node, shape *shape.Shape, broadcastAxes []int) (Node, error) }
CoreBuilder creates node in the graph for core operations.
type Graph ¶
type Graph interface { // Platform used by the graph. Platform() platform.Platform // Core returns the builder to build core operations. Core() CoreBuilder // Num returns the implementation for functions in the num package. Num() NumBuilder // Math returns the implementation for functions in the math package. Math() MathBuilder // Compile the graph for a given device. // The graph is not supposed to be modified once it has been compiled. Compile(dev platform.Device, output, traced []*OutputNode, params []*shape.Shape) (Runner, error) }
Graph implemented by a backend. The GX interpreter uses this interface to build a graph for the backend.
type MathBuilder ¶
type MathBuilder interface { // Cos returns the computation for cosine. Cos(x Node) (Node, error) // Sin returns the computation for sine. Sin(x Node) (Node, error) // Tanh returns the computation for hyperbolic tangent. Tanh(x Node) (Node, error) }
MathBuilder creates node in the graph for functions in the max package from the standard library.
type NumBuilder ¶
type NumBuilder interface { // Iota returns a node filling an array with values from 0 to number of elements-1. Iota(sh *shape.Shape, iotaAxis int) (Node, error) }
NumBuilder creates node in the graph for functions in the num package from the standard library.
type OutputNode ¶
OutputNode is an output node in the graph.
func (*OutputNode) String ¶
func (out *OutputNode) String() string
String representation of an output node.
type Runner ¶
type Runner interface {
Run([]platform.Handle) (out, traces []platform.DeviceHandle, err error)
}
Runner runs a node in a compiled graph.
type Subgraph ¶
type Subgraph struct { Graph Graph Result OutputNode }
Subgraph bundles a Graph and its output node together.
type Tuple ¶
type Tuple interface { Node // Element returns a Node representing the ith element of the tuple. Element(i int) (Node, error) // Size returns the number of elements in the tuple. Size() int // Unpack returns the tuple's constituent Nodes. Unpack() ([]Node, error) }
Tuple bundles multiple Nodes together.