Documentation
¶
Overview ¶
Package evaluator defines interfaces for the interpreter to use to evaluate GX code.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ArrayOps ¶ added in v0.3.0
type ArrayOps interface {
// Graph returns the graph to which new nodes are being added.
Graph() ops.Graph
// SubGraph returns a new graph builder.
SubGraph(name string, args []*shape.Shape) (ArrayOps, error)
// Einsum calls an einstein sum on x and y given the expression in ref.
Einsum(ctx ir.Evaluator, expr *ir.EinsumExpr, x, y NumericalElement) (NumericalElement, error)
// BroadcastInDim the data of an array across dimensions.
BroadcastInDim(ctx ir.Evaluator, expr ir.AssignableExpr, x NumericalElement, axisLengths []NumericalElement) (NumericalElement, error)
// Concat concatenates scalars elements into an array with one axis.
Concat(ctx ir.Evaluator, expr ir.AssignableExpr, xs []NumericalElement) (NumericalElement, error)
// Set a slice in an array.
Set(ctx ir.Evaluator, expr *ir.CallExpr, x, updates, index ir.Element) (ir.Element, error)
// ElementFromArray returns an element from an array GX value.
ElementFromArray(ctx ir.Evaluator, expr ir.AssignableExpr, val values.Array) (NumericalElement, error)
}
ArrayOps are the operator implementations for arrays.
type Context ¶
type Context interface {
ir.Evaluator
// Evaluator returns the evaluator used by the interpreter.
Evaluator() Evaluator
// Materialiser returns the materialiser to convert elements into graph nodes.
Materialiser() materialise.Materialiser
}
Context in which an operator is being executed.
type Evaluator ¶
type Evaluator interface {
// Importer returns an importer to import package.
Importer() ir.Importer
// ArrayOps returns the operator implementations for arrays.
ArrayOps() ArrayOps
// Processor returns the used by the array evaluator.
Processor() *processor.Processor
// ElementFromAtom returns an element from an atomic GX value.
ElementFromAtom(ctx ir.Evaluator, expr ir.AssignableExpr, val values.Array) (NumericalElement, error)
// Trace register a call to the trace builtin function.
Trace(ctx ir.Evaluator, call *ir.CallExpr, args []ir.Element) error
}
Evaluator implements GX operators.
type NumericalElement ¶ added in v0.3.0
type NumericalElement interface {
ir.Element
// UnaryOp applies a unary operator on x.
UnaryOp(ctx ir.Evaluator, expr *ir.UnaryExpr) (NumericalElement, error)
// BinaryOp applies a binary operator to x and y.
// Note that the receiver can be either the left or right argument.
BinaryOp(ctx ir.Evaluator, expr *ir.BinaryExpr, x, y NumericalElement) (NumericalElement, error)
// Cast an element into a given data type.
Cast(ctx ir.Evaluator, expr ir.AssignableExpr, target ir.Type) (NumericalElement, error)
// Reshape an element.
Reshape(ctx ir.Evaluator, expr ir.AssignableExpr, axisLengths []NumericalElement) (NumericalElement, error)
}
NumericalElement is a node representing a numerical value.
Click to show internal directories.
Click to hide internal directories.