Cuda性能约束:条件分支



伙计们,我想知道一些与条件分支有关的cuda性能。我有以下代码

if(i==5)
i=10;
else
i=5;

现在,如果我使用以下语句,它会消除cuda的n/2性能瓶颈吗?

i=(i==5)?10:5;

提前感谢您的帮助

假设你所指的"n/2性能瓶颈"是由于条件分支导致的翘曲发散。

很可能在您所展示的任何一个公式中,编译器都将使用谓词来避免分支,并且可能这两种情况都将编译成类似或相同的机器码。

编译器将积极使用谓词执行,以避免分支和偏离。

一般来说,从C/c++源代码中对机器行为做出有效的推断是相当困难的。相反,通过编译到ptx (nvcc -ptx ...)来比较这两种情况,或者更好的方法是进行普通编译并使用cuobjdump -sass my_executable转储机器码。

最新更新