Documentation
¶
Overview ¶
Package grapheval implements the evaluation of core GX functions.
Index ¶
- func ElementsFromNode(expr elements.ExprAt, node *ops.OutputNode) ([]elements.Element, error)
- func ElementsFromTupleNode(g ops.Graph, file *ir.File, expr ir.Expr, tpl ops.Tuple, ...) ([]elements.Element, error)
- func MaterialiseAll(ao elements.ArrayOps, els []elements.Element) ([]*ops.OutputNode, error)
- func NodeFromElement(ao elements.ArrayOps, el elements.Element) (ops.Node, *shape.Shape, error)
- type BackendNode
- func (n *BackendNode) BinaryOp(ctx elements.FileContext, expr *ir.BinaryExpr, x, y elements.NumericalElement) (elements.NumericalElement, error)
- func (n *BackendNode) Cast(ctx elements.FileContext, expr ir.AssignableExpr, target ir.Type) (elements.NumericalElement, error)
- func (n *BackendNode) Copy() elements.Copier
- func (n *BackendNode) Flatten() ([]elements.Element, error)
- func (*BackendNode) Kind() ir.Kind
- func (n *BackendNode) Materialise(elements.ArrayOps) (elements.Node, error)
- func (n *BackendNode) OutNode() *ops.OutputNode
- func (n *BackendNode) Reshape(ctx elements.FileContext, expr ir.AssignableExpr, ...) (elements.NumericalElement, error)
- func (n *BackendNode) Shape() *shape.Shape
- func (n *BackendNode) Slice(ctx elements.FileContext, expr ir.AssignableExpr, ...) (elements.Element, error)
- func (n *BackendNode) SliceArray(ctx elements.FileContext, expr ir.AssignableExpr, ...) (elements.NumericalElement, error)
- func (n *BackendNode) String() string
- func (n *BackendNode) UnaryOp(ctx elements.FileContext, expr *ir.UnaryExpr) (elements.NumericalElement, error)
- func (n *BackendNode) Unflatten(handles *elements.Unflattener) (values.Value, error)
- type Evaluator
- func (ev *Evaluator) ArgGX(field elements.FieldAt, index int, args []proxies.Value) (elements.Element, error)
- func (ev *Evaluator) ArrayOps() elements.ArrayOps
- func (ev *Evaluator) CallFuncLit(ctx evaluator.Context, ref *ir.FuncLit, args []elements.Element) ([]elements.Element, error)
- func (ev *Evaluator) ElementFromAtom(src elements.ExprAt, val values.Array) (elements.NumericalElement, error)
- func (ev *Evaluator) Importer() evaluator.Importer
- func (ev *Evaluator) NewArrayArgument(parent parentArgument, expr elements.ExprAt, pValue *proxies.Array) (elements.ElementWithArrayFromContext, error)
- func (ev *Evaluator) NewFunc(fn ir.Func, recv *elements.Receiver) elements.Func
- func (ev *Evaluator) NewSub(ao elements.ArrayOps) evaluator.Evaluator
- func (ev *Evaluator) Processor() *processor.Processor
- func (ev *Evaluator) Receiver(field elements.FieldAt, recv proxies.Value) (elements.Element, error)
- func (ev *Evaluator) Trace(call elements.CallAt, fn elements.Func, irFunc *ir.FuncBuiltin, ...) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ElementsFromNode ¶
ElementsFromNode returns a slice of element from a graph node.
func ElementsFromTupleNode ¶
func ElementsFromTupleNode(g ops.Graph, file *ir.File, expr ir.Expr, tpl ops.Tuple, elExprs []ir.AssignableExpr, shps []*shape.Shape) ([]elements.Element, error)
ElementsFromTupleNode converts the graph nodes of a tuple node into elements.
func MaterialiseAll ¶
MaterialiseAll materialises a slice of elements into a slice of output graph nodes.
func NodeFromElement ¶
NodeFromElement converts an element into a graph node. We unpack the value of *ops.OutputNode to prevent from changing the output of Materialise accidentally. Returns an error if the element is not a numerical element.
Types ¶
type BackendNode ¶
type BackendNode struct {
// contains filtered or unexported fields
}
BackendNode is a state element owning a node in the backend graph.
func ElementFromNode ¶
func ElementFromNode(expr elements.ExprAt, node *ops.OutputNode) (*BackendNode, error)
ElementFromNode returns an element representing a node in the backend graph.
func (*BackendNode) BinaryOp ¶
func (n *BackendNode) BinaryOp(ctx elements.FileContext, expr *ir.BinaryExpr, x, y elements.NumericalElement) (elements.NumericalElement, error)
BinaryOp applies a binary operator to x and y.
func (*BackendNode) Cast ¶
func (n *BackendNode) Cast(ctx elements.FileContext, expr ir.AssignableExpr, target ir.Type) (elements.NumericalElement, error)
Cast an element into a given data type.
func (*BackendNode) Copy ¶
func (n *BackendNode) Copy() elements.Copier
Copy the node by returning itself.
func (*BackendNode) Flatten ¶
func (n *BackendNode) Flatten() ([]elements.Element, error)
Flatten returns the element in a slice.
func (*BackendNode) Materialise ¶
Materialise returns itself.
func (*BackendNode) OutNode ¶
func (n *BackendNode) OutNode() *ops.OutputNode
OutNode returns the graph node.
func (*BackendNode) Reshape ¶
func (n *BackendNode) Reshape(ctx elements.FileContext, expr ir.AssignableExpr, axisLengths []elements.NumericalElement) (elements.NumericalElement, error)
Reshape an element into a given shape.
func (*BackendNode) Shape ¶
func (n *BackendNode) Shape() *shape.Shape
Shape returns the shape of the element.
func (*BackendNode) Slice ¶
func (n *BackendNode) Slice(ctx elements.FileContext, expr ir.AssignableExpr, index elements.NumericalElement) (elements.Element, error)
Slice of the value on the first axis given an index.
func (*BackendNode) SliceArray ¶
func (n *BackendNode) SliceArray(ctx elements.FileContext, expr ir.AssignableExpr, index elements.NumericalElement) (elements.NumericalElement, error)
SliceArray of the value on the first axis given an index.
func (*BackendNode) String ¶
func (n *BackendNode) String() string
String representation of the backend node.
func (*BackendNode) UnaryOp ¶
func (n *BackendNode) UnaryOp(ctx elements.FileContext, expr *ir.UnaryExpr) (elements.NumericalElement, error)
UnaryOp applies a unary operator on x.
func (*BackendNode) Unflatten ¶
func (n *BackendNode) Unflatten(handles *elements.Unflattener) (values.Value, error)
Unflatten consumes the next handles to return a GX value.
type Evaluator ¶
type Evaluator struct {
// contains filtered or unexported fields
}
Evaluator evaluates GX operations by adding the corresponding node in the backend graph.
func New ¶
func New(importer evaluator.Importer, pr *processor.Processor, gr ops.Graph, newFunc elements.NewFunc) *Evaluator
New returns a new evaluator given a elements.
func (*Evaluator) ArgGX ¶
func (ev *Evaluator) ArgGX(field elements.FieldAt, index int, args []proxies.Value) (elements.Element, error)
ArgGX represents a GX argument.
func (*Evaluator) CallFuncLit ¶
func (ev *Evaluator) CallFuncLit(ctx evaluator.Context, ref *ir.FuncLit, args []elements.Element) ([]elements.Element, error)
CallFuncLit calls a function literal.
func (*Evaluator) ElementFromAtom ¶
func (ev *Evaluator) ElementFromAtom(src elements.ExprAt, val values.Array) (elements.NumericalElement, error)
ElementFromAtom returns an element from a GX value.
func (*Evaluator) NewArrayArgument ¶
func (ev *Evaluator) NewArrayArgument(parent parentArgument, expr elements.ExprAt, pValue *proxies.Array) (elements.ElementWithArrayFromContext, error)
NewArrayArgument creates a new argument element that the graph can also use as an argument.
func (*Evaluator) NewSub ¶
NewSub returns a new evaluator given a new array operator implementations.
func (*Evaluator) Processor ¶
Processor returns the processor where init and debug traces are registered.