@@ -127,6 +127,20 @@ __get_default_queue()
127127 return __q;
128128}
129129
130+ inline sycl::queue
131+ __get_gpu_queue ()
132+ {
133+ static sycl::queue __q{sycl::gpu_selector_v};
134+ return __q;
135+ }
136+
137+ inline sycl::queue
138+ __get_cpu_queue ()
139+ {
140+ static sycl::queue __q{sycl::cpu_selector_v};
141+ return __q;
142+ }
143+
130144#if _ONEDPL_FPGA_DEVICE
131145inline sycl::queue
132146__get_fpga_default_queue ()
@@ -171,11 +185,8 @@ class device_policy
171185 }
172186
173187#if _ONEDPL_PREDEFINED_POLICIES
174- explicit device_policy (__internal::__global_instance_tag __t )
175- : __qh(__t , /* factory*/ __internal::__get_default_queue) {}
176-
177- protected:
178- device_policy (__internal::__global_instance_tag __t , __internal::__queue_factory __f) : __qh(__t , __f) {}
188+ explicit device_policy (__internal::__global_instance_tag __t ,
189+ __internal::__queue_factory __f = __internal::__get_default_queue) : __qh(__t , __f) {}
179190#endif
180191
181192 private:
@@ -226,13 +237,13 @@ inline const fpga_policy<> dpcpp_fpga{__internal::__global_instance_tag{}};
226237#endif // _ONEDPL_PREDEFINED_POLICIES
227238
228239template <typename KernelName = DefaultKernelName>
229- const device_policy<KernelName> dpdefault {sycl::queue{sycl::default_selector_v }};
240+ const device_policy<KernelName> dpdefault {__internal::__global_instance_tag{ }};
230241
231242template <typename KernelName = DefaultKernelName>
232- const device_policy<KernelName> dpgpu {sycl::queue{sycl::gpu_selector_v} };
243+ const device_policy<KernelName> dpgpu {__internal::__global_instance_tag{}, __internal::__get_gpu_queue };
233244
234245template <typename KernelName = DefaultKernelName>
235- const device_policy<KernelName> dpcpu {sycl::queue{sycl::cpu_selector_v} };
246+ const device_policy<KernelName> dpcpu {__internal::__global_instance_tag{}, __internal::__get_cpu_queue };
236247
237248// make_policy functions
238249template <typename KernelName = DefaultKernelName>
0 commit comments