cuTENSOR 数据类型

cutensorDataType_t

enum cutensorDataType_t

此枚举指定数据精度。当数据引用本身不携带类型时(例如 void *)使用。

enumerator CUTENSOR_R_16F

半精度实数

enumerator CUTENSOR_C_16F

由一对半精度数字表示的复数

enumerator CUTENSOR_R_16BF

nv_bfloat16 实数

enumerator CUTENSOR_C_16BF

由一对 nv_bfloat16 数字表示的复数

enumerator CUTENSOR_R_32F

单精度浮点实数

enumerator CUTENSOR_C_32F

由一对单精度浮点数字表示的复数

enumerator CUTENSOR_R_64F

双精度浮点实数

enumerator CUTENSOR_C_64F

由一对双精度浮点数字表示的复数

enumerator CUTENSOR_R_4I

4 位有符号整数实数

enumerator CUTENSOR_C_4I

由一对 4 位有符号整数表示的复数

enumerator CUTENSOR_R_4U

4 位无符号整数实数

enumerator CUTENSOR_C_4U

由一对 4 位无符号整数表示的复数

enumerator CUTENSOR_R_8I

8 位有符号整数实数

enumerator CUTENSOR_C_8I

由一对 8 位有符号整数表示的复数

enumerator CUTENSOR_R_8U

8 位无符号整数实数

enumerator CUTENSOR_C_8U

由一对 8 位无符号整数表示的复数

enumerator CUTENSOR_R_16I

16 位有符号整数实数

enumerator CUTENSOR_C_16I

由一对 16 位有符号整数表示的复数

enumerator CUTENSOR_R_16U

16 位无符号整数实数

enumerator CUTENSOR_C_16U

由一对 16 位无符号整数表示的复数

enumerator CUTENSOR_R_32I

32 位有符号整数实数

enumerator CUTENSOR_C_32I

由一对 32 位有符号整数表示的复数

enumerator CUTENSOR_R_32U

32 位无符号整数实数

enumerator CUTENSOR_C_32U

由一对 32 位无符号整数表示的复数

enumerator CUTENSOR_R_64I

64 位有符号整数实数

enumerator CUTENSOR_C_64I

由一对 64 位有符号整数表示的复数

enumerator CUTENSOR_R_64U

64 位无符号整数实数

enumerator CUTENSOR_C_64U

由一对 64 位无符号整数表示的复数


cutensorComputeDescriptor_t

typedef struct cutensorComputeDescriptor *cutensorComputeDescriptor_t

表示计算描述符的不透明结构。

CUTENSOR_EXTERN const cutensorComputeDescriptor_t CUTENSOR_COMPUTE_DESC_16F

浮点型:5 位指数和 10 位尾数(又名半精度)

CUTENSOR_EXTERN const cutensorComputeDescriptor_t CUTENSOR_COMPUTE_DESC_16BF

浮点型:8 位指数和 7 位尾数(又名 bfloat)

CUTENSOR_EXTERN const cutensorComputeDescriptor_t CUTENSOR_COMPUTE_DESC_TF32

浮点型:8 位指数和 10 位尾数(又名 tensor-float-32)

CUTENSOR_EXTERN const cutensorComputeDescriptor_t CUTENSOR_COMPUTE_DESC_3XTF32

浮点型:比 TF32 更精确,但比 float 精度低

CUTENSOR_EXTERN const cutensorComputeDescriptor_t CUTENSOR_COMPUTE_DESC_32F

浮点型:8 位指数和 23 位尾数(又名单精度浮点数)

CUTENSOR_EXTERN const cutensorComputeDescriptor_t CUTENSOR_COMPUTE_DESC_64F

浮点型:11 位指数和 52 位尾数(又名双精度浮点数)


cutensorHandle_t

typedef struct cutensorHandle *cutensorHandle_t

保存 cuTENSOR 库上下文的不透明结构。


cutensorTensorDescriptor_t

typedef struct cutensorTensorDescriptor *cutensorTensorDescriptor_t

表示张量描述符的不透明结构。


cutensorOperationDescriptor_t

typedef struct cutensorOperationDescriptor *cutensorOperationDescriptor_t

表示任何类型问题描述符(例如,缩并、归约、逐元素)的不透明结构。


cutensorOperationDescriptorAttribute_t

enum cutensorOperationDescriptorAttribute_t

此枚举列出了 cutensorOperationDescriptor_t 的所有可以修改的属性(参见 cutensorOperationDescriptorSetAttributecutensorOperationDescriptorGetAttribute)。

enumerator CUTENSOR_OPERATION_DESCRIPTOR_TAG

int32_t:使用户能够区分关于软件管理计划缓存的两个相同问题。(默认值:0)

enumerator CUTENSOR_OPERATION_DESCRIPTOR_SCALAR_TYPE

cutensorDataType_t:缩放因子数据类型

enumerator CUTENSOR_OPERATION_DESCRIPTOR_FLOPS

float:执行此操作所需的浮点运算次数(假设所有标量都不等于零,除非另有说明)

enumerator CUTENSOR_OPERATION_DESCRIPTOR_MOVED_BYTES

float:从/到全局内存传输的最小字节数(假设所有标量都不等于零,除非另有说明)

enumerator CUTENSOR_OPERATION_DESCRIPTOR_PADDING_LEFT

uint32_t[](大小为 descOut->numModes):每个条目 i 保存应在第 i 个维度左侧填充的填充值数量

enumerator CUTENSOR_OPERATION_DESCRIPTOR_PADDING_RIGHT

uint32_t[](大小为 descOut->numModes):每个条目 i 保存应在第 i 个维度右侧填充的填充值数量

enumerator CUTENSOR_OPERATION_DESCRIPTOR_PADDING_VALUE

主机端指向与输出张量类型相同的元素的指针:常量填充值


cutensorPlanPreference_t

typedef struct cutensorPlanPreference *cutensorPlanPreference_t

缩小适用算法/变体/内核空间的不透明结构。


cutensorPlanPreferenceAttribute_t

enum cutensorPlanPreferenceAttribute_t

此枚举列出了 cutensorPlanPreference_t 对象的所有可以修改的属性。

enumerator CUTENSOR_PLAN_PREFERENCE_AUTOTUNE_MODE

cutensorAutotuneMode_t:确定计划的重复执行(例如,通过 cutensorContract、cutensorPermute)是否应自动调优(即,尝试不同的内核);有关详细信息,请参见“计划缓存”部分。

enumerator CUTENSOR_PLAN_PREFERENCE_CACHE_MODE

cutensorCacheMode_t:确定此计划的相应算法/内核是否应被缓存,并可以精细控制何种情况被视为缓存命中。

enumerator CUTENSOR_PLAN_PREFERENCE_INCREMENTAL_COUNT

int32_t:仅当 CUTENSOR_PLAN_PREFERENCE_CACHE_MODE 设置为 CUTENSOR_AUTOTUNE_MODE_INCREMENTAL 时适用

enumerator CUTENSOR_PLAN_PREFERENCE_ALGO

cutensorAlgo_t:固定特定的 cutensorAlgo_t

enumerator CUTENSOR_PLAN_PREFERENCE_KERNEL_RANK

int32_t:固定内核(算法的子变体;例如,kernel_rank==1 而 algo == CUTENSOR_ALGO_TGETT 将根据 cuTENSOR 的性能模型选择次佳 GETT 内核/变体;kernel_rank==2 将选择第三佳)

enumerator CUTENSOR_PLAN_PREFERENCE_JIT

cutensorJitMode_t:确定是否启用或禁用即时编译(默认值:CUTENSOR_JIT_MODE_NONE)


cutensorPlan_t

typedef struct cutensorPlan *cutensorPlan_t

表示计划(例如,缩并、归约、逐元素)的不透明结构。


cutensorPlanAttribute_t

enum cutensorPlanAttribute_t

此枚举列出了可以通过 cutensorPlanGetAttribute 检索的 cutensorPlan_t 对象的所有属性。

enumerator CUTENSOR_PLAN_REQUIRED_WORKSPACE

uint64_t:执行计划所需的准确工作空间大小(以字节为单位)


cutensorAutotuneMode_t

enum cutensorAutotuneMode_t

此枚举确定关于 cuTENSOR 自动调优功能的模式。

enumerator CUTENSOR_AUTOTUNE_MODE_NONE

指示不进行自动调优(默认);在这种情况下,缓存将有助于减少计划创建开销。在缓存命中的情况下:将重用缓存的计划,否则将忽略计划缓存。

enumerator CUTENSOR_AUTOTUNE_MODE_INCREMENTAL

指示增量式自动调优(即,每次调用相应的 cutensorCreatePlan() 将基于不同的算法/内核创建一个 plan;将被测试的最大内核数由 cutensorPlanPreferenceAttribute_t 的 CUTENSOR_PLAN_PREFERENCE_INCREMENTAL_COUNT 定义)。警告:如果选择了此自动调优模式,则我们无法保证按位完全相同的结果(因为可能会执行不同的算法)。


cutensorJitMode_t

enum cutensorJitMode_t

此枚举确定关于 cuTENSOR 即时编译能力的模式。

enumerator CUTENSOR_JIT_MODE_NONE

指示将不会进行即时编译任何内核。

enumerator CUTENSOR_JIT_MODE_DEFAULT

指示相应的 plan 将尝试为给定的操作编译一个专用内核。仅支持计算能力 >= 8.0(Ampere 或更新版本)的 GPU。


cutensorCacheMode_t

enum cutensorCacheMode_t

此枚举定义了什么被认为是缓存命中。

enumerator CUTENSOR_CACHE_MODE_NONE

Plan 将不会被缓存。

enumerator CUTENSOR_CACHE_MODE_PEDANTIC

相应描述符的所有参数必须与缓存的 plan 完全相同(默认)。


cutensorAlgo_t

enum cutensorAlgo_t

允许用户指定用于执行所需张量运算的算法。

enumerator CUTENSOR_ALGO_DEFAULT_PATIENT

比 CUTENSOR_DEFAULT 更耗时,但通常提供更准确的内核选择。

enumerator CUTENSOR_ALGO_GETT

选择 GETT 算法(仅适用于 contraction)

enumerator CUTENSOR_ALGO_TGETT

转置 (A 或 B) + GETT(仅适用于 contraction)

enumerator CUTENSOR_ALGO_TTGT

转置-转置-GEMM-转置(需要额外的内存)(仅适用于 contraction)

enumerator CUTENSOR_ALGO_DEFAULT

性能模型选择合适的算法和内核。


cutensorWorksizePreference_t

enum cutensorWorksizePreference_t

此枚举让用户可以更精细地控制建议的工作区大小。

此枚举让用户可以更精细地控制 cutensorEstimateWorkspaceSize 建议的工作区大小。

enumerator CUTENSOR_WORKSPACE_MIN

最低内存需求;至少一个算法可用。

enumerator CUTENSOR_WORKSPACE_DEFAULT

旨在在减少工作区需求的同时获得高性能。

enumerator CUTENSOR_WORKSPACE_MAX

最高内存需求;所有算法都将可用(如果内存占用不是问题,请选择此选项)


cutensorOperator_t

enum cutensorOperator_t

此枚举捕获 cuTENSOR 库支持的所有一元和二元逐元素运算。

enumerator CUTENSOR_OP_IDENTITY

恒等运算符(即,元素不会更改)

enumerator CUTENSOR_OP_SQRT

平方根。

enumerator CUTENSOR_OP_RELU

修正线性单元。

enumerator CUTENSOR_OP_CONJ

复共轭。

enumerator CUTENSOR_OP_RCP

倒数。

enumerator CUTENSOR_OP_SIGMOID

y=1/(1+exp(-x))

enumerator CUTENSOR_OP_TANH

y=tanh(x)

enumerator CUTENSOR_OP_EXP

指数运算。

enumerator CUTENSOR_OP_LOG

对数(以 e 为底)。

enumerator CUTENSOR_OP_ABS

绝对值。

enumerator CUTENSOR_OP_NEG

取反。

enumerator CUTENSOR_OP_SIN

正弦。

enumerator CUTENSOR_OP_COS

余弦。

enumerator CUTENSOR_OP_TAN

正切。

enumerator CUTENSOR_OP_SINH

双曲正弦。

enumerator CUTENSOR_OP_COSH

双曲余弦。

enumerator CUTENSOR_OP_ASIN

反正弦。

enumerator CUTENSOR_OP_ACOS

反余弦。

enumerator CUTENSOR_OP_ATAN

反正切。

enumerator CUTENSOR_OP_ASINH

反双曲正弦。

enumerator CUTENSOR_OP_ACOSH

反双曲余弦。

enumerator CUTENSOR_OP_ATANH

反双曲正切。

enumerator CUTENSOR_OP_CEIL

向上取整。

enumerator CUTENSOR_OP_FLOOR

向下取整。

enumerator CUTENSOR_OP_MISH

Mish y=x*tanh(softplus(x)).

enumerator CUTENSOR_OP_SWISH

Swish y=x*sigmoid(x).

enumerator CUTENSOR_OP_SOFT_PLUS

Softplus y=log(exp(x)+1).

enumerator CUTENSOR_OP_SOFT_SIGN

Softsign y=x/(abs(x)+1).

enumerator CUTENSOR_OP_ADD

两个元素相加。

enumerator CUTENSOR_OP_MUL

两个元素相乘。

enumerator CUTENSOR_OP_MAX

两个元素的最大值。

enumerator CUTENSOR_OP_MIN

两个元素的最小值。

enumerator CUTENSOR_OP_UNKNOWN

保留仅供内部使用


cutensorStatus_t

enum cutensorStatus_t

cuTENSOR 状态类型返回值

此类型用于函数状态返回。所有 cuTENSOR 库函数都返回其状态,状态可以具有以下值。

enumerator CUTENSOR_STATUS_SUCCESS

操作已成功完成。

enumerator CUTENSOR_STATUS_NOT_INITIALIZED

不透明数据结构未初始化。

enumerator CUTENSOR_STATUS_ALLOC_FAILED

cuTENSOR 库内部资源分配失败。

enumerator CUTENSOR_STATUS_INVALID_VALUE

向函数传递了不支持的值或参数(指示用户错误)。

enumerator CUTENSOR_STATUS_ARCH_MISMATCH

指示设备未就绪,或者目标架构不受支持。

enumerator CUTENSOR_STATUS_MAPPING_ERROR

访问 GPU 内存空间失败,这通常是由于未能绑定纹理而引起的。

enumerator CUTENSOR_STATUS_EXECUTION_FAILED

GPU 程序执行失败。这通常是由 GPU 上内核启动失败引起的,这可能是由多种原因引起的。

enumerator CUTENSOR_STATUS_INTERNAL_ERROR

发生了 cuTENSOR 内部错误。

enumerator CUTENSOR_STATUS_NOT_SUPPORTED

请求的操作不受支持。

enumerator CUTENSOR_STATUS_LICENSE_ERROR

请求的功能需要一些许可证,并且在尝试检查当前许可时检测到错误。

enumerator CUTENSOR_STATUS_CUBLAS_ERROR

调用 CUBLAS 未成功。

enumerator CUTENSOR_STATUS_CUDA_ERROR

发生了一些未知的 CUDA 错误。

enumerator CUTENSOR_STATUS_INSUFFICIENT_WORKSPACE

提供的工作区不足。

enumerator CUTENSOR_STATUS_INSUFFICIENT_DRIVER

指示驱动程序版本不足。

enumerator CUTENSOR_STATUS_IO_ERROR

指示与文件 I/O 相关的错误。


cudaDataType_t

enum cudaDataType_t

cudaDataType_t 是 CUDA 库支持的类型的枚举。 cuTENSOR 支持实数 FP16、BF16、FP32 和 FP64 以及复数 FP32 和 FP64 输入类型。

enumerator CUDA_R_16F

16 位实数半精度浮点类型

enumerator CUDA_R_16BF

16 位实数 BF16 浮点类型

enumerator CUDA_R_32F

32 位实数单精度浮点类型

enumerator CUDA_C_32F

32 位复数单精度浮点类型(表示为实部和虚部对)

enumerator CUDA_R_64F

64 位实数双精度浮点类型

enumerator CUDA_C_64F

64 位复数双精度浮点类型(表示为实部和虚部对)


cutensorLoggerCallback_t

typedef void (*cutensorLoggerCallback_t)(int32_t logLevel, const char *functionName, const char *message)

用于日志记录的函数指针类型。