当我到挤压性能的最后一位出一个内核的,我通常会发现与位运算符(&
和|
)更换逻辑运算符(&&
和||
),使内核快一点点。通过查看CUDA Visual Profiler中的内核时间汇总可以看到这一点。CUDA:为什么按位运算符有时比逻辑运算符更快?
那么,为什么按位运算符比CUDA中的逻辑运算符要快?我必须承认,他们是并不总是更快,但他们很多次。我不知道什么魔法可以让这个加速。
声明:我知道逻辑运算符短路和按位运算符没有。我很清楚这些操作员如何被滥用导致错误的代码。我用这个替代小心只有当产生的逻辑是一样的,有一个加速,并由此获得了加速的问题给我:-)
谢谢你提供了一个很棒的优化技巧! – 2012-03-28 16:49:58
Roger:很高兴帮助!当我发现这一点时,我感到很惊讶:-) – 2012-03-29 00:04:11