4.4. 半精度数学函数

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

函数

__device__ __half hceil(const __half h)

计算输入参数的上限值。

__device__ __half hcos(const __half a)

以舍入到最接近的偶数模式计算 half 余弦值。

__device__ __half hexp(const __half a)

以舍入到最接近的偶数模式计算 half 自然指数函数。

__device__ __half hexp10(const __half a)

以舍入到最接近的偶数模式计算 half 十进制指数函数。

__device__ __half hexp2(const __half a)

以舍入到最接近的偶数模式计算 half 二进制指数函数。

__device__ __half hfloor(const __half h)

计算小于或等于 h 的最大整数。

__device__ __half hlog(const __half a)

以舍入到最接近的偶数模式计算 half 自然对数。

__device__ __half hlog10(const __half a)

以舍入到最接近的偶数模式计算 half 十进制对数。

__device__ __half hlog2(const __half a)

以舍入到最接近的偶数模式计算 half 二进制对数。

__device__ __half hrcp(const __half a)

以舍入到最接近的偶数模式计算 half 倒数。

__device__ __half hrint(const __half h)

将输入值舍入为半精度浮点数中最接近的整数值。

__device__ __half hrsqrt(const __half a)

以舍入到最接近的偶数模式计算 half 倒数平方根。

__device__ __half hsin(const __half a)

以舍入到最接近的偶数模式计算 half 正弦值。

__device__ __half hsqrt(const __half a)

以舍入到最接近的偶数模式计算 half 平方根。

__device__ __half htanh(const __half a)

以舍入到最接近的偶数模式计算 half 双曲正切函数。

__device__ __half htanh_approx(const __half a)

计算近似的 half 双曲正切函数。

__device__ __half htrunc(const __half h)

将输入参数截断为整数部分。

4.4.1. 函数

__device__ __half hceil(const __half h)

计算输入参数的上限值。

计算不小于 h 的最小整数值。

参数

h[in] - half。仅为读取。

返回值

half

  • 不小于 h 的最小整数值。

  • hceil( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • hceil( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • hceil(NaN) 返回 NaN。

__device__ __half hcos(const __half a)

以舍入到最接近的偶数模式计算 half 余弦值。

以舍入到最接近的偶数模式计算输入 ahalf 余弦值。

参数

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

返回值

half

  • a 的余弦值。

  • hcos \( (\pm 0)\) 返回 1。

  • hcos \( (\pm \infty)\) 返回 NaN。

  • hcos(NaN) 返回 NaN。

__device__ __half hexp(const __half a)

以舍入到最接近的偶数模式计算 half 自然指数函数。

以舍入到最接近的偶数模式计算输入 \( e^{a}\)half 自然指数函数。

参数

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

返回值

half

  • a 的自然指数函数。

  • hexp \( (\pm 0)\) 返回 1。

  • hexp \( (-\infty)\) 返回 +0。

  • hexp \( (+\infty)\) 返回 \( +\infty \)

  • hexp(NaN) 返回 NaN。

__device__ __half hexp10(const __half a)

以舍入到最接近的偶数模式计算 half 十进制指数函数。

以舍入到最接近的偶数模式计算输入 \( 10^{a}\)half 十进制指数函数。

参数

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

返回值

half

  • a 的十进制指数函数。

  • hexp10 \( (\pm 0)\) 返回 1。

  • hexp10 \( (-\infty)\) 返回 +0。

  • hexp10 \( (+\infty)\) 返回 \( +\infty \)

  • hexp10(NaN) 返回 NaN。

__device__ __half hexp2(const __half a)

以舍入到最接近的偶数模式计算 half 二进制指数函数。

以舍入到最接近的偶数模式计算输入 \( 2^{a}\)half 二进制指数函数。

参数

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

返回值

half

  • a 的二进制指数函数。

  • hexp2 \( (\pm 0)\) 返回 1。

  • hexp2 \( (-\infty)\) 返回 +0。

  • hexp2 \( (+\infty)\) 返回 \( +\infty \)

  • hexp2(NaN) 返回 NaN。

__device__ __half hfloor(const __half h)

计算小于或等于 h 的最大整数。

计算小于或等于 h 的最大整数值。

参数

h[in] - half。仅为读取。

返回值

half

  • 小于或等于 h 的最大整数值。

  • hfloor( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • hfloor( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • hfloor(NaN) 返回 NaN。

__device__ __half hlog(const __half a)

以舍入到最接近的偶数模式计算 half 自然对数。

以舍入到最接近的偶数模式计算输入 \( \ln(a)\)half 自然对数。

参数

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

返回值

half

  • a 的自然对数。

  • hlog \( (\pm 0)\) 返回 \( -\infty \)

  • hlog(1) 返回 +0。

  • hlog(x), x < 0 返回 NaN。

  • hlog \( (+\infty)\) 返回 \( +\infty \)

  • hlog(NaN) 返回 NaN。

__device__ __half hlog10(const __half a)

以舍入到最接近的偶数模式计算 half 十进制对数。

以舍入到最接近的偶数模式计算输入 \( \log_{10}(a)\)half 十进制对数。

参数

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

返回值

half

  • a 的十进制对数。

  • hlog10 \( (\pm 0)\) 返回 \( -\infty \)

  • hlog10(1) 返回 +0。

  • hlog10(x), x < 0 返回 NaN。

  • hlog10 \( (+\infty)\) 返回 \( +\infty \)

  • hlog10(NaN) 返回 NaN。

__device__ __half hlog2(const __half a)

以舍入到最接近的偶数模式计算 half 二进制对数。

以舍入到最接近的偶数模式计算输入 \( \log_{2}(a)\)half 二进制对数。

参数

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

返回值

half

  • a 的二进制对数。

  • hlog2 \( (\pm 0)\) 返回 \( -\infty \)

  • hlog2(1) 返回 +0。

  • hlog2(x), x < 0 返回 NaN。

  • hlog2 \( (+\infty)\) 返回 \( +\infty \)

  • hlog2(NaN) 返回 NaN。

__device__ __half hrcp(const __half a)

以舍入到最接近的偶数模式计算 half 倒数。

以舍入到最接近的偶数模式计算输入 \( \frac{1}{a}\)half 倒数。

参数

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

返回值

half

  • a 的倒数。

  • hrcp \( (\pm 0)\) 返回 \( \pm \infty \)

  • hrcp \( (\pm \infty)\) 返回 \( \pm 0 \)

  • hrcp(NaN) 返回 NaN。

__device__ __half hrint(const __half h)

将输入值舍入为半精度浮点数中最接近的整数值。

h 舍入为最接近的整数值,采用半精度浮点格式,中间情况舍入到最接近的偶数整数值。

参数

h[in] - half。仅为读取。

返回值

half

  • h 最接近的整数。

  • hrint( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • hrint( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • hrint(NaN) 返回 NaN。

__device__ __half hrsqrt(const __half a)

以舍入到最接近的偶数模式计算 half 倒数平方根。

以舍入到最接近的偶数模式计算输入 \( \frac{1}{\sqrt{a}}\)half 倒数平方根。

参数

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

返回值

half

  • a 的倒数平方根。

  • hrsqrt \( (\pm 0)\) 返回 \( \pm \infty \)

  • hrsqrt \( (+\infty)\) 返回 +0。

  • hrsqrt \( (x), x < 0.0\) 返回 NaN。

  • hrsqrt(NaN) 返回 NaN。

__device__ __half hsin(const __half a)

以舍入到最接近的偶数模式计算 half 正弦值。

以舍入到最接近的偶数模式计算输入 ahalf 正弦值。

参数

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

返回值

half

  • a 的正弦值。

  • hsin \( (\pm 0)\) 返回 \( (\pm 0)\)

  • hsin \( (\pm \infty)\) 返回 NaN。

  • hsin(NaN) 返回 NaN。

__device__ __half hsqrt(const __half a)

以舍入到最接近的偶数模式计算 half 平方根。

以舍入到最接近的偶数模式计算输入 \( \sqrt{a} \)half 平方根。

参数

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

返回值

half

  • a 的平方根。

  • hsqrt \( (+\infty)\) 返回 \( +\infty \)

  • hsqrt \( (\pm 0)\) 返回 \( \pm 0 \)

  • hsqrt \( (x), x < 0.0\) 返回 NaN。

  • hsqrt(NaN) 返回 NaN。

__device__ __half htanh(const __half a)

以舍入到最接近的偶数模式计算 half 双曲正切函数。

以舍入到最接近的偶数模式计算 half 双曲正切函数:\( \tanh(a)\)

参数

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

返回值

half

  • a 的双曲正切函数。

  • htanh \( (\pm 0)\) 返回 \( (\pm 0)\)

  • htanh \( (\pm\infty)\) 返回 \( (\pm 1)\)

  • htanh(NaN) 返回 NaN。

__device__ __half htanh_approx(const __half a)

计算近似的 half 双曲正切函数。

计算近似的 half 双曲正切函数:\( \tanh(a)\)。此操作在计算能力为 7.5 及更高版本的设备上使用硬件加速。

参数

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

返回值

half

  • a 的近似双曲正切函数。

  • htanh_approx \( (\pm 0)\) 返回 \( (\pm 0)\)

  • htanh_approx \( (\pm\infty)\) 返回 \( (\pm 1)\)

  • htanh_approx(NaN) 返回 NaN。

__device__ __half htrunc(const __half h)

将输入参数截断为整数部分。

h 舍入为不超过 h 的幅值的最大整数值。

参数

h[in] - half。仅为读取。

返回值

half

  • 截断后的值。

  • htrunc( \( \pm 0 \) ) 返回 \( \pm 0 \)

  • htrunc( \( \pm \infty \) ) 返回 \( \pm \infty \)

  • htrunc(NaN) 返回 NaN。