for (int i=0; i<width; i++)
{
quantity += i*i* (i % threadIdx.x != 0);
}
トレードオフはちょうどその時々の値である、いずれかの第二の場合には(すべてのスレッド上でより多くの計算をやって対単一ワープスロットで実行して、合計が常に実行されているように見えますゼロ)
分岐操作が可能な分岐ごとに複数のワープ・スロットを取ると仮定すると、第2のものは第1のものよりも一貫して優れていると思われます。コンパイラに頼って、2)理に適ったときに、あるいは広範に適用できる基準がないときに最適化することができますか?一般に、試したりプロファイリングすることなくどちらが良いかを決めることはできません。
幅はどのくらいですか?幅がかなり大きいことがわかっている場合は、どの値を使用するか分かるので、forループを繰り返してはいけません。 'While(i
3Pi