15.19. __nv_fp8_e5m2

struct __nv_fp8_e5m2

__nv_fp8_e5m2 数据类型

该结构实现了用于处理fp8浮点数的数据类型,属于e5m2类型:包含1位符号位、5位指数位、1位隐式尾数位和2位显式尾数位。

该结构实现了转换构造函数和运算符。

公共函数

__nv_fp8_e5m2() = default

默认构造函数。

__host__ __device__ inline explicit __nv_fp8_e5m2(const __half f)

__half数据类型构造,对于超出范围的值依赖于__NV_SATFINITE的行为。

__host__ __device__ inline explicit __nv_fp8_e5m2(const __nv_bfloat16 f)

__nv_bfloat16数据类型构造,对于超出范围的值依赖于__NV_SATFINITE的行为。

__host__ __device__ inline explicit __nv_fp8_e5m2(const double f)

double数据类型构造,对于超出范围的值依赖于__NV_SATFINITE的行为。

__host__ __device__ inline explicit __nv_fp8_e5m2(const float f)

float数据类型构造,对于超出范围的值依赖于__NV_SATFINITE的行为。

__host__ __device__ inline explicit __nv_fp8_e5m2(const int val)

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

__host__ __device__ inline explicit __nv_fp8_e5m2(const long int val)

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

__host__ __device__ inline explicit __nv_fp8_e5m2(const long long int val)

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

__host__ __device__ inline explicit __nv_fp8_e5m2(const short int val)

short int数据类型构造。

__host__ __device__ inline explicit __nv_fp8_e5m2(const unsigned int val)

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

__host__ __device__ inline explicit __nv_fp8_e5m2(const unsigned long int val)

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

__host__ __device__ inline explicit __nv_fp8_e5m2(const unsigned long long int val)

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

__host__ __device__ inline explicit __nv_fp8_e5m2(const unsigned short int val)

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

__host__ __device__ inline explicit operator __half() const

转换为 __half 数据类型的转换运算符。

__host__ __device__ inline explicit operator __nv_bfloat16() const

转换为__nv_bfloat16数据类型的转换运算符。

__host__ __device__ inline explicit operator bool() const

转换为bool数据类型的转换运算符。

输入+0和-0转换为false。非零输入转换为true

__host__ __device__ inline explicit operator char() const

转换为实现定义的char数据类型的转换运算符。

检测char类型的有符号性并相应处理,更多细节请参阅有符号和无符号char运算符。

将输入值限制在输出范围内。NaN输入会转换为

__host__ __device__ inline explicit operator double() const

转换为double数据类型的转换运算符。

__host__ __device__ inline explicit operator float() const

转换为float数据类型的转换运算符。

__host__ __device__ inline explicit operator int() const

转换为int数据类型的转换运算符。

将过大的输入限制在输出范围内。NaN输入会转换为zero

__host__ __device__ inline explicit operator long int() const

转换为long int数据类型的转换运算符。

将过大的输入限制在输出范围内。如果输出类型为32位,NaN输入将转换为zero。如果输出类型为64位,NaN输入将转换为0x8000000000000000ULL

__host__ __device__ inline explicit operator long long int() const

转换为long long int数据类型的转换运算符。

将过大的输入限制在输出范围内。NaN输入会转换为0x8000000000000000LL

__host__ __device__ inline explicit operator short int() const

转换为short int数据类型的转换运算符。

将过大的输入限制在输出范围内。NaN输入会转换为zero

__host__ __device__ inline explicit operator signed char() const

转换为signed char数据类型的转换运算符。

将过大的输入限制在输出范围内。NaN输入会转换为zero

__host__ __device__ inline explicit operator unsigned char() const

转换为unsigned char数据类型的转换运算符。

将负数和过大的输入限制在输出范围内。NaN输入会转换为zero

__host__ __device__ inline explicit operator unsigned int() const

转换为unsigned int数据类型的转换运算符。

将负数和过大的输入限制在输出范围内。NaN输入会转换为zero

__host__ __device__ inline explicit operator unsigned long int() const

转换为 unsigned long int 数据类型的转换运算符。

将负数和过大的输入限制在输出范围内。如果输出类型为32位,NaN输入将转换为zero。如果输出类型为64位,NaN输入将转换为0x8000000000000000ULL

__host__ __device__ inline explicit operator unsigned long long int() const

转换为unsigned long long int数据类型的转换运算符。

将负数和过大的输入限制在输出范围内。NaN输入转换为0x8000000000000000ULL

__host__ __device__ inline explicit operator unsigned short int() const

转换为unsigned short int数据类型的转换运算符。

将负数和过大的输入限制在输出范围内。NaN输入会转换为zero

公共成员

__nv_fp8_storage_t __x

存储变量包含fp8浮点数据。