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. 枚举
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
offp6
type of the kind specified byfp6_interpretation
parameter tohalf
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 twohalf
precision values packed in__half2_raw
structure.Converts input vector
x
offp6
type of the kind specified byfp6_interpretation
parameter to a vector of twohalf
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 offp6
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
浮点数四元组。