28 struct ALIEN_EXPORT EnvInternal
31 : m_queue(sycl::gpu_selector{})
34 auto device = m_queue.get_device();
36 m_max_num_groups = m_queue.get_device().get_info<sycl::info::device::max_compute_units>();
38 m_max_work_group_size = m_queue.get_device().get_info<sycl::info::device::max_work_group_size>();
39 m_subgroup_size = m_queue.get_device().get_info<sycl::info::device::sub_group_sizes>()[0];
40 m_max_num_subgroups_per_group = m_max_work_group_size/m_subgroup_size ;
41 m_max_num_threads = m_max_num_groups * m_max_work_group_size;
43 std::cout <<
"========== SYCL QUEUE INFO ===============" << std::endl;
44 std::cout<<
" DEVICE NAME = " << m_queue.get_device().get_info<sycl::info::device::name>() << std::endl;
45 std::cout <<
"MAX NB GROUPS = " << m_max_num_groups << std::endl;
46 std::cout <<
"MAX WORK GROUP SIZE = " << m_max_work_group_size << std::endl;
47 std::cout <<
"SUB GROUP SIZE = " << m_subgroup_size << std::endl ;
48 std::cout <<
"MAX NB SUBGROUPs PER GROUP = " << m_max_num_subgroups_per_group << std::endl;
49 std::cout <<
"MAX NB THREADS = " << m_max_num_threads << std::endl;
52 EnvInternal(sycl::device selected_device,
int device_id)
53 : m_queue(selected_device,sycl::property::queue::in_order{})
54 , m_device_id(device_id)
57 auto device = m_queue.get_device();
59 m_max_num_groups = m_queue.get_device().get_info<sycl::info::device::max_compute_units>();
61 m_max_work_group_size = m_queue.get_device().get_info<sycl::info::device::max_work_group_size>();
62 m_subgroup_size = m_queue.get_device().get_info<sycl::info::device::sub_group_sizes>()[0];
63 m_max_num_subgroups_per_group = m_max_work_group_size/m_subgroup_size ;
64 m_max_num_threads = m_max_num_groups * m_max_work_group_size;
66 std::cout <<
"========== SYCL QUEUE INFO ===============" << std::endl;
67 std::cout<<
" DEVICE NAME = " << m_queue.get_device().get_info<sycl::info::device::name>() << std::endl;
68 std::cout <<
"MAX NB GROUPS = " << m_max_num_groups << std::endl;
69 std::cout <<
"MAX WORK GROUP SIZE = " << m_max_work_group_size << std::endl;
70 std::cout <<
"SUB GROUP SIZE = " << m_subgroup_size << std::endl ;
71 std::cout <<
"MAX NB SUBGROUPs PER GROUP = " << m_max_num_subgroups_per_group << std::endl;
72 std::cout <<
"MAX NB THREADS = " << m_max_num_threads << std::endl;
81 std::size_t maxNumGroups()
83 return m_max_num_groups;
86 std::size_t maxWorkGroupSize()
88 return m_max_work_group_size;
91 std::size_t maxNumThreads()
93 return m_max_num_threads;
101 static int printPlatformInfo()
104 for (
const sycl::platform& platform :
105 sycl::platform::get_platforms()) {
108 std::cout <<
"============ Platform ============" << std::endl;
109 std::cout <<
" Name : "
110 << platform.get_info<sycl::info::platform::name>()
112 std::cout <<
" Vendor : "
113 << platform.get_info<sycl::info::platform::vendor>()
115 std::cout <<
" Version: "
116 << platform.get_info<sycl::info::platform::version>()
120 for (
const sycl::device& device : platform.get_devices()) {
123 std::cout <<
"------------- Device -------------" << std::endl;
124 std::cout <<
" Name : "
125 << device.get_info<sycl::info::device::name>()
127 std::cout <<
" Vendor : "
128 << device.get_info<sycl::info::device::vendor>()
130 std::cout <<
" Version: "
131 << device.get_info<sycl::info::device::version>()
142 std::size_t m_max_num_groups = 0 ;
143 std::size_t m_max_work_group_size = 0 ;
144 std::size_t m_subgroup_size = 0 ;
145 std::size_t m_max_num_subgroups_per_group = 0 ;
146 std::size_t m_max_num_threads = 0 ;