开发者
下载

ConvertToTensor

功能说明

将不同数据类型的host侧数据,转为一个host侧aclTensor对象。

函数原型

aclTensor *ConvertToTensor(const aclIntArray *value, DataType dataType)
aclTensor *ConvertToTensor(const aclBoolArray *value, DataType dataType)
aclTensor *ConvertToTensor(const aclFloatArray *value, DataType dataType)
aclTensor *ConvertToTensor(const aclFp16Array *value, DataType dataType)
aclTensor *ConvertToTensor(const aclBf16Array *value, DataType dataType)
aclTensor *ConvertToTensor(const aclScalar *value, DataType dataType)
template<typename T> 
aclTensor *ConvertToTensor(const T *value, uint64_t size, DataType dataType)

参数说明

参数

输入/输出

说明

value

输入

host侧源数据。

size

输入

源数据的元素个数。

dataType

输入

将源数据转换为指定数据类型后,写入aclTensor。

返回值说明

返回转换后的host侧tensor。

约束说明

入参指针不能为空。

接口参数数据类型约束如下:

  • 接口1: ConvertToTensor(const aclIntArray *value, DataType dataType)

    参数

    数据类型约束

    value

    aclIntArray类型,内部存储int64_t数据

    dataType

    支持的数据类型:DT_FLOAT、DT_FLOAT16、DT_BF16、DT_INT8、DT_INT16、DT_UINT16、DT_UINT8、DT_INT32、DT_INT64、DT_UINT32、DT_UINT64、DT_BOOL、DT_DOUBLE

  • 接口2: ConvertToTensor(const aclBoolArray *value, DataType dataType)

    参数

    数据类型约束

    value

    aclBoolArray类型,内部存储bool数据

    dataType

    支持的数据类型:DT_FLOAT、DT_FLOAT16、DT_BF16、DT_INT8、DT_INT16、DT_UINT16、DT_UINT8、DT_INT32、DT_INT64、DT_UINT32、DT_UINT64、DT_BOOL、DT_DOUBLE

  • 接口3: ConvertToTensor(const aclFloatArray *value, DataType dataType)

    参数

    数据类型约束

    value

    aclFloatArray类型,内部存储float数据

    dataType

    支持的数据类型:DT_FLOAT、DT_FLOAT16、DT_BF16、DT_INT8、DT_INT16、DT_UINT16、DT_UINT8、DT_INT32、DT_INT64、DT_UINT32、DT_UINT64、DT_BOOL、DT_DOUBLE

  • 接口4: ConvertToTensor(const aclFp16Array *value, DataType dataType)

    参数

    数据类型约束

    value

    aclFp16Array类型,内部存储fp16_t数据

    dataType

    支持的数据类型:DT_FLOAT、DT_FLOAT16、DT_BF16、DT_INT8、DT_INT16、DT_UINT16、DT_UINT8、DT_INT32、DT_INT64、DT_UINT32、DT_UINT64、DT_BOOL、DT_DOUBLE

  • 接口5: ConvertToTensor(const aclBf16Array *value, DataType dataType)

    参数

    数据类型约束

    value

    aclBf16Array类型,内部存储bfloat16数据

    dataType

    支持的数据类型:DT_FLOAT、DT_FLOAT16、DT_BF16、DT_INT8、DT_INT16、DT_UINT16、DT_UINT8、DT_INT32、DT_INT64、DT_UINT32、DT_UINT64、DT_BOOL、DT_DOUBLE

  • 接口6: ConvertToTensor(const T *value, uint64_t size, DataType dataType)

    参数

    数据类型约束

    value

    模板类型T支持:int64_t、uint64_t、int32_t、uint32_t、int8_t、uint8_t、int16_t、uint16_t、float、double、bool、char、op::bfloat16、op::fp16_t

    size

    uint64_t类型,表示元素个数

    dataType

    支持的数据类型:DT_FLOAT、DT_FLOAT16、DT_BF16、DT_INT8、DT_INT16、DT_UINT16、DT_UINT8、DT_INT32、DT_INT64、DT_UINT32、DT_UINT64、DT_BOOL、DT_DOUBLE

  • 接口7: ConvertToTensor(const aclScalar *value, DataType dataType)

    参数

    数据类型约束

    value

    aclScalar类型,支持的数据类型包括:DT_BOOL、DT_INT8、DT_UINT8、DT_INT16、DT_UINT16、DT_INT32、DT_UINT32、DT_INT64、DT_UINT64、DT_FLOAT、DT_DOUBLE、DT_FLOAT16、DT_BF16、DT_COMPLEX64、DT_COMPLEX128、DT_FLOAT8_E5M2、DT_FLOAT8_E4M3FN、DT_FLOAT8_E8M0、DT_FLOAT6_E3M2、DT_FLOAT6_E2M3、DT_FLOAT4_E2M1、DT_FLOAT4_E1M2、DT_HIFLOAT8

    dataType

    支持的数据类型:DT_BOOL、DT_INT8、DT_UINT8、DT_INT16、DT_UINT16、DT_INT32、DT_UINT32、DT_INT64、DT_UINT64、DT_FLOAT、DT_DOUBLE、DT_FLOAT16、DT_BF16、DT_COMPLEX64、DT_COMPLEX128、DT_FLOAT8_E5M2、DT_FLOAT8_E4M3FN、DT_FLOAT8_E8M0、DT_FLOAT6_E3M2、DT_FLOAT6_E2M3、DT_FLOAT4_E2M1、DT_FLOAT4_E1M2、DT_HIFLOAT8

调用示例

1
2
3
4
5
6
7
// 分别将一个aclScalar和int64_t转为host侧tensor
void Func(aclOpExecutor *executor) {
    int64_t val = 5;
    aclScalar *scalar = executor->AllocScalar(val);
    aclTensor *tensor = executor->ConvertToTensor(scalar, DT_INT64);
    tensor = executor->ConvertToTensor(&val, 1, DT_INT64);
}