2

私はOpenCLを学んでいるところですが、カーネルを起動しようとしているところです。GPUスレッドがグリッドで管理されているのはなぜですか?

これについて詳しく説明しますが、簡単な説明があればいいのですが。GPGPUを使用する場合、常にこのようになりますか?

4

4 に答える 4

5

これは、CUDA、OpenCL、およびATIストリームで使用される一般的なアプローチです。

グリッドの背後にある考え方は、処理中のデータとデータ処理を実行するスレッドの間に、シンプルでありながら柔軟なマッピングを提供することです。GPGPU実行モデルの単純なバージョンでは、データの1D、2D、または3Dグリッドの出力要素ごとに1つのGPUスレッドが「割り当て」られます。この出力要素を処理するために、スレッドは、入力データグリッド内の対応する場所または隣接する場所から1つ(または複数)の要素を読み取ります。スレッドをグリッドに編成することにより、スレッドは、読み取る入力データ要素と出力データ要素を格納する場所を簡単に把握できます。

これは、CPUコアごとに1つのスレッドが割り当てられ、各スレッドが多くの入力要素と出力要素(たとえば、クアッドコアシステムのデータの1/4)を処理する一般的なマルチコアCPUスレッドモデルとは対照的です。

于 2009-08-31T12:08:53.223 に答える
1

簡単な答えは、GPUはピクセルの2Dグリッドである画像とテクスチャを処理するように設計されているということです。DirectXまたはOpenGLで三角形をレンダリングすると、ハードウェアはそれをピクセルのグリッドにラスター化します。

于 2009-08-28T17:30:34.963 に答える
1

丸い穴に四角いペグを入れるという古典的な例えを呼び出します。さて、この場合、GPUは非常に正方形の穴であり、GP(汎用)が示唆するほど丸みがありません。

上記の説明は、2Dテクスチャなどのアイデアを提唱しました。GPUのアーキテクチャは、すべての処理がストリームで行われ、パイプラインが各ストリームで同一であるため、処理されるデータをそのようにセグメント化する必要があります。

于 2009-09-22T05:56:17.613 に答える
0

これが優れたAPIである理由の1つは、通常、いくつかのネストされたループを持つアルゴリズムを使用していることです。1つ、2つ、または3つのループがある場合、1つ、2つ、または3つの次元のグリッドが問題にうまく対応し、各インデックスの値のスレッドを提供します。

したがって、カーネルで必要な値(インデックス値)は、APIで自然に表現されます。

于 2009-12-19T12:15:58.597 に答える