1

これが初心者の質問である場合は申し訳ありませんが、私はC ++を初めて使用し、openCLをいじっている理由の1つは、C ++をもっと学ぶことです。

CUDA SDK をインストールすると、openCL ヘッダー ファイルが次の場所に配置されます。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include\CL

次の 2 つのディレクトリを、Visual C++ の追加のインクルード ディレクトリに追加しました。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include\CL

しかし、このチュートリアルのように、cl 名前空間で何かを参照しようとすると、cl が定義されていないため機能しません。

ここに画像の説明を入力

4

2 に答える 2

1

この問題はすでに解決されているので、情報を追加するためにここに書いているだけです。

Nvidia CUDA SDK を使用する代わりに、Intel または AMD SDK を使用できます (私は Intel を好みます)。どちらも cl.hpp を自動的にインクルードし、OpenCL 1.2 もサポートします (Nvidia SDK は OpenCL 1.1 のみをサポートします)。カーネルが Nvidia デバイスで動作することを確認するには、#define CL_USE_DEPRECATED_OPENCL_1_1_APIS を追加する必要がある場合があります。

SDK は、カーネルをコンパイルして実行するデバイス ドライバーとは関係ありません。これは、ベンダーのビデオ ドライバーによって行われます。実際、Nvidia ビデオ ドライバー、AMD Radeon ドライバー (AMD ビデオ カードがなくても)、および Intel OpenCL ドライバーをインストールできます。次に、Intel OpenCL SDK などを使用してホスト コードをコンパイルし、Nvidia GPU および Intel/AMD CPU でカーネルを実行できます。

于 2013-05-30T07:53:56.407 に答える
1

問題は、nVidiaの OpenCL フレームワーク ( CUDAにバンドルされている) に C++ ラッパー ライブラリが付属していないことです。しかし幸いなことに、これは内部で既存の OpenCL C API を使用する単一のヘッダーのみのライブラリです。したがって、 Khronosから公式をダウンロードして、ソース ファイルにインクルードするだけです (アクセス可能なインクルード ディレクトリに配置した後、 cl.hppnVidia独自の OpenCL ヘッダーと一緒に使用するのが最適です)。実際、一度インクルードして使用すると、他のヘッダーをインクルードする必要はありません。cl.hpp

ただし、この C++ ラッパーはOpenCL 1.1 でしか機能しないことに注意してください。

于 2013-06-07T13:08:57.723 に答える