xref: /aosp_15_r20/external/OpenCL-CLHPP/tests/pkgconfig/pkgconfig.cpp (revision 6fee86a4f833e4f32f25770a262884407554133d)
1*6fee86a4SJeremy Kemp #include <CL/opencl.hpp>
2*6fee86a4SJeremy Kemp 
3*6fee86a4SJeremy Kemp #include <vector>       // std::vector
4*6fee86a4SJeremy Kemp #include <exception>    // std::runtime_error, std::exception
5*6fee86a4SJeremy Kemp #include <iostream>     // std::cout
6*6fee86a4SJeremy Kemp #include <cstdlib>      // EXIT_FAILURE
7*6fee86a4SJeremy Kemp 
main()8*6fee86a4SJeremy Kemp int main()
9*6fee86a4SJeremy Kemp {
10*6fee86a4SJeremy Kemp     try
11*6fee86a4SJeremy Kemp     {
12*6fee86a4SJeremy Kemp         std::vector<cl::Platform> platforms;
13*6fee86a4SJeremy Kemp         cl::Platform::get(&platforms);
14*6fee86a4SJeremy Kemp 
15*6fee86a4SJeremy Kemp         std::cout <<
16*6fee86a4SJeremy Kemp             "Found " <<
17*6fee86a4SJeremy Kemp             platforms.size() <<
18*6fee86a4SJeremy Kemp             " platform" <<
19*6fee86a4SJeremy Kemp             (platforms.size() > 1 ? "s.\n" : ".\n") <<
20*6fee86a4SJeremy Kemp             std::endl;
21*6fee86a4SJeremy Kemp 
22*6fee86a4SJeremy Kemp         for (const auto& platform : platforms)
23*6fee86a4SJeremy Kemp         {
24*6fee86a4SJeremy Kemp             std::cout << platform.getInfo<CL_PLATFORM_VENDOR>() << std::endl;
25*6fee86a4SJeremy Kemp 
26*6fee86a4SJeremy Kemp             std::vector<cl::Device> devices;
27*6fee86a4SJeremy Kemp             platform.getDevices(CL_DEVICE_TYPE_ALL, &devices);
28*6fee86a4SJeremy Kemp 
29*6fee86a4SJeremy Kemp             for (const auto& device : devices)
30*6fee86a4SJeremy Kemp                 std::cout << "\t" << device.getInfo<CL_DEVICE_NAME>() << std::endl;
31*6fee86a4SJeremy Kemp         }
32*6fee86a4SJeremy Kemp     }
33*6fee86a4SJeremy Kemp     catch (cl::Error& error) // If any OpenCL error occurs
34*6fee86a4SJeremy Kemp     {
35*6fee86a4SJeremy Kemp         if(error.err() == CL_PLATFORM_NOT_FOUND_KHR)
36*6fee86a4SJeremy Kemp         {
37*6fee86a4SJeremy Kemp             std::cout << "No OpenCL platform found." << std::endl;
38*6fee86a4SJeremy Kemp             std::exit(EXIT_SUCCESS);
39*6fee86a4SJeremy Kemp         }
40*6fee86a4SJeremy Kemp         else
41*6fee86a4SJeremy Kemp         {
42*6fee86a4SJeremy Kemp             std::cerr << error.what() << "(" << error.err() << ")" << std::endl;
43*6fee86a4SJeremy Kemp             std::exit(error.err());
44*6fee86a4SJeremy Kemp         }
45*6fee86a4SJeremy Kemp     }
46*6fee86a4SJeremy Kemp     catch (std::exception& error) // If STL/CRT error occurs
47*6fee86a4SJeremy Kemp     {
48*6fee86a4SJeremy Kemp         std::cerr << error.what() << std::endl;
49*6fee86a4SJeremy Kemp         std::exit(EXIT_FAILURE);
50*6fee86a4SJeremy Kemp     }
51*6fee86a4SJeremy Kemp }
52