-
Notifications
You must be signed in to change notification settings - Fork 9
Glossary
A multifunctional abstraction that can represent various structures, such as computational graphs or syntactic trees.
Note: There are four kinds of expression nodes:
- literal -- stores a value,
- leaf -- represents an external data input,
- placeholder (consider merging with leaf),
- operator node -- binds an operator to its inputs.
A value. Almost everything in Arolla is a value, including types and operators. A significant exception is "expression", which is not a value.
A type identifier, such as ARRAY[FLOAT32]
. In contrast, dtype
usually only
identifies the type of elements within an array.
Note: (For engineers) The
atype
defines the memory layout of values such as byte size, alignment, and methods for constructing, copying, and destructing.The Arolla's type system does not support type inheritance (by design).
Identifies a computation (in the case of computational DAG) or a grammar rule (in the case of AST).
Operator arguments refer to what you pass to an operator or function in
Python: fn(arg1, arg2, keyword_arg=arg3)
.
The arguments can be either positional or keyword, and the arguments for parameters with default values can be omitted.
Operator inputs, on the other hand, are the actual values that the operator sees: these are always a linear sequence of values (without keywords), and default values must be explicitly mentioned.
Example: Let's consider the following:
@arolla.optools.as_lambda_operator('axpb')
def axpb(a, x, b = 0):
returns a * x + b
In the call axpb(1, x=2)
, we pass two arguments to the operator: 1
and
x=2
. The corresponding inputs will be (1, 2, 0)
, where 0
is the default
value for the parameter b
.
- primitive types:
INT32
,FLOAT32
, ... - arrays of primitives:
ARRAY[*]
,DENSE_ARRAY[*]
, ... - operator library:
core.*
,math.*
, ...