
私は、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 に切り替えるボタンがあれば、非常に簡単に実行できます。