@@ -103,9 +103,29 @@ void error_reporter (const std::string & msg)
103103class QMgrHelper
104104{
105105public:
106- static std::vector<cl::sycl::queue> cpu_queues;
107- static std::vector<cl::sycl::queue> gpu_queues;
108- static thread_local std::vector<cl::sycl::queue> active_queues;
106+ static std::vector<cl::sycl::queue>&
107+ cpu_queues_ ()
108+ {
109+ static std::vector<cl::sycl::queue>* cpu_queues =
110+ QMgrHelper::init_queues (info::device_type::cpu);
111+ return *cpu_queues;
112+ }
113+
114+ static std::vector<cl::sycl::queue>&
115+ gpu_queues_ ()
116+ {
117+ static std::vector<cl::sycl::queue>* gpu_queues =
118+ QMgrHelper::init_queues (info::device_type::gpu);
119+ return *gpu_queues;
120+ }
121+
122+ static std::vector<cl::sycl::queue>&
123+ active_queues_ ()
124+ {
125+ thread_local static std::vector<cl::sycl::queue>* active_queues =
126+ new std::vector<cl::sycl::queue>({default_selector ()});
127+ return *active_queues;
128+ }
109129
110130 static __dppl_give DPPLSyclQueueRef
111131 getQueue (DPPLSyclDeviceType DeviceTy, size_t DNum);
@@ -122,25 +142,23 @@ class QMgrHelper
122142 static void
123143 popSyclQueue ();
124144
125- static cl::sycl::vector_class<cl::sycl::queue>
145+ static cl::sycl::vector_class<cl::sycl::queue>*
126146 init_queues (info::device_type device_ty)
127147 {
128- std::vector<cl::sycl::queue> queues ;
148+ auto queues = new std::vector<cl::sycl::queue>() ;
129149 for (auto d : device::get_devices (device_ty))
130- queues. emplace_back (d);
150+ queues-> emplace_back (d);
131151 return queues;
132152 }
133153};
134154
135- // Initialize the active_queue with the default queue
136- thread_local std::vector<cl::sycl::queue> QMgrHelper::active_queues
137- = {default_selector ()};
138-
139- std::vector<cl::sycl::queue> QMgrHelper::cpu_queues
140- = QMgrHelper::init_queues(info::device_type::cpu);
141-
142- std::vector<cl::sycl::queue> QMgrHelper::gpu_queues
143- = QMgrHelper::init_queues(info::device_type::gpu);
155+ // make function call like access to variable
156+ // it is for minimizing code changes during replacing static vars with functions
157+ // it could be refactored by replacing variable with function call
158+ // scope of this variables is only this file
159+ #define cpu_queues cpu_queues_ ()
160+ #define gpu_queues gpu_queues_ ()
161+ #define active_queues active_queues_ ()
144162
145163/* !
146164 * Allocates a new copy of the present top of stack queue, which can be the
0 commit comments