0

pthreadを作成し、各pthread内にopencl環境を作成して、同じカーネルを呼び出すことはできますか?私がやろうとしているのは、同じデバイス上でopenclカーネルを並行して起動することです。これは可能ですか?

回答ありがとうございます。

4

2 に答える 2

6

一見、この縫い目は不要です。

clEnqueueNDRange()API呼び出しを使用してOpenCLカーネルを起動すると、必要な数のカーネルを起動できます。同じデバイス上の独自のスレッドとしてそれぞれ。OpenCLモデルは、1つのコンテキスト/コマンドキューがGPU上で100〜1000の軽量カーネルスレッドを起動できるというものです。

于 2012-07-17T03:07:08.263 に答える
1

ティムが指摘したように、OpenCLが非常に多くのスレッド/カーネルをサポートしているのに、なぜopenclを使用してpthreadの内部に入りたいのでしょうか。GPU上の他のスレッドは、pthreadと比較して非常に軽量です。Pthreadはコストがかかり、コンテキストスイッチングのオーバーヘッドが多く、実際にパフォーマンスが大幅に低下する可能性があります。

ただし、同じコマンドキューで多くのカーネルを起動すると、カーネルが順番に実行されます。カーネルごとに異なるコマンドキューが必要です。カーネルを並列に起動するために、単一のコンテキストが問題になることはないと思います...

于 2012-07-17T05:01:13.253 に答える