0

最近、AMD ハードウェアで複数の異なるカーネルを実行する必要があるいくつかの実験を行う必要がありました。しかし、コーディングを始める前にいくつか質問があるので、あなたの助けが本当に必要です.

まず、AMD ハードウェアが 1 つのデバイスでのカーネルの同時実行をサポートできるかどうかはよくわかりません。OpenCL の仕様を参照すると、コマンド キューはインオーダーおよびアウトオブオーダーとして作成できると書かれていたためです。しかし、「順不同」は「同時実行」を意味するわけではありません。これについての情報を知っている人はいますか?私のハードウェアは AMD APU A8 3870k です。このプロセッサがサポートしていない場合、他の AMD 製品はサポートしていますか?

次に、1 つのデバイスを 2 つのデバイスに分割するために使用できる拡張機能「デバイス分割」があることを知っています。これは現在、CPU でのみ機能します。しかし、OpenCL 仕様では、1 つのデバイスを 2 つに分割するためにも使用される "clcreatesubdevice" などを見ました。私の質問は、これら 2 つの手法に違いはありますか? 私の理解では、デバイス分割は CPU でのみ使用でき、clcreatesubdevice は CPU と GPU の両方で使用できます。あれは正しいですか?

返信ありがとうございます。

4

1 に答える 1

0

実際の並行カーネルは必要な機能ではなく、ドライバー開発者に多くの問題を引き起こします。私の知る限り、AMD はサブデバイス分割なしではこの機能をサポートしていません。あなたが言ったように、「順不同」は現在のものではなく、キューの順不同の実行です。

しかし、両方をフルスピードで連続して実行するのではなく、半分の速度で並行して実行することに何の意味があるのでしょうか? そのような方法で行うと、全体的なパフォーマンスが低下する可能性があります。

いずれかの GPU でリソースが不足した場合は、より多くの GPU デバイス (または GPU + CPU) を使用することをお勧めします。最適化も良いオプションです。ただし、分割は実際のシナリオでは決して適切なオプションではなく、学術的な目的またはテストのみに使用されます。

于 2013-05-15T16:16:12.710 に答える