2.7. FP6 转换和数据移动

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

枚举

__nv_fp6_interpretation_t

枚举将 8 位值解释为 fp6 类型的可能方式。

函数

__host__ __device__ __nv_fp6x2_storage_t __nv_cvt_bfloat16raw2_to_fp6x2(const __nv_bfloat162_raw x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将打包在 __nv_bfloat162_raw x 中的两个 nv_bfloat16 精度数字的输入向量转换为两个 fp6 类型的值的向量,使用指定的舍入模式并饱和超出范围的值。

__host__ __device__ __nv_fp6_storage_t __nv_cvt_bfloat16raw_to_fp6(const __nv_bfloat16_raw x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将输入 nv_bfloat16 精度 x 转换为请求类型的 fp6 类型,使用指定的舍入模式并饱和超出范围的值。

__host__ __device__ __nv_fp6x2_storage_t __nv_cvt_double2_to_fp6x2(const double2 x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将打包在 double2 x 中的两个 double 精度数字的输入向量转换为两个 fp6 类型的值的向量,使用指定的舍入模式并饱和超出范围的值。

__host__ __device__ __nv_fp6_storage_t __nv_cvt_double_to_fp6(const double x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将输入 double 精度 x 转换为请求类型的 fp6 类型,使用指定的舍入模式并饱和超出范围的值。

__host__ __device__ __nv_fp6x2_storage_t __nv_cvt_float2_to_fp6x2(const float2 x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将打包在 float2 x 中的两个 single 精度数字的输入向量转换为两个 fp6 类型的值的向量,使用指定的舍入模式并饱和超出范围的值。

__host__ __device__ __nv_fp6_storage_t __nv_cvt_float_to_fp6(const float x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将输入 single 精度 x 转换为请求类型的 fp6 类型,使用指定的舍入模式并饱和超出范围的值。

__host__ __device__ __half_raw __nv_cvt_fp6_to_halfraw(const __nv_fp6_storage_t x, const __nv_fp6_interpretation_t fp6_interpretation)

将指定类型的输入 fp6 x 转换为 half 精度。

__host__ __device__ __half2_raw __nv_cvt_fp6x2_to_halfraw2(const __nv_fp6x2_storage_t x, const __nv_fp6_interpretation_t fp6_interpretation)

将指定类型的两个 fp6 值的输入向量转换为打包在 __half2_raw 结构体中的两个 half 精度值的向量。

__host__ __device__ __nv_fp6x2_storage_t __nv_cvt_halfraw2_to_fp6x2(const __half2_raw x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将打包在 __half2_raw x 中的两个 half 精度数字的输入向量转换为两个 fp6 类型的值的向量,使用指定的舍入模式并饱和超出范围的值。

__host__ __device__ __nv_fp6_storage_t __nv_cvt_halfraw_to_fp6(const __half_raw x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将输入 half 精度 x 转换为请求类型的 fp6 类型,使用指定的舍入模式并饱和超出范围的值。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3()

默认构造函数。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const float f)

float 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值和 cudaRoundNearest 舍入模式。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const long long int val)

long long int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const long int val)

long int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const unsigned short int val)

unsigned short int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const double f)

double 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值和 cudaRoundNearest 舍入模式。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const unsigned long long int val)

unsigned long long int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const short int val)

short int 数据类型的构造函数。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const __nv_bfloat16 f)

__nv_bfloat16 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值和 cudaRoundNearest 舍入模式。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const int val)

int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const __half f)

__half 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值和 cudaRoundNearest 舍入模式。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const unsigned int val)

unsigned int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e2m3::__nv_fp6_e2m3(const unsigned long int val)

unsigned long int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const long long int val)

long long int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const __half f)

__half 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值和 cudaRoundNearest 舍入模式。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const int val)

int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const float f)

float 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值和 cudaRoundNearest 舍入模式。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const short int val)

short int 数据类型的构造函数。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const long int val)

long int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const unsigned long long int val)

unsigned long long int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const unsigned short int val)

unsigned short int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const __nv_bfloat16 f)

__nv_bfloat16 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值和 cudaRoundNearest 舍入模式。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const double f)

double 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值和 cudaRoundNearest 舍入模式。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const unsigned int val)

unsigned int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2()

默认构造函数。

__host__ __device__ __nv_fp6_e3m2::__nv_fp6_e3m2(const unsigned long int val)

unsigned long int 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x2_e2m3::__nv_fp6x2_e2m3(const __nv_bfloat162 f)

__nv_bfloat162 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x2_e2m3::__nv_fp6x2_e2m3(const float2 f)

float2 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x2_e2m3::__nv_fp6x2_e2m3(const double2 f)

double2 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x2_e2m3::__nv_fp6x2_e2m3(const __half2 f)

__half2 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x2_e2m3::__nv_fp6x2_e2m3()

默认构造函数。

__host__ __device__ __nv_fp6x2_e3m2::__nv_fp6x2_e3m2(const __half2 f)

__half2 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x2_e3m2::__nv_fp6x2_e3m2(const float2 f)

float2 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x2_e3m2::__nv_fp6x2_e3m2(const __nv_bfloat162 f)

__nv_bfloat162 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x2_e3m2::__nv_fp6x2_e3m2(const double2 f)

double2 数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x2_e3m2::__nv_fp6x2_e3m2()

默认构造函数。

__host__ __device__ __nv_fp6x4_e2m3::__nv_fp6x4_e2m3(const __half2 flo, const __half2 fhi)

从一对 __half2 数据类型值的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x4_e2m3::__nv_fp6x4_e2m3(const float4 f)

float4 向量数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x4_e2m3::__nv_fp6x4_e2m3(const double4 f)

double4 向量数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x4_e2m3::__nv_fp6x4_e2m3(const __nv_bfloat162 flo, const __nv_bfloat162 fhi)

从一对 __nv_bfloat162 数据类型值的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x4_e2m3::__nv_fp6x4_e2m3()

默认构造函数。

__host__ __device__ __nv_fp6x4_e3m2::__nv_fp6x4_e3m2()

默认构造函数。

__host__ __device__ __nv_fp6x4_e3m2::__nv_fp6x4_e3m2(const __half2 flo, const __half2 fhi)

从一对 __half2 数据类型值的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x4_e3m2::__nv_fp6x4_e3m2(const float4 f)

float4 向量数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x4_e3m2::__nv_fp6x4_e3m2(const __nv_bfloat162 flo, const __nv_bfloat162 fhi)

从一对 __nv_bfloat162 数据类型值的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

__host__ __device__ __nv_fp6x4_e3m2::__nv_fp6x4_e3m2(const double4 f)

double4 向量数据类型的构造函数,依赖于 __NV_SATFINITE 行为处理超出范围的值。

类型定义

__nv_fp6_storage_t

8 位 unsigned integer 类型抽象,用于 fp6 浮点数存储。

__nv_fp6x2_storage_t

16 位 unsigned integer 类型抽象,用于存储 fp6 浮点数对。

__nv_fp6x4_storage_t

32 位 unsigned integer 类型抽象,用于存储 fp6 浮点数四元组。

2.7.1. 枚举

enum __nv_fp6_interpretation_t

枚举将 8 位值解释为 fp6 类型的可能方式。

enumerator __NV_E2M3

代表 e2m3 类型的 fp6 数字。

enumerator __NV_E3M2

代表 e3m2 类型的 fp6 数字。

2.7.2. 函数

__host__ __device__ __nv_fp6x2_storage_t __nv_cvt_bfloat16raw2_to_fp6x2(const __nv_bfloat162_raw x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将打包在 __nv_bfloat162_raw x 中的两个 nv_bfloat16 精度数字的输入向量转换为两个请求类型的 fp6 类型的值的向量,使用指定的舍入模式并饱和超出范围的值。

将输入向量 x 转换为由 fp6_interpretation 参数指定的类型的两个 fp6 值的向量,使用由 rounding 参数指定的舍入模式。大的超出范围的值饱和到相同符号的 MAXNORM。 NaN 输入值导致正 MAXNORM。

返回值

  • __nv_fp6x2_storage_t 值保存转换结果。

__host__ __device__ __nv_fp6_storage_t __nv_cvt_bfloat16raw_to_fp6(const __nv_bfloat16_raw x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将输入 nv_bfloat16 精度 x 转换为请求类型的 fp6 类型,使用指定的舍入模式并饱和超出范围的值。

将输入 x 转换为由 fp6_interpretation 参数指定的类型的 fp6 类型,使用由 rounding 参数指定的舍入模式。大的超出范围的值饱和到相同符号的 MAXNORM。 NaN 输入值导致正 MAXNORM。

返回值

  • __nv_fp6_storage_t 值保存转换结果。

__host__ __device__ __nv_fp6x2_storage_t __nv_cvt_double2_to_fp6x2(const double2 x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将打包在 double2 x 中的两个 double 精度数字的输入向量转换为两个 fp6 类型的值的向量,使用指定的舍入模式并饱和超出范围的值。

将输入向量 x 转换为由 fp6_interpretation 参数指定的类型的两个 fp6 值的向量,使用由 rounding 参数指定的舍入模式。大的超出范围的值饱和到相同符号的 MAXNORM。 NaN 输入值导致正 MAXNORM。

返回值

  • __nv_fp6x2_storage_t 值保存转换结果。

__host__ __device__ __nv_fp6_storage_t __nv_cvt_double_to_fp6(const double x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将输入 double 精度 x 转换为请求类型的 fp6 类型,使用指定的舍入模式并饱和超出范围的值。

将输入 x 转换为由 fp6_interpretation 参数指定的类型的 fp6 类型,使用由 rounding 参数指定的舍入模式。大的超出范围的值饱和到相同符号的 MAXNORM。 NaN 输入值导致正 MAXNORM。

返回值

  • __nv_fp6_storage_t 值保存转换结果。

__host__ __device__ __nv_fp6x2_storage_t __nv_cvt_float2_to_fp6x2(const float2 x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将打包在 float2 x 中的两个 single 精度数字的输入向量转换为两个 fp6 类型的值的向量,使用指定的舍入模式并饱和超出范围的值。

将输入向量 x 转换为由 fp6_interpretation 参数指定的类型的两个 fp6 值的向量,使用由 rounding 参数指定的舍入模式。大的超出范围的值饱和到相同符号的 MAXNORM。 NaN 输入值导致正 MAXNORM。

返回值

  • __nv_fp6x2_storage_t 值保存转换结果。

__host__ __device__ __nv_fp6_storage_t __nv_cvt_float_to_fp6(const float x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将输入 single 精度 x 转换为请求类型的 fp6 类型,使用指定的舍入模式并饱和超出范围的值。

将输入 x 转换为由 fp6_interpretation 参数指定的类型的 fp6 类型,使用由 rounding 参数指定的舍入模式。大的超出范围的值饱和到相同符号的 MAXNORM。 NaN 输入值导致正 MAXNORM。

返回值

  • __nv_fp6_storage_t 值保存转换结果。

__host__ __device__ __half_raw __nv_cvt_fp6_to_halfraw(const __nv_fp6_storage_t x, const __nv_fp6_interpretation_t fp6_interpretation)

将指定类型的输入 fp6 x 转换为 half 精度。

Converts input x of fp6 type of the kind specified by fp6_interpretation parameter to half precision.

返回值

  • The __half_raw value holds the result of conversion.

__host__ __device__ __half2_raw __nv_cvt_fp6x2_to_halfraw2(const __nv_fp6x2_storage_t x, const __nv_fp6_interpretation_t fp6_interpretation)

Converts input vector of two fp6 values of the specified kind to a vector of two half precision values packed in __half2_raw structure.

Converts input vector x of fp6 type of the kind specified by fp6_interpretation parameter to a vector of two half precision values and returns as __half2_raw structure.

返回值

  • The __half2_raw value holds the result of conversion.

__host__ __device__ __nv_fp6x2_storage_t __nv_cvt_halfraw2_to_fp6x2(const __half2_raw x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

Converts input vector of two half precision numbers packed in __half2_raw x into a vector of two values of fp6 type of the requested kind using specified rounding mode and saturating the out-of-range values.

将输入向量 x 转换为由 fp6_interpretation 参数指定的类型的两个 fp6 值的向量,使用由 rounding 参数指定的舍入模式。大的超出范围的值饱和到相同符号的 MAXNORM。 NaN 输入值导致正 MAXNORM。

返回值

  • __nv_fp6x2_storage_t 值保存转换结果。

__host__ __device__ __nv_fp6_storage_t __nv_cvt_halfraw_to_fp6(const __half_raw x, const __nv_fp6_interpretation_t fp6_interpretation, const enum cudaRoundMode rounding)

将输入 half 精度 x 转换为请求类型的 fp6 类型,使用指定的舍入模式并饱和超出范围的值。

将输入 x 转换为由 fp6_interpretation 参数指定的类型的 fp6 类型,使用由 rounding 参数指定的舍入模式。大的超出范围的值饱和到相同符号的 MAXNORM。 NaN 输入值导致正 MAXNORM。

返回值

  • __nv_fp6_storage_t 值保存转换结果。

2.7.3. Typedefs

typedef __nv_fp8_storage_t __nv_fp6_storage_t

8 位 unsigned integer 类型抽象,用于 fp6 浮点数存储。

typedef __nv_fp8x2_storage_t __nv_fp6x2_storage_t

16 位 unsigned integer 类型抽象,用于存储 fp6 浮点数对。

typedef __nv_fp8x4_storage_t __nv_fp6x4_storage_t

32 位 unsigned integer 类型抽象,用于存储 fp6 浮点数四元组。