【发布时间】:2021-07-30 17:01:17
【问题描述】:
在here 中讨论了 CUDA 对浮点舍入模式的处理。虽然诸如__fadd_rn 之类的各种内在函数可用于在程序的正常流程中执行舍入操作(在此处添加舍入到最近),但似乎并未指定诸如atomicAdd 之类的原子的舍入模式,并且没有讨论设置此舍入模式的方法。
是否可以设置CUDA atomics的舍入模式?
【问题讨论】:
标签: floating-point cuda atomic
在here 中讨论了 CUDA 对浮点舍入模式的处理。虽然诸如__fadd_rn 之类的各种内在函数可用于在程序的正常流程中执行舍入操作(在此处添加舍入到最近),但似乎并未指定诸如atomicAdd 之类的原子的舍入模式,并且没有讨论设置此舍入模式的方法。
是否可以设置CUDA atomics的舍入模式?
【问题讨论】:
标签: floating-point cuda atomic
你不能。
引用PTX指令集documentation:
浮点运算
.add运算舍入到最接近的偶数。atom.add.f32在全局内存刷新上的当前实现 次正常的输入和结果为符号保持零;然而 共享内存上的 atom.add.f32 支持次正常的输入和结果 并且不会将它们刷新为零。
atom.add.f16和atom.add.f16x2操作需要.noftz限定词;它保留了次正常的输入和结果,并且不 将它们刷新为零。
另一种思考方式:当前 CUDA 硬件中可用的有限原子浮点支持是由内存控制器中的 ALU 完成的,而不是由 SM 中的浮点硬件完成的。后者实现了所有的舍入模式,前者没有。
【讨论】: