A Float constant as a GPUExpression.
A Float constant as a GPUExpression.
An Int constant as a GPUExpression.
An Int constant as a GPUExpression.
An array variable in a GPU kernel
An array variable in a GPU kernel
An expression in a GPU kernel
An expression in a GPU kernel
A scalar/vector variable in a GPU kernel
A scalar/vector variable in a GPU kernel
Begin an anonymous block.
Begin an anonymous block.
Debug the GPUOperator.
Debug the GPUOperator.
Begin an "else" block.
Begin an "else" block.
Begin an "elseif" block.
Begin an "elseif" block.
Begin a "for" block.
Begin a "for" block.
Begin a "forEachTensorElement" block.
Begin a "forEachTensorElement" block.
Override global thread allocation.
Override global thread allocation. Typically used to create a thread per tensor element in a field, though the field may be illusory, not corresponding to any input or output field. This gives you raw control over thread allocation.
Each thread can see its identity in the global thread space from the constants:
_layer _row _column _tensorElement
Basically this creates a thread for each element in a tensor field.
The shape of the global threads allocated. This may be 1D, 2D or 3D, and each thread can see its identity with the _layer, _row, and _column constants.
The shape of the tensors in the (possibly illusory) field. One thread is created for each tensor in that field.
Statement for the global thread allocation override.
Override global thread allocation.
Override global thread allocation. Typically used to create a thread per tensor in a field, though the field may be illusory, not corresponding to any input or output field. This gives you raw control over thread allocation.
Each thread can see its identity in the global thread space from the constants:
_layer _row _column
The shape of the global threads allocated. This may be 1D, 2D or 3D, and each thread can see its identity with the _layer, _row, and _column constants.
Statement for the global thread allocation override.
Begin an "if" block.
Begin an "if" block.
Declare an array variable to be local.
Declare an array variable to be local.
Declare a variable to be local.
Declare a variable to be local.
Override local thread allocation (work group size).
Override local thread allocation (work group size).
The shape of the work group threads.
Statement for the local thread allocation override
Create a pointer to an array element.
Create a pointer to an array element.
Create a pointer to a variable.
Create a pointer to a variable.
Read the tensor in a 3D field using explicit addressing.
Read the tensor in a 3D field using explicit addressing.
The tensor field to be read.
The layer address of the tensor.
The row address of the tensor.
The column address of the tensor.
The value of the tensor as an expression.
Read the tensor in a 2D field using explicit addressing.
Read the tensor in a 2D field using explicit addressing.
The tensor field to be read.
The row address of the tensor.
The column address of the tensor.
The value of the tensor as an expression.
Read the tensor in a 1D field using explicit addressing.
Read the tensor in a 1D field using explicit addressing.
The tensor field to be read.
The column address of the tensor.
The value of the tensor as an expression.
Read the "current" tensor (addressed by _layer, _row, _column).
Read the "current" tensor (addressed by _layer, _row, _column).
The tensor field to be read.
The value of the tensor as an expression.
Read the tensor in a 3D field using explicit addressing.
Read the tensor in a 3D field using explicit addressing.
The tensor field to be read.
The layer address of the tensor.
The row address of the tensor.
The column address of the tensor.
The element (index) of the tensor to be read.
The value of the tensor as an expression.
Read the tensor in a 2D field using explicit addressing.
Read the tensor in a 2D field using explicit addressing.
The tensor field to be read.
The row address of the tensor.
The column address of the tensor.
The element (index) of the tensor to be read.
The value of the tensor as an expression.
Read the tensor in a 1D field using explicit addressing.
Read the tensor in a 1D field using explicit addressing.
The tensor field to be read.
The column address of the tensor.
The element (index) of the tensor to be read.
The value of the tensor as an expression.
Read the "current" tensor (addressed by _layer, _row, _column).
Read the "current" tensor (addressed by _layer, _row, _column).
The tensor field to be read.
The element (index) of the tensor to be read.
The value of the tensor as an expression.
Synchronize threads with a barrier with respect to global memory.
Synchronize threads with a barrier with respect to global memory.
Synchronize threads with a barrier with respect to local memory.
Synchronize threads with a barrier with respect to local memory.
Create a 3D array of tensors, where the tensor type is defined the type of tensors in a field.
Create a 3D array of tensors, where the tensor type is defined the type of tensors in a field.
The tensor field to be analyzed.
Layers in tensor array.
Rows in tensor array.
Columns in tensor array.
The declaration for the array.
Create a 2D array of tensors, where the tensor type is defined the type of tensors in a field.
Create a 2D array of tensors, where the tensor type is defined the type of tensors in a field.
The tensor field to be analyzed.
Rows in tensor array.
Columns in tensor array.
The declaration for the array.
Create a 1D array of tensors, where the tensor type is defined the type of tensors in a field.
Create a 1D array of tensors, where the tensor type is defined the type of tensors in a field.
The tensor field to be analyzed.
Length of tensor array.
The declaration for the array.
Create a 3D array of tensor elements, where the element type is defined by the type of tensors in a field.
Create a 3D array of tensor elements, where the element type is defined by the type of tensors in a field.
The tensor field to be analyzed.
Layers in tensor array.
Rows in tensor array.
Columns in tensor array.
The declaration for the array.
Create a 2D array of tensor elements, where the element type is defined by the type of tensors in a field.
Create a 2D array of tensor elements, where the element type is defined by the type of tensors in a field.
The tensor field to be analyzed.
Rows in tensor array.
Columns in tensor array.
The declaration for the array.
Create a 1D array of tensor elements, where the element type is defined by the type of tensors in a field.
Create a 1D array of tensor elements, where the element type is defined by the type of tensors in a field.
The tensor field to be analyzed.
Length of tensor array.
The declaration for the array.
Create an element variable of type defined by the tensors in a field.
Create an element variable of type defined by the tensors in a field.
The tensor field to be analyzed.
The value of the tensor as an expression.
Create a variable of type defined by the tensors in a field.
Create a variable of type defined by the tensors in a field.
The tensor field to be analyzed.
The value of the tensor as an expression.
Declare an array variable to be volatile.
Declare an array variable to be volatile.
Declare a variable to be volatile.
Declare a variable to be volatile.
Begin a "while" block.
Begin a "while" block.
Write a tensor to an indexed location in a 3D output field.
Write a tensor to an indexed location in a 3D output field.
The index of the output field to be written (e.g. _out0)
The tensor to be written
The layer index of the location to be written with the tensor.
The row index of the location to be written with the tensor.
The column index of the location to be written with the tensor.
Write a tensor to an indexed location in a 2D output field.
Write a tensor to an indexed location in a 2D output field.
The index of the output field to be written (e.g. _out0)
The tensor to be written
The row index of the location to be written with the tensor.
The column index of the location to be written with the tensor.
Write a tensor to an indexed location in a 1D output field.
Write a tensor to an indexed location in a 1D output field.
The index of the output field to be written (e.g. _out0)
The tensor to be written
The column index of the location to be written with the tensor.
Write a tensor to an output field using the default location for the current thread (_layer, _row, _column).
Write a tensor to an output field using the default location for the current thread (_layer, _row, _column). Note that if this is a 0D field, though, the tensor will be written to the single location in that field regardless of the (_layer, _row, _column) thread variables.
The index of the output field to be written (e.g. _out0)
The tensor to be written
Write a tensor element to an indexed location in a 3D output field.
Write a tensor element to an indexed location in a 3D output field.
The index of the output field to be written (e.g. _out0)
The tensor element to be written
The layer index of the location to be written with the tensor element.
The row index of the location to be written with the tensor element.
The column index of the location to be written with the tensor element.
The index of the element to be written; this will most commonly be _tensorElement, but it is not restricted to that.
Write a tensor element to an indexed location in a 2D output field.
Write a tensor element to an indexed location in a 2D output field.
The index of the output field to be written (e.g. _out0)
The tensor element to be written
The row index of the location to be written with the tensor element.
The column index of the location to be written with the tensor element.
The index of the element to be written; this will most commonly be _tensorElement, but it is not restricted to that.
Write a tensor element to an indexed location in a 1D output field.
Write a tensor element to an indexed location in a 1D output field.
The index of the output field to be written (e.g. _out0)
The tensor element to be written
The column index of the location to be written with the tensor element.
The index of the element to be written; this will most commonly be _tensorElement, but it is not restricted to that.
Write a tensor element to an output field using the default location for the current thread (_layer, _row, _column).
Write a tensor element to an output field using the default location for the current thread (_layer, _row, _column). Note that if this is a 0D field, though, the tensor will be written to the single location in that field regardless of the (_layer, _row, _column) thread variables.
The index of the output field to be written (e.g. _out0)
The tensor element to be written
The index of the element to be written; this will most commonly be _tensorElement, but it is not restricted to that.
Create an unnamed GPU Operator that produces ten fields.
Create a named GPU Operator that produces ten fields.
Create an unnamed GPU Operator that produces nine fields.
Create a named GPU Operator that produces nine fields.
Create an unnamed GPU Operator that produces eight fields.
Create a named GPU Operator that produces eight fields.
Create an unnamed GPU Operator that produces seven fields.
Create a named GPU Operator that produces seven fields.
Create an unnamed GPU Operator that produces six fields.
Create a named GPU Operator that produces six fields.
Create an unnamed GPU Operator that produces five fields.
Create a named GPU Operator that produces five fields.
Create an unnamed GPU Operator that produces four fields.
Create a named GPU Operator that produces four fields.
Create an unnamed GPU Operator that produces three fields.
Create a named GPU Operator that produces three fields.
Create an unnamed GPU Operator that produces two fields.
Create a named GPU Operator that produces two fields.
Produce a field from a user-defined unnamed GPU operator.
Produce a field from a user-defined unnamed GPU operator. Example:
def myfunction(f1: Field, f2: Field): Field = GPUOperator(f1.fieldType) { // semantic checks here kernel code here, accessing f1 and f2 }
Scala does not support multiple method signatures with default values, hence the multitude of apply() signatures to support a default "" name.
The type of field produced by the operator.
A field produced by the user-defined operator.
Produce a field from a user-defined named GPU operator.
Produce a field from a user-defined named GPU operator. Example:
def myfunction(f1: Field, f2: Field): Field = GPUOperator(f1.fieldType, "myfunction") { // semantic checks here kernel code here, accessing f1 and f2 }
The type of field produced by the operator.
An optional name, used by the profiler and other Cog-internal debugging tools.
A field produced by the user-defined operator.
Implicitly convert a float to an expression.
Implicitly convert a float to an expression.
Implicitly convert an int to an expression.
Implicitly convert an int to an expression.
Declare an internal error described by message
.
Declare an internal error described by message
.
Converts Float constants to their OpenCL equivalents, including the special cases.
Converts Float constants to their OpenCL equivalents, including the special cases.
Override global thread allocation.
Override global thread allocation.
The field type on which to model thread allocation; the thread allocator will treat this as though the output tensor field were of this type, which typically means you'll get a thread per tensor (or tensor element in some cases)
Statement for the global thread allocation override.
(Since version Cog 4.1) use _globalThreads(Shape) or _globalThreads(Shape, Shape) instead
Creates a Field produced by a user-defined GPU operator.