CUDA by Exampleも大体分かるようになったので、nVIDIAのコード例を一つずつ見ていこう。
CUDA by Example 汎用GPUプログラミング入門
- 作者: Jason Sanders,Edward Kandrot,株式会社クイープ
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/02/14
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 36回
- この商品を含むブログ (11件) を見る
このあたりに、OpenCLのコード例がまとめられている。
OpenCL Device Query This sample enumerates the properties of the OpenCL devices present in the system.
これをダウンロードしてソースコードを見てみた。 基本的に、これまでに勉強したOpenCLのコードと何ら変わりない。
// Get and log OpenCL device info cl_uint ciDeviceCount; cl_device_id *devices; shrLog("OpenCL Device Info:\n\n"); ciErrNum = clGetDeviceIDs (clSelectedPlatformID, CL_DEVICE_TYPE_ALL, 0, NULL, &ciDeviceCount); // check for 0 devices found or errors... if (ciDeviceCount == 0) { shrLog(" No devices found supporting OpenCL (return code %i)\n\n", ciErrNum); bPassed = false; sProfileString += "0"; } else if (ciErrNum != CL_SUCCESS) { shrLog(" Error %i in clGetDeviceIDs call !!!\n\n", ciErrNum); bPassed = false; } else { // Get and log the OpenCL device ID's shrLog(" %u devices found supporting OpenCL:\n\n", ciDeviceCount);
実行してみると、いろんな情報が出力されている。
OpenCL SW Info: CL_PLATFORM_NAME: NVIDIA CUDA CL_PLATFORM_VERSION: OpenCL 1.2 CUDA 7.5.18 OpenCL SDK Revision: 7027912 OpenCL Device Info: 1 devices found supporting OpenCL: --------------------------------- Device GeForce GTX 780 Ti --------------------------------- CL_DEVICE_NAME: GeForce GTX 780 Ti CL_DEVICE_VENDOR: NVIDIA Corporation
はたと気がついたのだが、これIntelの内蔵GPUとGeForceの両方が出てこないといけないよね?何故一つしか出てこないんだろう。 あと、CUDA Coresの数間違えてない?
CL_DEVICE_COMPUTE_CAPABILITY_NV: 3.5 NUMBER OF MULTIPROCESSORS: 15 MapSMtoCores SM 3.5 is undefined (please update to the latest SDK)! NUMBER OF CUDA CORES: 4294967281 CL_DEVICE_REGISTERS_PER_BLOCK_NV: 65536
殆どint32の最大値に振り切れてるじゃないか。