aclInitTensor

Function

Initializes the parameters of a specified aclTensor created by calling aclCreateTensor.

If you want to reuse an existing aclTensor, you can call this API to reset the aclTensor attributes.

Prototype

aclnnStatus aclInitTensor(aclTensor *tensor, const int64_t *viewDims, uint64_t viewDimsNum, aclDataType dataType, const int64_t *stride, int64_t offset, aclFormat format, const int64_t *storageDims, uint64_t storageDimsNum, void *tensorDataAddr)

Parameters

  • The definitions of aclDataType and aclFormat are provided by AscendCL. For details, see aclDataType and aclFormat.
  • StorageShape and ViewShape of aclTensor:
    • ViewShape indicates the logical shape of the aclTensor, which is the size of the tensor required in actual use.
    • StorageShape indicates the actual physical layout shape of the aclTensor, which is the actual size of the tensor in the memory.

    Examples:

    • If StorageShape is [10, 20], the aclTensor is arranged in the memory based on [10, 20].
    • If ViewShape is [2, 5, 20], when the operator is used, the aclTensor can be considered as a data block [2, 5, 20].

Parameter

Input/Output

Description

tensor

Input

aclTensor whose parameters are to be initialized.

viewDims

Input

ViewShape dimension value of a tensor, which is a non-negative integer.

viewDimsNum

Input

Number of ViewShape dimensions of a tensor.

dataType

Input

Data type of a tensor.

stride

Input

Stride of elements in each dimension of the tensor, which is a non-negative integer.

offset

Input

Offset of the first element of the tensor relative to storage, which is a non-negative integer.

format

Input

Tensor format.

storageDims

Input

StorageShape dimension value of the tensor, which is a non-negative integer.

storageDimsNum

Input

Number of StorageShape dimensions of a tensor.

tensorDataAddr

Input

Storage address of the tensor on the device. The address must be 32-byte aligned. Otherwise, an undefined error may occur.

Returns

0 on success; otherwise, failure. For details about the return codes, see Common APIs and Return Codes.

Constraints

None

Call Example

The following sample code is for reference only. Do not copy and run it.

1
2
3
4
5
6
std::vector<int64_t> viewDims = {2, 4};
std::vector<int64_t> stride = {4, 1};
std::vector<int64_t> storageDims = {2, 4};  
// The created aclTensor is reused as a tensor.
// deviceAddr indicates the storage address of the tensor on the device.
auto ret = aclInitTensor(tensor, viewDims.data(), viewDims.size(), ACL_FLOAT16, stride.data(), 0, aclFormat::ACL_FORMAT_ND, storageDims.data(), storageDims.size(), deviceAddr);