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