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 相等比较。

执行输入 abhalf 相等比较。 NaN 输入生成 false 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

  • 输入 ab 相等比较的布尔结果。

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

执行 half 无序相等比较。

执行输入 abhalf 相等比较。 NaN 输入生成 true 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

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

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

执行 half 大于等于比较。

执行输入 abhalf 大于等于比较。 NaN 输入生成 false 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

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

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

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

执行输入 abhalf 大于等于比较。 NaN 输入生成 true 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

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

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

执行 half 大于比较。

执行输入 abhalf 大于比较。 NaN 输入生成 false 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

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

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

执行 half 无序大于比较。

执行输入 abhalf 大于比较。 NaN 输入生成 true 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

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

__host__ __device__ int __hisinf(const __half a)

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

检查输入的 halfa 是否为无穷大。

参数

a[in] - half。仅被读取。

返回值

int

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

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

  • 否则为 0。

__host__ __device__ bool __hisnan(const __half a)

确定 half 参数是否为 NaN。

确定 halfa 是否为 NaN。

参数

a[in] - half。仅被读取。

返回值

bool

  • 如果参数为 NaN,则为 true。

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

执行 half 小于等于比较。

执行输入 abhalf 小于等于比较。 NaN 输入生成 false 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

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

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

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

执行输入 abhalf 小于等于比较。 NaN 输入生成 true 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

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

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

执行 half 小于比较。

执行输入 abhalf 小于比较。 NaN 输入生成 false 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

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

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

执行 half 无序小于比较。

执行输入 abhalf 小于比较。 NaN 输入生成 true 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

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

__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 不相等比较。

执行输入 abhalf 不相等比较。 NaN 输入生成 false 结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

  • 输入 ab 不相等比较的布尔结果。

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

执行 half 无序不相等比较。

执行输入 abhalf 不等于比较。NaN 输入产生真值结果。

参数
  • a[in] - half。仅被读取。

  • b[in] - half。仅被读取。

返回值

bool

  • 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)