cuPHY
0.1
CUDA PHY Layer Acceration Library
|
This section describes the tensor descriptor functions of the cuPHY application programming interface. More...
Data Structures | |
struct | _cuphyTensorPrm |
struct | cuphyTensorInfo1_t |
Typedefs | |
typedef struct cuphyTensorDescriptor * | cuphyTensorDescriptor_t |
Functions | |
cuphyStatus_t | cuphyCreateTensorDescriptor (cuphyTensorDescriptor_t *ptensorDesc) |
Allocates and initializes a cuPHY tensor descriptor. More... | |
cuphyStatus_t | cuphyDestroyTensorDescriptor (cuphyTensorDescriptor_t tensorDesc) |
Destroys a cuPHY tensor descriptor. More... | |
const char * | cuphyGetDataTypeString (cuphyDataType_t type) |
Returns a string value for a given data type. More... | |
cuphyStatus_t | cuphyGetTensorDescriptor (cuphyTensorDescriptor_t tensorDesc, int numDimsRequested, cuphyDataType_t *dataType, int *numDims, int dimensions[], int strides[]) |
Query values for the internal state of a cuPHY tensor descriptor. More... | |
cuphyStatus_t | cuphyGetTensorSizeInBytes (cuphyTensorDescriptor_t tensorDesc, size_t *psz) |
Returns the size of an allocation for a tensor descriptor. More... | |
cuphyStatus_t | cuphySetTensorDescriptor (cuphyTensorDescriptor_t tensorDesc, cuphyDataType_t type, int numDimensions, const int dimensions[], const int strides[], unsigned int flags) |
Provide values for the internal state of a cuPHY tensor descriptor. More... | |
typedef struct cuphyTensorDescriptor* cuphyTensorDescriptor_t |
cuPHY Tensor Descriptor handle
cuphyStatus_t cuphyCreateTensorDescriptor | ( | cuphyTensorDescriptor_t * | ptensorDesc | ) |
Allocates a cuPHY tensor descriptor and returns a handle in the address provided by the caller.
The allocated descriptor will have type CUPHY_VOID, and (in most cases) cannot be used for operations until the tensor state has been initialized by calling cuphySetTensorDescriptor.
Upon successful return the tensor descriptor will have a rank of 0.
Returns CUPHY_STATUS_INVALID_ARGUMENT if ptensorDesc
is NULL.
Returns CUPHY_STATUS_ALLOC_FAILED if a tensor descriptor cannot be allocated on the host.
Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful.
ptensorDesc | - Address for the new cuphyTensorDescriptor_t instance |
cuphyStatus_t cuphyDestroyTensorDescriptor | ( | cuphyTensorDescriptor_t | tensorDesc | ) |
Destroys a cuPHY tensor descriptor that was previously allocated by a call to cuphyCreateTensorDescriptor. The handle provided to this function should not be used for any operations after this function returns.
Returns CUPHY_STATUS_INVALID_ARGUMENT if tensorDesc
is NULL.
Returns CUPHY_STATUS_SUCCESS if destruction was successful.
tensorDesc | - previously allocated cuphyTensorDescriptor_t instance |
const char* cuphyGetDataTypeString | ( | cuphyDataType_t | type | ) |
Returns a string for the given cuphyDataType_t, or "UNKNOWN_TYPE" if the type is unknown.
type | - data type (cuphyDataType_t) |
char*
pointer to a NULL-terminated stringcuphyStatus_t cuphyGetTensorDescriptor | ( | cuphyTensorDescriptor_t | tensorDesc, |
int | numDimsRequested, | ||
cuphyDataType_t * | dataType, | ||
int * | numDims, | ||
int | dimensions[], | ||
int | strides[] | ||
) |
Retrieves the internal state of a tensor descriptor that was created via the cuphyCreateTensorDescriptor function and initialized with the cuphySetTensorDescriptor function
tensorDesc | - previously allocated cuphyTensorDescriptor_t instance |
numDimsRequested | - the size of the array provided by the dimensions parameter, and the strides parameter (if non-NULL) |
dataType | - address for the returned cuphyDataType_t (may be NULL) |
numDims | - output address for the rank of the tensor descriptor (may be NULL) |
dimensions | - output location for dimensions for the tensor descriptor |
strides | - output location for tensor strides (may be NULL) |
Returns CUPHY_STATUS_INVALID_ARGUMENT if tensorDesc
is NULL, or if numDimsRequested
> 0 and dimensions is NULL.
Returns CUPHY_STATUS_SUCCESS if the state query was successful.
cuphyStatus_t cuphyGetTensorSizeInBytes | ( | cuphyTensorDescriptor_t | tensorDesc, |
size_t * | psz | ||
) |
Calculates the size (in bytes) of an allocation that would be required to represent a tensor described by the given descriptor.
tensorDesc | - previously allocated cuphyTensorDescriptor_t instance |
psz | - address to hold the calculated size output |
Returns CUPHY_STATUS_INVALID_ARGUMENT if tensorDesc
is NULL, or if psz
is NULL.
Returns CUPHY_STATUS_SUCCESS if the size calculation was successful.
cuphyStatus_t cuphySetTensorDescriptor | ( | cuphyTensorDescriptor_t | tensorDesc, |
cuphyDataType_t | type, | ||
int | numDimensions, | ||
const int | dimensions[], | ||
const int | strides[], | ||
unsigned int | flags | ||
) |
Sets the internal state of a tensor descriptor that was created via the cuphyCreateTensorDescriptor function.
Note that a tensor descriptor is not associated with a specific memory allocation or address. A tensor descriptor provides the cuPHY library with values that can be used "interpret" a range of memory as a tensor with the specified properties. A tensor descriptor can be used with multiple different addresses, and an address can be accessed with multiple different tensor descriptors.
tensorDesc | - previously allocated cuphyTensorDescriptor_t instance |
type | - cuphyDataType_t enumeration with the desired tensor element type |
numDimensions | - the desired tensor rank |
dimensions | - an array of dimensions for the tensor descriptor |
strides | - an array of strides (may be NULL) |
flags | - tensor descriptor flags |
Returns CUPHY_STATUS_INVALID_ARGUMENT if:
tensorDesc
is NULL. dimensions
is NULL. numDimensions
<= 0. numDimensions
> CUPHY_DIM_MAX. type
is CUPHY_VOID. Returns CUPHY_STATUS_SUCCESS if the state update was successful.
The stride of a given dimension describes the distance between two elements that differ by 1 in that dimension. For example, a 2-dimensional, (10 x 8) matrix with no padding would have a stride[0] = 1 and stride[1] = 10.
There is no requirement that strides be in ascending order.
The flags
argument can be used to request that the cuPHY library automatically calculate values for the tensor strides, as a convenience. The values allowed for flags
are: