pub struct ArrayObject { /* private fields */ }
Expand description

A CUDA Array. Can be bound to a texture or surface.

Implementations

Constructs a generic ArrayObject from an ArrayDescriptor.

Allocates a new CUDA Array that is up to 3-dimensions.

dims contains the extents of the array. dims[0] must be non-zero. dims[1] must be non-zero if dims[2] is non-zero. The rank of the array is equal to the number of non-zero dims.

format determines the data-type of the array.

num_channels determines the number of channels per array element (1, 2, or 4).

use cust::memory::array::{ArrayObject, ArrayFormat};

let one_dim_array = ArrayObject::new([10, 0, 0], ArrayFormat::F32, 1)?;
let two_dim_array = ArrayObject::new([10, 12, 0], ArrayFormat::F32, 1)?;
let three_dim_array = ArrayObject::new([10, 12, 14], ArrayFormat::F32, 1)?;

Allocates a new 1D CUDA Array.

width must be non-zero.

format determines the data-type of the array.

num_channels determines the number of channels per array element (1, 2, or 4).

use cust::memory::array::{ArrayObject, ArrayFormat};

// Allocates a 1D array of 10 single-precision, single-channel floating point values.
let one_dim_array = ArrayObject::new_1d(10, ArrayFormat::F32, 1)?;

Allocates a new CUDA Array that is up to 2-dimensions.

dims contains the extents of the array. dims[0] must be non-zero. The rank of the array is equal to the number of non-zero dims.

format determines the data-type of the array.

num_channels determines the number of channels per array element (1, 2, or 4).

use cust::memory::array::{ArrayObject, ArrayFormat};

// Allocates an 8x24 array of single-precision, single-channel floating point values.
let one_dim_array = ArrayObject::new_2d([8, 24], ArrayFormat::F32, 1)?;

Creates a new Layered 1D or 2D CUDA Array.

dims contains the extents of the array. dims[0] must be non-zero. The rank of the array is equivalent to the number of non-zero dimensions.

num_layers determines the number of layers in the array.

format determines the data-type of the array.

num_channels determines the number of channels per array element (1, 2, or 4).

use cust::memory::array::{ArrayObject, ArrayFormat};

// Allocates a 7x8 array with 10 layers of single-precision, single-channel floating
// point values.
let layered_array = ArrayObject::new_layered([7, 8], 10, ArrayFormat::F32, 1)?;

Creates a new Layered 1D CUDA Array.

width must be non-zero.

num_layers determines the number of layers in the array.

format determines the data-type of the array.

num_channels determines the number of channels per array element (1, 2, or 4).

use cust::memory::array::{ArrayObject, ArrayFormat};

// Allocates a 5-element array with 10 layers of single-precision, single-channel floating
// point values.
let layered_array = ArrayObject::new_layered_1d(5, 10, ArrayFormat::F32, 1)?;

Creates a new Cubemap CUDA Array. The array is represented as 6 side x side 2D arrays.

side is the length of an edge of the cube.

format determines the data-type of the array.

num_channels determines the number of channels per array element (1, 2, or 4).

use cust::memory::array::{ArrayObject, ArrayFormat};

// Allocates an 8x8 Cubemap array of single-precision, single-channel floating point
// numbers.
let layered_array = ArrayObject::new_cubemap(8, ArrayFormat::F32, 1)?;

// All non-layered cubemap arrays have a depth of 6.
assert_eq!(6, layered_array.descriptor()?.depth());

Creates a new Layered Cubemap CUDA Array. The array is represented as multiple 6 side x side 2D arrays.

side is the length of an edge of the cube.

num_layers is the number of cubemaps in the array. The actual “depth” of the array is num_layers * 6.

format determines the data-type of the array.

num_channels determines the number of channels per array element (1, 2, or 4).

use cust::memory::array::{ArrayObject, ArrayFormat};

// Allocates an 8x8 Layered Cubemap array of single-precision, single-channel floating point
// values with 5 layers.
let layered_array = ArrayObject::new_layered_cubemap(8, 5, ArrayFormat::F32, 1)?;

// The depth of a layered cubemap array is equal to the number of layers * 6.
assert_eq!(30, layered_array.descriptor()?.depth());

Gets the descriptor associated with this array.

Try to destroy an ArrayObject. Can fail - if it does, returns the CUDA error and the un-destroyed array object

Copy data from the host to the array on the device. This will not check if the formats match, it does however check for memory size mismatch.

For example, you can copy a [u32; 2] value to a [u8; 8] array just fine, but not to a [u8; 10] array.

Copy data from the array to the host. This will not check if the formats match, it does however check for memory size mismatch.

For example, you can copy a [u32; 2] value to a [u8; 8] array just fine, but not to a [u8; 10] array.

Copy data from the array into a vec on the host. This will not check if the formats match, it does however yield a correct vec. Format mismatch and especially format size mismatch may yield incorrect (but not unsound!) behavior

Trait Implementations

Formats the value using the given formatter. Read more

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.