4.3. 半精度比较函数

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

Functions

__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半精度浮点数的等值比较。

对输入ab执行half类型的等值比较。NaN输入会产生false结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 进行相等比较的布尔结果。

__host__ __device__ bool __hequ(const __half a, const __half b)

执行half无序的if-equal比较。

对输入 ab 执行 half 类型的等值比较。NaN输入会产生true结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 的无序相等比较的布尔结果。

__host__ __device__ bool __hge(const __half a, const __half b)

执行half大于等于比较。

对输入ab执行half类型的"大于等于"比较。NaN输入会产生false结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 的大于等于比较的布尔结果。

__host__ __device__ bool __hgeu(const __half a, const __half b)

执行half无序大于等于比较。

对输入ab执行half类型的"大于等于"比较。NaN输入会产生true结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 的无序大于等于比较的布尔结果。

__host__ __device__ bool __hgt(const __half a, const __half b)

执行half大于比较。

对输入ab执行half类型的大于比较。NaN输入会产生false结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 进行大于比较的布尔结果。

__host__ __device__ bool __hgtu(const __half a, const __half b)

执行half无序大于比较。

对输入ab执行half类型的大于比较。NaN输入会产生true结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 的无序大于比较的布尔结果。

__host__ __device__ int __hisinf(const __half a)

检查输入的half数值是否为无穷大。

检查输入的half数值a是否为无穷大。

Parameters

a[输入] - 半精度。仅用于读取。

Returns

int

  • 如果 a 等于负无穷大,则返回 -1

  • 如果 a 等于正无穷大,则返回 1

  • 否则为0。

__host__ __device__ bool __hisnan(const __half a)

判断half参数是否为NaN。

判断halfa是否为NaN。

Parameters

a[输入] - 半精度。仅用于读取。

Returns

布尔值

  • 如果参数是NaN则返回true。

__host__ __device__ bool __hle(const __half a, const __half b)

执行half半精度小于等于比较。

对输入ab执行half类型的"小于等于"比较。NaN输入会产生false结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 的小于等于比较的布尔结果。

__host__ __device__ bool __hleu(const __half a, const __half b)

执行half无序小于等于比较。

对输入ab执行half类型的"小于等于"比较。NaN输入会产生true结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab进行无序小于等于比较的布尔结果。

__host__ __device__ bool __hlt(const __half a, const __half b)

执行half半精度小于比较。

对输入ab执行half类型的小于比较。NaN输入会产生false结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 小于比较的布尔结果。

__host__ __device__ bool __hltu(const __half a, const __half b)

执行half无序小于比较。

对输入ab执行half类型的小于比较。NaN输入会产生true结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 的无序小于比较的布尔结果。

__host__ __device__ __half __hmax(const __half a, const __half b)

计算两个输入值的half最大值。

计算 half max(a, b) 定义为 (a > b) ? a : b

  • 如果任一输入为NaN,则返回另一个输入。

  • 如果两个输入都是NaN,则返回规范NaN。

  • 如果两个输入值均为0.0,则+0.0 > -0.0

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

半精度浮点数

__host__ __device__ __half __hmax_nan(const __half a, const __half b)

计算两个输入值的half最大值,NaN值直接透传。

计算 half max(a, b) 定义为 (a > b) ? a : b

  • 如果任一输入为NaN,则返回标准NaN。

  • 如果两个输入值均为0.0,则+0.0 > -0.0

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

半精度浮点数

__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

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

半精度浮点数

__host__ __device__ __half __hmin_nan(const __half a, const __half b)

计算两个输入值的half最小值,NaN值直接传递。

计算half min(a, b)定义为(a < b) ? a : b

  • 如果任一输入为NaN,则返回标准NaN。

  • 如果两个输入值均为0.0,则+0.0 > -0.0

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

半精度浮点数

__host__ __device__ bool __hne(const __half a, const __half b)

执行half不等于比较。

对输入ab执行half类型的非等值比较。NaN输入会产生false结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 的不等于比较的布尔结果。

__host__ __device__ bool __hneu(const __half a, const __half b)

执行half无序不等于比较。

对输入ab执行half类型的非等值比较。NaN输入会产生true结果。

Parameters
  • a[输入] - 半精度。仅用于读取。

  • b[输入] - 半精度。仅用于读取。

Returns

布尔值

  • ab 的无序不相等比较的布尔结果。

__host__ __device__ bool operator!=(const __half &lh, const __half &rh)

执行half无序不等于比较操作。

另请参阅

__hneu(__half, __half)

__host__ __device__ bool operator<(const __half &lh, const __half &rh)

执行half有序小于比较操作。

另请参阅

__hlt(__half, __half)

__host__ __device__ bool operator<=(const __half &lh, const __half &rh)

执行half有序小于等于比较操作。

另请参阅

__hle(__half, __half)

__host__ __device__ bool operator==(const __half &lh, const __half &rh)

执行half有序比较相等操作。

另请参阅

__heq(__half, __half)

__host__ __device__ bool operator>(const __half &lh, const __half &rh)

执行half有序大于比较操作。

另请参阅

__hgt(__half, __half)

__host__ __device__ bool operator>=(const __half &lh, const __half &rh)

执行half有序大于等于比较操作。

另请参阅

__hge(__half, __half)