CUDAでは、同じブロック内の32の隣接スレッドがワープとしてスケジュールされることを理解しています。しかし、私は頻繁にブロックごとに1つのスレッドを持つ複数のブロックを持つチュートリアルCUDAコードを見つける。このモデルでは、32ブロックから32スレッドがワープとしてスケジュールされますか?そうでない場合、このモデルはブロックごとに32スレッドに編成するほど効率的ではないと言えますか?ありがとう!32ブロックの32スレッドはワープとしてスケジュールされますか?
5
A
答えて
6
いいえ、異なるブロックからのスレッドを同じワープでスケジュールすることはできません。スレッドを1つしか持たないスレッドブロックのグリッドを作成すると、マシンから完全なパフォーマンスが得られないことは間違いありません。ブロックあたり32(または32の整数倍)スレッドを持つよりも効率が悪いです。フェルミSMは、例えば、使用可能な32のワープレーンを有する。 1つのスレッドのブロックをスケジューリングする場合、それらの32のレーンのうちの1つだけがいつでも使用可能になります。
スレッドには、単一のブロック内で定義されたスレッドID(threadIdxビルトイン変数)があります。
Cプログラミングガイドのハードウェアマルチスレッドセクションには、a formula which defines the total number of warps in a single blockと記載されています。
0
もう1点追加してください。 いつもはワープによって発生するため、ブロックあたり32スレッド(1,2 ... 8,16)未満のスレッドを割り当てても、ワープ(32スレッド)に対して計算が行われ、リソースは32スレッドでストールされますブロック。
スレッドごとに32個のブロックを割り当てる場合は、32X32スレッドのリソースを停止しています。可能ならばこれを避けてください。
関連する問題
- 1. ワープ内のスレッド数が32未満の場合はどうなりますか?
- 2. 32ビット32倍の32ビット32ビット乗算
- 3. 32ビットサーバーと32/64ビットクライアントのSubversion
- 4. mipsには32ビットのアドレスと32ビットの命令がありますか?
- 5. dup(fileno(stdin))そして32スレッドの生成 - >入出力エラー
- 6. 2 32ビットOS上の^ 32ビットまたはバイト
- 7. Azure BLOBブロックのアップロードの上限を32 MBから増やす
- 8. __builtin_ia32_shufpsを使用してベクトルを32ビットシフトさせますか?
- 9. エラー:「未知のオペコードはスキップされました:32」
- 10. int * array [32]は32の整数の配列へのポインタか、intへの32のポインタの配列ですか?それは問題ですか?
- 11. リセット後にx86 "32ビット"のソフトリセットが解除されますか?
- 12. 32ビットアクセスエンジン
- 13. IA-32 |
- 14. 実行アセンブリを32または64として実行する
- 15. 32または64ビットマシン
- 16. Delphi 32ビットアプリケーションWindows 7のWow64の32ビットインストーラで作成されたレジストリキーが見つかりません
- 17. スレッドを持つFlaskサーバーに「エラー:[Errno 32]壊れたパイプ」が表示される
- 18. Nettyスレッドがブロックされています
- 19. 32ビットアプリケーションが32ビットOSで動作していますが、64ビットマシンで動作しています
- 20. アンドロイドとWindows(32ビット)のベンチマーク
- 21. 32ビットと64ビットのセットアッププロジェクト
- 22. これは32ビットまたは64ビットのJVMですか?
- 23. 符号が11ビットから32ビットに拡張されます
- 24. 32ビットアプリケーションは何を意味していますか?
- 25. Oracle 12C R2は32ビット・クライアントをサポートしていますか?
- 26. Android bluetooth:UIスレッドから開始されたスレッドはUIスレッドをブロックします
- 27. WMIとWin32_Process - 32ビットか64ビットかを判断しますか?
- 28. 最初のスレッドが終了した後、どのスレッドがスケジュールされますか?
- 29. 32ビットIISアプリケーションを使用して64ビットサーバー上で実行される32ビット暗号化コンポーネント!
- 30. 64ビットコンパイルされたjarは32ビットJavaアプリケーションで動作しますか?