GPU编程和流式多处理器(四)
- 培训职业
- 2025-05-05 03:43:56
GPU编程和流式多处理器(四)
GPU计算的核心是单精度浮点支持,GPU在此数据类型上提供高性能,支持IEEE标准操作和非标准操作。单精度浮点值与32位整数在同一寄存器文件中保存,强制转换免费。
加法、乘法和乘加指令由编译器自动处理,__fadd_rn()、__fmul_rn()可以用于抑制融合和乘法操作进入乘加指令。
在具备2.x或更高版本计算能力的设备中,除法运算符符合IEEE规定,但在1.x版本设备或2.x版本设备使用--prec-div = false编译时,除法运算符和__fdividef(x,y)具有相同的精度,但精度为2 126 <2 128,__fdividef(x,y)结果为零,而除法运算符结果正确。若x为无穷大,__fdividef(x,y)返回NaN,除法运算符返回无穷大。
特殊功能单元(SFU)实现六个常见超越函数的快速版本,如正弦、余弦、对数、指数、倒数、倒数平方根等,这些功能以较快的速度近似实现。
浮点到一半转换操作是理解浮点编码和舍入细节的有用方法,通过传播符号位、重新偏置指数和四舍五入尾数进行转换。CUDA硬件实现此操作,C例程完全复制了该操作过程。
CUDA内置数学库模仿C运行时库,但舍入模式寄存器不存在,舍入模式按指令编码,且不引发浮点异常。表13列出数学库函数及其最大误差。
转换为整数时,CUDA中的nearint()和rint()函数始终舍入到最接近偶数。round()实现小学风格的舍入,trunc()截断浮点值为零。frexpf()、logbf()、ldexpf()、scalbnf()、scalblnf()、modff()、restderf()、remquof()和贝塞尔函数jn [f]()、yn [f]()、伽玛函数lgamma函数等提供数学运算支持。
上一篇
芬兰的主要城市是哪些
多重随机标签