@@ -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