4.3. 半精度比较函数
要使用这些函数,请在程序中包含头文件 cuda_fp16.h
。
函数
- __host__ __device__ bool __heq(const __half a, const __half b)
-
执行
half
相等比较。 - __host__ __device__ bool __hequ(const __half a, const __half b)
-
执行
half
无序相等比较。 - __host__ __device__ bool __hge(const __half a, const __half b)
-
执行
half
大于等于比较。 - __host__ __device__ bool __hgeu(const __half a, const __half b)
-
执行
half
无序大于等于比较。 - __host__ __device__ bool __hgt(const __half a, const __half b)
-
执行
half
大于比较。 - __host__ __device__ bool __hgtu(const __half a, const __half b)
-
执行
half
无序大于比较。 - __host__ __device__ int __hisinf(const __half a)
-
检查输入的
half
数是否为无穷大。 - __host__ __device__ bool __hisnan(const __half a)
-
确定
half
参数是否为 NaN。 - __host__ __device__ bool __hle(const __half a, const __half b)
-
执行
half
小于等于比较。 - __host__ __device__ bool __hleu(const __half a, const __half b)
-
执行
half
无序小于等于比较。 - __host__ __device__ bool __hlt(const __half a, const __half b)
-
执行
half
小于比较。 - __host__ __device__ bool __hltu(const __half a, const __half b)
-
执行
half
无序小于比较。 - __host__ __device__ __half __hmax(const __half a, const __half b)
-
计算两个输入值的
half
最大值。 - __host__ __device__ __half __hmax_nan(const __half a, const __half b)
-
计算两个输入值的
half
最大值,NaN 值会直接传递。 - __host__ __device__ __half __hmin(const __half a, const __half b)
-
计算两个输入值的
half
最小值。 - __host__ __device__ __half __hmin_nan(const __half a, const __half b)
-
计算两个输入值的
half
最小值,NaN 值会直接传递。 - __host__ __device__ bool __hne(const __half a, const __half b)
-
执行
half
不相等比较。 - __host__ __device__ bool __hneu(const __half a, const __half b)
-
执行
half
无序不相等比较。 - __host__ __device__ bool operator!=(const __half &lh, const __half &rh)
-
执行
half
无序比较不相等操作。 - __host__ __device__ bool operator<(const __half &lh, const __half &rh)
-
执行
half
有序小于比较操作。 - __host__ __device__ bool operator<=(const __half &lh, const __half &rh)
-
执行
half
有序小于等于比较操作。 - __host__ __device__ bool operator==(const __half &lh, const __half &rh)
-
执行
half
有序比较相等操作。 - __host__ __device__ bool operator>(const __half &lh, const __half &rh)
-
执行
half
有序大于比较操作。 - __host__ __device__ bool operator>=(const __half &lh, const __half &rh)
-
执行
half
有序大于等于比较操作。
4.3.1. 函数
-
__host__ __device__ bool __heq(const __half a, const __half b)
-
执行
half
相等比较。执行输入
a
和b
的half
相等比较。 NaN 输入生成 false 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
相等比较的布尔结果。
-
__host__ __device__ bool __hequ(const __half a, const __half b)
-
执行
half
无序相等比较。执行输入
a
和b
的half
相等比较。 NaN 输入生成 true 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
无序相等比较的布尔结果。
-
__host__ __device__ bool __hge(const __half a, const __half b)
-
执行
half
大于等于比较。执行输入
a
和b
的half
大于等于比较。 NaN 输入生成 false 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
大于等于比较的布尔结果。
-
__host__ __device__ bool __hgeu(const __half a, const __half b)
-
执行
half
无序大于等于比较。执行输入
a
和b
的half
大于等于比较。 NaN 输入生成 true 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
无序大于等于比较的布尔结果。
-
__host__ __device__ bool __hgt(const __half a, const __half b)
-
执行
half
大于比较。执行输入
a
和b
的half
大于比较。 NaN 输入生成 false 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
大于比较的布尔结果。
-
__host__ __device__ bool __hgtu(const __half a, const __half b)
-
执行
half
无序大于比较。执行输入
a
和b
的half
大于比较。 NaN 输入生成 true 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
无序大于比较的布尔结果。
-
__host__ __device__ int __hisinf(const __half a)
-
检查输入的
half
数是否为无穷大。检查输入的
half
数a
是否为无穷大。- 参数
-
a – [in] - half。仅被读取。
- 返回值
-
int
如果
a
等于负无穷大,则为 -1,如果
a
等于正无穷大,则为 1,否则为 0。
-
__host__ __device__ bool __hisnan(const __half a)
-
确定
half
参数是否为 NaN。确定
half
值a
是否为 NaN。- 参数
-
a – [in] - half。仅被读取。
- 返回值
-
bool
如果参数为 NaN,则为 true。
-
__host__ __device__ bool __hle(const __half a, const __half b)
-
执行
half
小于等于比较。执行输入
a
和b
的half
小于等于比较。 NaN 输入生成 false 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
小于等于比较的布尔结果。
-
__host__ __device__ bool __hleu(const __half a, const __half b)
-
执行
half
无序小于等于比较。执行输入
a
和b
的half
小于等于比较。 NaN 输入生成 true 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
无序小于等于比较的布尔结果。
-
__host__ __device__ bool __hlt(const __half a, const __half b)
-
执行
half
小于比较。执行输入
a
和b
的half
小于比较。 NaN 输入生成 false 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
小于比较的布尔结果。
-
__host__ __device__ bool __hltu(const __half a, const __half b)
-
执行
half
无序小于比较。执行输入
a
和b
的half
小于比较。 NaN 输入生成 true 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
无序小于比较的布尔结果。
-
__host__ __device__ __half __hmax(const __half a, const __half b)
-
计算两个输入值的
half
最大值。计算
half
最大值(a
,b
),定义为 (a
>b
) ?a
:b
。如果任一输入为 NaN,则返回另一个输入。
如果两个输入均为 NaN,则返回规范 NaN。
如果两个输入的值均为 0.0,则 +0.0 > -0.0
- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
half
-
__host__ __device__ __half __hmax_nan(const __half a, const __half b)
-
计算两个输入值的
half
最大值,NaN 值会直接传递。计算
half
最大值(a
,b
),定义为 (a
>b
) ?a
:b
。如果任一输入为 NaN,则返回规范 NaN。
如果两个输入的值均为 0.0,则 +0.0 > -0.0
- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
half
-
__host__ __device__ __half __hmin(const __half a, const __half b)
-
计算两个输入值的
half
最小值。计算
half
最小值(a
,b
),定义为 (a
<b
) ?a
:b
。如果任一输入为 NaN,则返回另一个输入。
如果两个输入均为 NaN,则返回规范 NaN。
如果两个输入的值均为 0.0,则 +0.0 > -0.0
- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
half
-
__host__ __device__ __half __hmin_nan(const __half a, const __half b)
-
计算两个输入值的
half
最小值,NaN 值会直接传递。计算
half
最小值(a
,b
),定义为 (a
<b
) ?a
:b
。如果任一输入为 NaN,则返回规范 NaN。
如果两个输入的值均为 0.0,则 +0.0 > -0.0
- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
half
-
__host__ __device__ bool __hne(const __half a, const __half b)
-
执行
half
不相等比较。执行输入
a
和b
的half
不相等比较。 NaN 输入生成 false 结果。- 参数
-
a – [in] - half。仅被读取。
b – [in] - half。仅被读取。
- 返回值
-
bool
输入
a
和b
不相等比较的布尔结果。