3

私は GPGPU の概念の初心者であり、ここ数か月間、CUDA と OPENCL の違いについてゆっくりと自分自身を教育してきました。OpenCL 仕様により、プログラマーはコンピューティング デバイスをターゲットにできる (つまり、GPU/CPU アーキテクチャに関係なく) ことがわかりましたが、CUDA C アプローチには常に互換性のある Nvidia GPU アーキテクチャをターゲットにするため、そのような抽象化はありません。それで、CUDA 環境で Nvidia の実装を使用して OPENCL カーネルを作成しても、CPU をターゲットにできますか? 私が理解している限り、AMD Stream 環境では、OpenCL 実装でこれを行うことができます。

前もって感謝します。

4

2 に答える 2

3

それがあなたが意味するのであれば、NvidiaのGPUベースのOpenCLがインストールされているシステム上のCPUをターゲットにすることができます。NvidiaのOpenCL実装はNvidiaGPUのみをサポートしますが、NVidiaと一緒にインストールできるAMDの実装はCPUもサポートします。

OpenGLと同様に、OpenCL(LinuxおよびWindows)は、ラッパーライブラリを使用して複数の実装間で委任します。

于 2010-11-14T14:32:44.480 に答える
2

NVIDIA OpenCL、ATI OpenCL、AMD OpenCL (CPU) は、同じ API である OpenCL の 3 つの異なる実装です。つまり、OpenCL でコードを記述し、仕様に準拠している限り、実行可能ファイルは、GPU や CPU など、OpenCL をサポートするすべてのプラットフォーム/ハードウェアで適切に実行されるはずです。

あなたの場合、ターゲット プラットフォームに OpenCL 準拠のドライバーがインストールされている限り、CUDA sdk を使用して NVIDIA OpenCL で開発しても、AMD Stream などの他の環境 (例: OpenCL on Power ) でアプリを実行することを妨げるべきではありません。

于 2010-11-14T12:45:26.977 に答える