1 #ifdef __APPLE__ //Mac OSX has a different name for the header file
2 #include <OpenCL/opencl.h>
3 #else
4 #include <CL/opencl.h>
5 #endif
6
7 #include <stdio.h> // printf
8 #include <stdlib.h> // malloc
9 #include <stdint.h> // UINTMAX_MAX
10
checkErr(cl_int err,const char * name)11 void checkErr(cl_int err, const char * name)
12 {
13 if (err != CL_SUCCESS)
14 {
15 printf("ERROR: %s (%i)\n", name, err);
16 exit( err );
17 }
18 }
19
main()20 int main()
21 {
22 cl_int CL_err = CL_SUCCESS;
23 cl_uint numPlatforms = 0;
24
25 CL_err = clGetPlatformIDs(0, NULL, &numPlatforms);
26 checkErr(CL_err, "clGetPlatformIDs(numPlatforms)");
27
28 if (numPlatforms == 0)
29 {
30 printf("No OpenCL platform detected.\n");
31 exit( -1 );
32 }
33 printf("Found %u platform(s)\n\n", numPlatforms);
34 fflush(NULL);
35
36 cl_platform_id* platforms = (cl_platform_id*)malloc(numPlatforms * sizeof(cl_platform_id));
37 CL_err = clGetPlatformIDs(numPlatforms, platforms, NULL);
38 checkErr(CL_err, "clGetPlatformIDs(platforms)");
39
40 for (cl_uint i = 0; i < numPlatforms; ++i)
41 {
42 size_t vendor_length;
43 CL_err = clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, 0, NULL, &vendor_length);
44 checkErr(CL_err, "clGetPlatformInfo(CL_PLATFORM_VENDOR, NULL, &vendor_length)");
45
46 char* platform_name = (char*)malloc(vendor_length * sizeof(char));
47 CL_err = clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, vendor_length, platform_name, NULL);
48 checkErr(CL_err, "clGetPlatformInfo(CL_PLATFORM_VENDOR, vendor_length, platform_name)");
49
50 printf("%s\n", platform_name);
51 fflush(NULL);
52 free(platform_name);
53 }
54
55 return 0;
56 }
57