SHOW:
|
|
- or go back to the newest paste.
| 1 | /* https://www.sharcnet.ca/help/index.php/OpenCL | |
| 2 | Compile: gcc -Wall -I/usr/include -o deviceQuery -lOpenCL deviceQuery.c | |
| 3 | */ | |
| 4 | ||
| 5 | #include <stdio.h> | |
| 6 | #include <CL/cl.h> | |
| 7 | ||
| 8 | int main(int argc, char** argv) {
| |
| 9 | char dname[500]; | |
| 10 | - | cl_device_id devices[10]; |
| 10 | + | //cl_device_id devices[10]; |
| 11 | - | cl_uint num_devices,entries; |
| 11 | + | cl_uint num_devices,entries,available; |
| 12 | cl_uint i,nplat=2; | |
| 13 | cl_ulong long_entries; | |
| 14 | int d; | |
| 15 | - | cl_platform_id platform_id = NULL; |
| 15 | + | |
| 16 | //cl_platform_id platform_id = NULL; | |
| 17 | size_t maxDevices = 2; | |
| 18 | cl_device_id* devices = (cl_device_id*)malloc(maxDevices*sizeof(cl_device_id)); | |
| 19 | - | err = clGetPlatformIDs(1, &platform_id,NULL); |
| 19 | + | cl_platform_id* platform_id = (cl_platform_id*)malloc(sizeof(cl_platform_id)); |
| 20 | size_t p_size; | |
| 21 | ||
| 22 | /* obtain list of platforms available */ | |
| 23 | err = clGetPlatformIDs(nplat, platform_id, &available); | |
| 24 | if (err != CL_SUCCESS) | |
| 25 | {
| |
| 26 | printf("Error: Failure in clGetPlatformIDs,error code=%d \n",err);
| |
| 27 | - | clGetPlatformInfo(platform_id,CL_PLATFORM_NAME,500,dname,NULL); |
| 27 | + | |
| 28 | } | |
| 29 | - | clGetPlatformInfo(platform_id,CL_PLATFORM_VERSION,500,dname,NULL); |
| 29 | + | for (i = 0; i < nplat; i++) {
|
| 30 | /* obtain information about platform */ | |
| 31 | clGetPlatformInfo(platform_id[i],CL_PLATFORM_NAME,500,dname,NULL); | |
| 32 | printf("CL_PLATFORM_NAME = %s\n", dname);
| |
| 33 | - | clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_ALL, 10, devices, &num_devices); |
| 33 | + | clGetPlatformInfo(platform_id[i],CL_PLATFORM_VERSION,500,dname,NULL); |
| 34 | printf("CL_PLATFORM_VERSION = %s\n", dname);
| |
| 35 | ||
| 36 | /* obtain list of devices available on platform */ | |
| 37 | clGetDeviceIDs(platform_id[i], CL_DEVICE_TYPE_ALL, 10, devices, &num_devices); | |
| 38 | printf("%d devices found\n", num_devices);
| |
| 39 | ||
| 40 | /* query devices for information */ | |
| 41 | for (d = 0; d < num_devices; ++d) {
| |
| 42 | clGetDeviceInfo(devices[d], CL_DEVICE_NAME, 500, dname,NULL); | |
| 43 | printf("Device #%d name = %s\n", d, dname);
| |
| 44 | clGetDeviceInfo(devices[d],CL_DRIVER_VERSION, 500, dname,NULL); | |
| 45 | printf("\tDriver version = %s\n", dname);
| |
| 46 | clGetDeviceInfo(devices[d],CL_DEVICE_GLOBAL_MEM_SIZE,sizeof(cl_ulong),&long_entries,NULL); | |
| 47 | printf("\tGlobal Memory (MB):\t%llu\n",long_entries/1024/1024);
| |
| 48 | clGetDeviceInfo(devices[d],CL_DEVICE_GLOBAL_MEM_CACHE_SIZE,sizeof(cl_ulong),&long_entries,NULL); | |
| 49 | printf("\tGlobal Memory Cache (MB):\t%llu\n",long_entries/1024/1024);
| |
| 50 | clGetDeviceInfo(devices[d],CL_DEVICE_LOCAL_MEM_SIZE,sizeof(cl_ulong),&long_entries,NULL); | |
| 51 | printf("\tLocal Memory (KB):\t%llu\n",long_entries/1024);
| |
| 52 | clGetDeviceInfo(devices[d],CL_DEVICE_MAX_CLOCK_FREQUENCY,sizeof(cl_ulong),&long_entries,NULL); | |
| 53 | printf("\tMax clock (MHz) :\t%llu\n",long_entries);
| |
| 54 | clGetDeviceInfo(devices[d],CL_DEVICE_MAX_WORK_GROUP_SIZE,sizeof(size_t),&p_size,NULL); | |
| 55 | printf("\tMax Work Group Size:\t%d\n",p_size);
| |
| 56 | - | return 0; |
| 56 | + | |
| 57 | - | } |
| 57 | + | |
| 58 | } | |
| 59 | } | |
| 60 | return 0; | |
| 61 | } | |
| 62 | ||
| 63 | $ ./ocl_query.exe | |
| 64 | CL_PLATFORM_NAME = NVIDIA CUDA | |
| 65 | CL_PLATFORM_VERSION = OpenCL 1.1 CUDA 4.2.1 | |
| 66 | 1 devices found | |
| 67 | Device #0 name = GeForce 9500 GT | |
| 68 | Driver version = 306.97 | |
| 69 | Global Memory (MB): 1024 | |
| 70 | Global Memory Cache (MB): 0 | |
| 71 | Local Memory (KB): 16 | |
| 72 | Max clock (MHz) : 1350 | |
| 73 | Max Work Group Size: 512 | |
| 74 | Number of parallel compute cores: 4 | |
| 75 | CL_PLATFORM_NAME = AMD Accelerated Parallel Processing | |
| 76 | CL_PLATFORM_VERSION = OpenCL 1.2 AMD-APP (938.2) | |
| 77 | 2 devices found | |
| 78 | Device #0 name = Cedar | |
| 79 | Driver version = CAL 1.4.1741 (VM) | |
| 80 | Global Memory (MB): 512 | |
| 81 | Global Memory Cache (MB): 0 | |
| 82 | Local Memory (KB): 32 | |
| 83 | Max clock (MHz) : 600 | |
| 84 | Max Work Group Size: 128 | |
| 85 | Number of parallel compute cores: 2 | |
| 86 | Device #1 name = Intel(R) Xeon(R) CPU E3-1225 V2 @ 3.20GHz | |
| 87 | Driver version = 2.0 (sse2,avx) | |
| 88 | Global Memory (MB): 8142 | |
| 89 | Global Memory Cache (MB): 0 | |
| 90 | Local Memory (KB): 32 | |
| 91 | Max clock (MHz) : 3192 | |
| 92 | Max Work Group Size: 1024 | |
| 93 | Number of parallel compute cores: 4 |