gpt4 book ai didi

cuda - fmad=false 提供良好的性能

转载 作者:行者123 更新时间:2023-12-02 03:08:23 37 4
gpt4 key购买 nike

摘自 Nvidia 发行说明:

 The nvcc compiler switch, --fmad (short name: -fmad), to control the contraction of    
floating-point multiplies and add/subtracts into floating-point multiply-add
operations (FMAD, FFMA, or DFMA) has been added:
--fmad=true and --fmad=false enables and disables the contraction respectively.
This switch is supported only when the --gpu-architecture option is set with
compute_20, sm_20, or higher. For other architecture classes, the contraction is
always enabled.
The --use_fast_math option implies --fmad=true, and enables the contraction.

我有两个内核 - 一个是纯粹的计算限制,需要大量乘法,而另一个是内存限制。我注意到,当我执行 -fmad=false 时,我的计算密集型内核的性能得到了持续改善(大约 ​​5%)...而当我为内存关闭它时,性能下降了大约相同的百分比绑定(bind)内核。因此,FMA 对于我的内存绑定(bind)内核来说效果更好,但我的计算绑定(bind)内核可能会通过关闭它来压缩一些性能。可能是什么原因?我的设备是 M2090,使用的是 CUDA 4.2。

完整编译选项:-arch,sm_20,-ftz=true,-prec-div=false,-prec-sqrt=false,-use_fast_math,-fmad=false (或者我只是删除 fmad=false 因为无论如何这是默认的。

最佳答案

使用 FMA 可能会稍微增加寄存器压力,因为三个源操作数必须同时可用。因此,打开/关闭 FMA 生成可能会导致指令调度和寄存器分配出现微小差异,进而导致性能出现微小差异。对于具有许多乘加习惯用法的计算密集型内核, -fmad=true 应该会产生显着的性能差异,但正如您所说,您的内核以乘法为主,因此从使用 FMA 中获益甚微,并且任何 yield 都可能是由寄存器压力/指令调度方面抵消

关于cuda - fmad=false 提供良好的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12011708/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com