4. 半精度内函数

本节介绍半精度内联函数。

要使用这些函数,请在您的程序中包含头文件 cuda_fp16.h。此处定义的所有函数都可在设备代码中使用。某些函数也可用于主机编译器,请参阅各个函数的文档了解详细信息。

注意:主机或设备编译器执行的激进的浮点优化可能会影响此头文件中实现的函数的数值行为。

以下宏可帮助用户选择性地启用/禁用头文件中存在的各种定义

  • CUDA_NO_HALF - 如果定义,此宏将阻止在全局命名空间中定义额外的类型别名,从而帮助避免与用户程序中定义的符号可能发生的冲突。

  • __CUDA_NO_HALF_CONVERSIONS__ - 如果定义,此宏将阻止使用 C++ 类型转换(转换构造函数和转换运算符),这些转换对于内置浮点类型很常见,但对于本质上是用户定义类型的 half 可能是不 желательным。

  • __CUDA_NO_HALF_OPERATORS____CUDA_NO_HALF2_OPERATORS__ - 如果定义,这些宏将阻止意外使用常用的算术和比较运算符。 这会强制执行仅存储类型的语义,并防止在 halfhalf2 类型上进行 C++ 风格的计算。

半精度算术常量

要使用这些常量,请在您的程序中包含头文件 cuda_fp16.h

半精度算术函数

要使用这些函数,请在您的程序中包含头文件 cuda_fp16.h

半精度比较函数

要使用这些函数,请在您的程序中包含头文件 cuda_fp16.h

半精度数学函数

要使用这些函数,请在您的程序中包含头文件 cuda_fp16.h

半精度转换和数据移动

要使用这些函数,请在您的程序中包含头文件 cuda_fp16.h

Half2 算术函数

要使用这些函数,请在您的程序中包含头文件 cuda_fp16.h

Half2 比较函数

要使用这些函数,请在您的程序中包含头文件 cuda_fp16.h

Half2 数学函数

要使用这些函数,请在您的程序中包含头文件 cuda_fp16.h

结构体

__half

__half 数据类型

__half2

__half2 数据类型

__half2_raw

__half2_raw 数据类型

__half_raw

__half_raw 数据类型

类型定义

__nv_half

此数据类型是带有 __nv_ 前缀的别名。

__nv_half2

此数据类型是带有 __nv_ 前缀的别名。

__nv_half2_raw

此数据类型是带有 __nv_ 前缀的别名。

__nv_half_raw

此数据类型是带有 __nv_ 前缀的别名。

half

此数据类型旨在成为半精度数字格式的一流或基本实现。

half2

此数据类型旨在成为半精度数字对类型的一流或基本实现。

nv_half

此数据类型是带有 nv_ 前缀的别名。

nv_half2

此数据类型是带有 nv_ 前缀的别名。

4.9. 类型定义

typedef __half __nv_half

此数据类型是带有 __nv_ 前缀的别名。

typedef __half2 __nv_half2

此数据类型是带有 __nv_ 前缀的别名。

typedef __half2_raw __nv_half2_raw

此数据类型是带有 __nv_ 前缀的别名。

typedef __half_raw __nv_half_raw

此数据类型是带有 __nv_ 前缀的别名。

typedef __half half

此数据类型旨在成为半精度数字格式的一流或基本实现。

未来应在编译器中实现。当前实现只是到带有下划线的相应用户级类型的简单 typedef。

typedef __half2 half2

此数据类型旨在成为半精度数字对类型的一流或基本实现。

未来应在编译器中实现。当前实现只是到带有下划线的相应用户级类型的简单 typedef。

typedef __half nv_half

此数据类型是带有 nv_ 前缀的别名。

typedef __half2 nv_half2

此数据类型是带有 nv_ 前缀的别名。