cuda性能约束:条件分支

时间:2014-03-25 04:07:48

标签: cuda

伙计们我想了解有关条件分支的cuda表现的相关信息。我有以下代码

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

现在,如果我使用以下语句而不是这样,它会删除cuda中的n / 2性能瓶颈吗?

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您所指的“n / 2性能瓶颈”可能是由于条件分支导致的扭曲分歧。

可能在您显示的任何一个公式中,编译器都会使用predicates来完全避免分支,并且可能两种情况都会编译为类似或相同的机器代码。

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

通常,从C / C ++源代码中进行有关机器行为的有效推断是非常困难的。相反,通过编译为ptx(nvcc -ptx ...)来比较这两种情况,或者更好的是使用cuobjdump -sass my_executable进行普通编译和转储机器代码。