分岐の分岐は、「if」、「else」、「for」、「switch」などの分岐コードによってのみ引き起こされると常に思っていました。しかし、最近、次のような論文を読みました。
「 最初の各探索ベースのアルゴリズムでスレッドが取る発散分岐の数は、完全な探索戦略よりも少なくとも 2 倍重要であることが明確に観察できます。これは通常、グローバル メモリへの追加の非合体アクセスの結果です。したがって、 、このようなスレッドの分岐は、シリアル化する必要がある多くのメモリ アクセスにつながり、実行される命令の総数が増加します。
合体していないアクセスを使用するバージョンのワープシリアライゼーションの数は、対応するものよりも 7 倍から 16 倍重要であることがわかります。実際、結合されていないアクセスによってスレッドの分岐が発生すると、シリアル化する必要のある多くのメモリ アクセスが発生し、実行する命令が増加します。 "
著者によると、合体していないアクセスは分岐分岐を引き起こす可能性があるようです。本当?私の質問は、ブランチの分岐には正確にいくつの理由がありますか? 前もって感謝します。