GPUがどのように同期を実行するかについていくつか質問があります。 私が知っているように、ワープがバリアに遭遇したとき(OpenCLにあると仮定して)、同じグループの他のワープがまだ存在していないことを知っています。だからそれは待たなければならない。しかし、そのワープは待ち時間の間に正確に何をするのでしょうか? まだアクティブなワープですか?それとも、何らかのヌル操作をしますか?GPUの同期
私が気づいたように、カーネルで同期が取れれば、命令数が増えます。私はこの増分の原因が何であるか疑問に思います。同期は多くの小さなGPU命令に分割されていますか?アイドルワープがいくつか余分な命令を実行するためですか?
最後に、同期なしのものと比較して、同期によって追加されたコストが(ワークグループ(スレッドブロック)のワープ数によって影響を受けるとしますか? ありがとう
詳細な回答ありがとうございます。あなたが知っているいくつかの文書を共有することができればうれしいでしょう。私は私の研究を引用したいと思います。メモリバインドカーネルがメモリレイテンシを公開する理由をもっと説明できますか?私が今理解しているように、ある計算によって隠されていたと思われる同期の近くのメモリ要求(同期の前に現れる)は、データが到着するまで停止するでしょう。それが正しいか?一方、カーネルがmem-boundでない場合、同期には何が公開されますか?命令パイプライン待ち時間? (相違はないと思われますが、それはすべて、相違して何をするのでしょうか?) – Zk1001