Module collenchyma::tensor
[−]
[src]
Provides the functionality for memory management across devices.
A Tensor is a potentially multi-dimensional matrix containing information about the actual data and it's structure. A Collenchyma Tensor tracks the memory copies of the numeric data of an Tensor across the devices of the Backend and manages
- the location of these memory copies
- the location of the latest memory copy and
- the synchronisation of memory copies between devices
This is important, as this provides a unified data interface for exectuing Tensor operations on CUDA, OpenCL and common host CPU.
A memory copy represents one logical unit of data, which might me located at the host. The Tensor, tracks the location of the data blob across the various devices that the backend might consist of. This allows us to run operations on various backends with the same data blob.
Terminology
A Tensor is a homogeneous multi-dimensional array - a table of elements (usually numeric elements) of the same type,
indexed by tuples of positive integers. In Collenchyma dimensions
of a Tensor describe what axis are for a
coordinate system. The numbers of dimensions is the rank
. A scala value like 3
has the rank 0, and a Rust array
like [1, 2, 3]
has a rank of 1 as it has one dimension. A array of arrays like [[1, 2, 3], [2, 3]]
has a rank
of 2 as it has two dimensions. The number of elements for a dimension is called length
.
And the number of all elements for each dimension summed up is the size
. These meta data about a Tensor is called
the descriptor
of the Tensor.
Examples
Create a SharedTensor and fill it with some numbers:
use collenchyma::framework::IFramework; use collenchyma::frameworks::Native; use collenchyma::tensor::SharedTensor; // allocate memory let native = Native::new(); let device = native.new_device(native.hardwares()).unwrap(); let shared_data = &mut SharedTensor::<i32>::new(&device, &5).unwrap(); // fill memory with some numbers let local_data = [0, 1, 2, 3, 4]; let data = shared_data.get_mut(&device).unwrap().as_mut_native().unwrap();
Structs
SharedTensor |
Container that handles synchronization of Memory of type |
Enums
Error |
Errors than can occur when synchronizing memory. |
Traits
ITensorDesc |
Describes the Descriptor of a Tensor. |
IntoTensorDesc |
Describes a conversion into a Tensor Descriptor. |
Type Definitions
TensorDesc |
Describes the Descriptor of a SharedTensor. |