FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

OpenCLのCode Exampleを試す (OpenCL device Query)

CUDA by Exampleも大体分かるようになったので、nVIDIAのコード例を一つずつ見ていこう。

CUDA by Example 汎用GPUプログラミング入門

CUDA by Example 汎用GPUプログラミング入門

このあたりに、OpenCLのコード例がまとめられている。

developer.nvidia.com

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の内蔵GPUGeForceの両方が出てこないといけないよね?何故一つしか出てこないんだろう。 あと、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の最大値に振り切れてるじゃないか。