1

さまざまなシステムで実行する OpenCL プログラムを作成します。したがって、次の場合に何が起こるか知りたいです。

  • そのマシンには OpenCL 対応の GPU はありませんでしたが、OpenCL 対応の CPU がありました。

  • そのマシンには、OpenCL 対応の GPU と CPU がありませんでした。

プログラムが正しく動作するかどうかだけ知りたいのですが、パフォーマンスが低下することは完全に理解しています。

前もって感謝します :]

4

2 に答える 2

1

そのマシンには OpenCL 対応の GPU はありませんでしたが、OpenCL 対応の CPU がありました。

OpenCL がすべてのタイプのデバイス (CL_DEVICE_ALL) をアドレス指定する場合、完全に機能します。

そのマシンには、OpenCL 対応の GPU と CPU がありませんでした。

  • 利用可能なデバイスがない場合:

OpenCL はロードされますが、カーネルを実行するものは何もありません。したがって、単純にソフトウェア コードを実行します。

  • OpenCL ドライバーがない場合:

ロードされなくても機能しません(実行時にDLLがありません)。動的ロードOpenCL(CLEWなど)を使用しない限り。

動的ロードを使用する場合でも、ライブラリのロードでエラーが発生します。この状況を処理し、フェイルセーフ CPU コードを配置する必要があります。

私は通常、プロトタイプをカーネルとして (多かれ少なかれ) 関数を作成し、代わりにこのメソッドを直接呼び出します。


とにかく、それを達成することは可能です。OpenCL をシャドウで使用するライブラリが多数ありますが、問題はありません。それらはあらゆる種類のマシン (GPU なし、OpenCL なし、複数のデバイスおよび CPU デバイス) で実行されます。今のところ問題ありません。OpenCL 呼び出しが常にエラーを返さないと仮定しないでください。

于 2013-11-04T22:45:05.517 に答える