【发布时间】:2015-08-19 16:55:09
【问题描述】:
我正在使用 cuda 进行开发并且有一个算术问题,我可以在有或没有经线分歧的情况下实施。 有了经纱发散,它看起来像:
float v1;
float v2;
//calculate values of v1 and v2
if(v2 != 0)
v1 += v2*complicated_math();
//store v1
没有经线分歧,版本看起来像:
float v1;
float v2;
//calculate values of v1 and v2
v1 += v2*complicated_math();
//store v1
问题是,哪个版本更快?
换句话说,与一些额外的计算和添加 0 相比,扭曲禁用的成本是多少?
【问题讨论】:
-
你查过类似的问题吗? stackoverflow.com/q/16739248/156811
-
感谢您标记其他线程。但是我之前查过。这些问题有不同的核心。所以我决定问这个问题。
-
没有更多的上下文是不可能的。编译器比你(和我)聪明得多,而且没有一个可以编译、反汇编和运行的完整示例(这正是你应该做的),没有办法回答这个问题。