4.4. 半精度数学函数

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

Functions

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

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

__device__ __half htrunc(const __half h)

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

4.4.1. 函数

__device__ __half hceil(const __half h)

计算输入参数的向上取整值。

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

Parameters

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

Returns

半精度

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

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

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

  • hceil(NaN) 返回 NaN。

__device__ __half hcos(const __half a)

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

计算输入a的半余弦值,采用四舍五入到最近偶数模式。

Parameters

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

Returns

半精度

  • a的余弦值。

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

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

  • hcos(NaN) 返回 NaN。

__device__ __half hexp(const __half a)

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

计算输入值的half自然指数函数:\( e^{a}\),采用四舍五入到最近偶数模式。

Parameters

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

Returns

半精度

  • a的自然指数函数。

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

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

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

  • hexp(NaN) 返回 NaN。

__device__ __half hexp10(const __half a)

计算half十进制指数函数,采用四舍五入到最接近的偶数模式。

计算输入值的half十进制指数函数:\( 10^{a}\),采用四舍五入到最近偶数模式。

Parameters

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

Returns

半精度

  • a上的十进制指数函数。

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

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

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

  • hexp10(NaN) 返回 NaN。

__device__ __half hexp2(const __half a)

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

计算输入值的half二进制指数函数:采用四舍五入到最近偶数模式计算\( 2^{a}\)

Parameters

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

Returns

半精度

  • a上的二进制指数函数。

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

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

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

  • hexp2(NaN) 返回 NaN。

__device__ __half hfloor(const __half h)

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

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

Parameters

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

Returns

半精度

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

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

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

  • hfloor(NaN) 返回 NaN。

__device__ __half hlog(const __half a)

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

计算输入值的half自然对数:在四舍五入到最近偶数模式下计算\( \ln(a)\)

Parameters

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

Returns

半精度

  • 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的十进制对数。

计算输入值的half十进制对数:采用四舍五入到最近偶数模式计算\( \log_{10}(a)\)

Parameters

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

Returns

半精度

  • 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二进制对数,采用四舍五入到最接近偶数的模式。

计算输入值的half二进制对数:采用四舍五入到最近偶数模式计算\( \log_{2}(a)\)

Parameters

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

Returns

半精度

  • 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的倒数。

计算输入值的half倒数:在四舍五入到最近偶数模式下求\( \frac{1}{a}\)

Parameters

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

Returns

半精度

  • a的倒数。

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

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

  • hrcp(NaN) 返回 NaN。

__device__ __half hrint(const __half h)

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

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

Parameters

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

Returns

半精度

  • 最接近 h 的整数。

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

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

  • hrint(NaN) 返回 NaN。

__device__ __half hrsqrt(const __half a)

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

计算输入值的half倒数平方根:\( \frac{1}{\sqrt{a}}\),采用四舍五入到最接近偶数的模式。

Parameters

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

Returns

半精度

  • a的倒数平方根。

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

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

  • hrsqrt \( (x), x < 0.0\) 当x小于0.0时返回NaN。

  • hrsqrt(NaN) 返回 NaN。

__device__ __half hsin(const __half a)

计算half正弦值,采用四舍五入到最近偶数模式。

计算输入a的半正弦值,采用四舍五入到最近偶数模式。

Parameters

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

Returns

半精度

  • a的正弦值。

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

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

  • hsin(NaN) 返回 NaN。

__device__ __half hsqrt(const __half a)

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

计算输入的half平方根:\( \sqrt{a} \),采用四舍五入到最近偶数模式。

Parameters

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

Returns

半精度

  • 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)\),采用四舍五入到最近偶数的模式。

Parameters

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

Returns

半精度

  • a的双曲正切函数。

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

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

  • htanh(NaN) 返回 NaN。

__device__ __half htanh_approx(const __half a)

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

计算近似的双曲正切函数:\( \tanh(a)\)。该操作在计算能力7.5及以上的设备上使用硬件加速。

Parameters

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

Returns

半精度

  • 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绝对值的最大整数值。

Parameters

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

Returns

半精度

  • 截断后的值。

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

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

  • htrunc(NaN) 返回 NaN。