私がダウンして、カーネルのうち、パフォーマンスの最後のビットを圧迫することになっているとき、私は通常ビット演算子(&
と|
)で論理演算子(&&
と||
)を交換しても少し速くカーネルを作ることを見つけます。これは、CUDA Visual Profilerのカーネル時間の要約を見ることで確認できました。CUDA:なぜビット演算子が論理演算子より速いのですか?
なぜ、ビット演算子は、CUDAの論理演算子よりも速くですか?私は彼らがではないことを認めなければならない。が速いが、多くは時間がかかる。私はこの魔力がどんなスピードアップをもたらすのだろうかと思います。
免責事項:論理演算子の短絡およびビット単位の演算子は認識していません。私は、これらの演算子が間違ったコードの結果として誤用される可能性があることを十分に認識しています。結果として得られるロジックが同じままである場合に限り、この置換えを注意して使用します。スピードアップとスピードアップが私にとって重要です:-)
最適化のヒントありがとうございました! –
ロジャー:喜んで助けてください!私はこれを発見したときに驚いた:-) –