Nvidia カードを使用した CPU および GPU での OpenCL プログラミング?

Nvidia カードを使用した CPU および GPU での OpenCL プログラミング?

私は、Ubuntu 10.10 と Nvidia GTX 480 グラフィック カードを搭載した bi Xeon マシンを持っており、CPU と GPU で OpenCL を使用したいと考えています。

apt-get を使用して最新の Nvidia ドライバー (nvidia-current) をインストールし、Nvidia ページから最新の CUDA Toolkit (3.2) をダウンロードしてインストールしました。

しかし、これにより OpenCL コードを Nvidia GPU 上でのみ実行でき、CPU 上では実行できなくなります。

その後、インターネットで、ATI SDK は CPU 上で OpenCL コードを実行できるという記事をいくつか読みました。

最新バージョンの ATI ドライバーをインストールしてから、SDK をコンパイルしようとしました。

その後、CPU 上でコードを実行できるようになりましたが、GPU 上では実行できなくなりました。

Nvidia GPU と Xeon CPU の両方で OpenCL コードを実行する方法はありますか?

答え1

Nvidia CUDA と ATI Stream OpenCL 実装はどちらも Khronos ICD 拡張機能をサポートしているため、clGetPlatformIDs を呼び出すと 2 つの異なるプラットフォームが取得され、これらのプラットフォーム上の CPU/GPU デバイスを照会できます。もちろん、ATI プラットフォームは CPU デバイスを返し、Nvidia プラットフォームは GPU デバイスを返します。

次に、これらのデバイス上に CommandQueues を作成し、カーネルを起動します。もちろん、これは GPU と CPU 間でタスクを共有するのは簡単ではないことを意味しますが、少なくともアプリ内に CPU から GPU に切り替えるボタンがあれば、非常に簡単に実行できます。

関連情報