私はEC2インスタンスを持っています。clGetDeviceIDs(-32)。 Nvidia GRID GPU(Kepler GK104)を使用したec2インスタンスのOpenCLエラー
g2.2xlarge Instance.
Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
NVIDIA GRID GPU (Kepler GK104) with
Ubuntu 14.04 - 64 bit.
この次の後: https://stackoverflow.com/a/41103241/1900929を、私はhttps://developer.nvidia.com/cuda-downloadsからCUDAツールキット8.0をインストールし、それは仕様があるのです。私も"clinfo"をインストールしました。
は、それから私は、OpenCLの状態をチェックするためにclinfo
を走った - ITは、次の出力で働いていた:
clinfo: /usr/local/cuda-8.0/targets/x86_64-linux/lib/libOpenCL.so.1: no version information available (required by clinfo)
Platform Version: OpenCL 1.2 CUDA 8.0.46
Platform Name: NVIDIA CUDA
Platform Vendor: NVIDIA Corporation
Number of devices: 1
Device Type: CL_DEVICE_TYPE_GPU
Name: GRID K520
Vendor: NVIDIA Corporation
Device OpenCL C version: OpenCL C 1.2
Driver version: 367.57
Profile: FULL_PROFILE
Version: OpenCL 1.2 CUDA
//with other info too which I can paste if required.
この時点で私はそれにもかかわらずOpenCLのが働いているので、私のプログラムも動作しますので、。だから、私はOpenCL(C++ラッパー)を使用して私のプログラムを移動しました。しかし、それは私に次のエラーを与えた: - AN INVALIDプラットフォームが、それはGPUの問題だ場合、今私は知らない
を与えられている場合
clGetDeviceIDs(-32)
このエラーはCL_INVALID_PLATFORM
を参照します - NVIDIA GRID GPU(ケプラーGK104)。あるいは、インテル(R)Xeon(R)CPUを最初のプラットフォームとして採用しようとしている場合。
これは私にエラーを与えるコードスニペットです:
try {
// Create a "platforms" vector.
std::vector<cl::Platform> platforms;
// Get all the platforms
cl::Platform::get(&platforms);
// Create an array of platforms to save the platforms in.
cl::Platform * platform = new cl::Platform[platforms.size()];
// Create a "devices" vector.
std::vector<cl::Device> devices;
// Get all the "devices" for each "platform"
for (int platformCounter = 0; platformCounter < platforms.size(); platformCounter++) {
platform[platformCounter].getDevices(CL_DEVICE_TYPE_GPU, &devices);
}
}
エラーの考えられる理由何ができますか?
確かに、それは質問に答えません。 –
プラットフォーム[platformCounter]を使用すると、デバイスを取得するための初期化されていないプラットフォームIDが与えられているため、CL_INVALID_PLATFORMエラーが発生します。 –
プラットフォーム[1] .getDevices(CL_DEVICE_TYPE_GPU、&devices)を使用する必要があります。 ? –