From cdff1b90304025ad8ca02e84e4d9a6083704b84a Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Thu, 12 Sep 2013 16:13:19 -0400 Subject: Add a quick test code to detect available OpenCL platforms. Compile this with clew files from source/core/opencl/clcc. Change-Id: I9a0be046ec996a6bccdcc8555aa8119fcf9afde3 --- sc/workben/opencl/platform_detect.cxx | 71 +++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 sc/workben/opencl/platform_detect.cxx diff --git a/sc/workben/opencl/platform_detect.cxx b/sc/workben/opencl/platform_detect.cxx new file mode 100755 index 000000000000..81c19e6d06e6 --- /dev/null +++ b/sc/workben/opencl/platform_detect.cxx @@ -0,0 +1,71 @@ +#include +#include +#include +#include + +#include "clew.h" + +using namespace std; + +int main() +{ + const char* dllname = "OpenCL.dll"; // from GPU driver. +// const char* dllname = "amdocl.dll"; // from AMD SDK +// const char* dllname = "intelocl.dll"; // from Intel SDK + int status = clewInit(dllname); + if (status < 0) + { + cout << "failed to load" << endl; + return EXIT_FAILURE; + } + + cout << "OpenCL.dll loaded successfully." << endl; + + cl_uint platformCount = 0; + clGetPlatformIDs(0, NULL, &platformCount); + + cout << "number of platforms: " << platformCount << endl; + vector platformIDs(platformCount); + if (clGetPlatformIDs(platformCount, &platformIDs[0], NULL) != CL_SUCCESS) + { + cout << "failed to get platform IDs" << endl; + return EXIT_FAILURE; + } + + for (size_t i = 0, n = platformIDs.size(); i < n; ++i) + { + cout << "* platform (ID=" << platformIDs[i] << ")" << endl; + string param(100, '\0'); + if (clGetPlatformInfo(platformIDs[i], CL_PLATFORM_PROFILE, param.size(), ¶m[0], NULL) == CL_SUCCESS) + cout << " profile: " << param.c_str() << endl; + if (clGetPlatformInfo(platformIDs[i], CL_PLATFORM_VERSION, param.size(), ¶m[0], NULL) == CL_SUCCESS) + cout << " version: " << param.c_str() << endl; + if (clGetPlatformInfo(platformIDs[i], CL_PLATFORM_NAME, param.size(), ¶m[0], NULL) == CL_SUCCESS) + cout << " name: " << param.c_str() << endl; + if (clGetPlatformInfo(platformIDs[i], CL_PLATFORM_VENDOR, param.size(), ¶m[0], NULL) == CL_SUCCESS) + cout << " vendor: " << param.c_str() << endl; + if (clGetPlatformInfo(platformIDs[i], CL_PLATFORM_EXTENSIONS, param.size(), ¶m[0], NULL) == CL_SUCCESS) + cout << " extensions: " << param.c_str() << endl; + + cl_uint deviceCount = 0; + clGetDeviceIDs(platformIDs[i], CL_DEVICE_TYPE_ALL, 0, NULL, &deviceCount); + cout << " number of devices: " << deviceCount << endl; + + vector deviceIDs(deviceCount); + if (clGetDeviceIDs(platformIDs[i], CL_DEVICE_TYPE_ALL, deviceCount, &deviceIDs[0], NULL) != CL_SUCCESS) + continue; + + for (size_t j = 0; j < deviceIDs.size(); ++j) + { + cout << " * device (ID=" << deviceIDs[j] << ")" << endl; + if (clGetDeviceInfo(deviceIDs[j], CL_DEVICE_VENDOR, param.size(), ¶m[0], NULL) == CL_SUCCESS) + cout << " vendor: " << param.c_str() << endl; + if (clGetDeviceInfo(deviceIDs[j], CL_DEVICE_VERSION, param.size(), ¶m[0], NULL) == CL_SUCCESS) + cout << " version: " << param.c_str() << endl; + if (clGetDeviceInfo(deviceIDs[j], CL_DRIVER_VERSION, param.size(), ¶m[0], NULL) == CL_SUCCESS) + cout << " driver version: " << param.c_str() << endl; + } + } + + return EXIT_SUCCESS; +} -- cgit