CUDAで定義されているのはかなりわかりました。しかし、多分私は間違っています。 OpenCLに関してのワープとは何ですか?OpenCLのコンテキストにおけるワープとは何ですか?
これは作業グループと同じではありませんか? 関連するフィードバックは高く評価されます。ありがとう!
CUDAで定義されているのはかなりわかりました。しかし、多分私は間違っています。 OpenCLに関してのワープとは何ですか?OpenCLのコンテキストにおけるワープとは何ですか?
これは作業グループと同じではありませんか? 関連するフィードバックは高く評価されます。ありがとう!
OpenCL標準では定義されていません。ワープは、ハードウェアによって実行されるスレッドです(CUDAスレッドは実際にはスレッドではなく、ハードウェアとソフトウェアのマッピングによっては別々のSIMD要素としてワープにマッピングされます)。ワークアイテムの集合であり、ワークグループには複数のワープが存在する可能性があります。
OpenCLサブグループはハードウェアスレッドと互換性があるように設計されており、OpenCLカーネルのワープを表現することができますが、サブグループを実装するかどうかはもちろん、OpenCLサブグループNVIDIAは標準であるため、NVIDIAがワープ用に公開できるすべての機能を公開することはできませんが、NVIDIAは自社のデバイス上で好きなことを行うことができます。
多分私はハードウェアスレッドを読むべきですか?私はオペレーティングシステムのコンテキストでソフトウェアスレッドに精通しています。 CUDAスレッド(コンテキスト:ブロックあたり複数のスレッド)は、ハードウェアスレッド、ソフトウェアスレッド、またはおそらくスレッドの独自のアイデアを指していますか? –
ワープはハードウェアスレッドです。 CUDAスレッドはハードウェアスレッドではありません。ワープは、作業項目の集合です。ワークグループは、(1)ワークアイテムの集合、または(2)ワープの集合として定義することができます。これは正しいです?そうであれば、作業項目の階層があると言うのが安全でしょうか:作業グループは作業項目の集合であるワープの集合です。これは正しいです?それとも少なくともこれはこれについて考える良い方法ですか? –
それを考えてみるとよいでしょうか?ワークグループは作業項目の集まりです。また、ワープは単にワークアイテムの集合でもあります。しかし、ワープとワークグループには異なる用途があります。これを考えるより良い方法ですか? (私は私の現在の理解/混乱をうまく伝えていることを願っています) –
OpenCLはあまり使われていませんが、その言葉は聞いたことがありません。 – nbro
nvidiaのワープは、amdの波面に似ています。たとえば、新しいamd gpuの各計算単位には64コアがありますが、256ワイドグループにすると、その256スレッドワークグループを完成させるのに4波面が必要になります。カーネルがごくわずかなメモリしか使用しない場合、amd計算ユニットに40波面を発行させることができます。計算ユニットに4波面を出すには4クロックかかる。しかし、それは完了するまでに時間がかかることがあります。 –
OpenCLで定義されている「ワープ」はありません。しかし、OpenCL 2.xでは、*サブグループ*が導入され、その*目的*はNVIDIAが「ワープ」と呼ぶものと同等です。 –