@@ -54,69 +54,43 @@ class QMgrHelper
5454public:
5555 using QVec = vector_class<queue>;
5656
57- static QVec* init_opencl_cpu_queues ( ) {
57+ static QVec* init_queues (backend BE, info::device_type DTy ) {
5858 QVec *queues = new QVec ();
59-
59+
6060 for (auto &p : platform::get_platforms ()) {
6161 auto Devices = p.get_devices ();
6262 auto Ctx = context (Devices);
6363 if (p.is_host ()) continue ;
6464 for (auto &d : Devices) {
6565 auto devty = d.get_info <info::device::device_type>();
6666 auto be = p.get_backend ();
67- if (devty == info::device_type::cpu && be == backend::opencl ) {
67+ if (devty == DTy && be == BE ) {
6868 queues->emplace_back (Ctx, d);
6969 }
7070 }
7171 }
7272 return queues;
7373 }
74-
74+
7575 static QVec& get_opencl_cpu_queues ()
7676 {
77- static QVec* queues = init_opencl_cpu_queues ();
77+ static QVec* queues = init_queues (backend::opencl,
78+ info::device_type::cpu);
7879 return *queues;
7980 }
8081
81- static QVec get_opencl_gpu_queues ()
82+ static QVec& get_opencl_gpu_queues ()
8283 {
83- QVec queues;
84-
85- for (auto &p : platform::get_platforms ()) {
86- auto Devices = p.get_devices ();
87- auto Ctx = context (Devices);
88- if (p.is_host ()) continue ;
89- for (auto &d : Devices) {
90- auto devty = d.get_info <info::device::device_type>();
91- auto be = p.get_backend ();
92- if (devty == info::device_type::gpu && be == backend::opencl) {
93- queues.emplace_back (Ctx, d);
94- }
95- }
96- }
97-
98- return queues;
84+ static QVec* queues = init_queues (backend::opencl,
85+ info::device_type::gpu);
86+ return *queues;
9987 }
10088
10189 static QVec get_level0_gpu_queues ()
10290 {
103- QVec queues;
104-
105- for (auto &p : platform::get_platforms ()) {
106- auto Devices = p.get_devices ();
107- auto Ctx = context (Devices);
108- if (p.is_host ()) continue ;
109- for (auto &d : Devices) {
110- auto devty = d.get_info <info::device::device_type>();
111- auto be = p.get_backend ();
112- if (devty == info::device_type::gpu &&
113- be == backend::level_zero) {
114- queues.emplace_back (Ctx, d);
115- }
116- }
117- }
118-
119- return queues;
91+ static QVec* queues = init_queues (backend::level_zero,
92+ info::device_type::gpu);
93+ return *queues;
12094 }
12195
12296 static QVec& get_active_queues ()
0 commit comments