Skip to content

Commit 78aba38

Browse files
authored
Change static variables to static pointers (#29)
* Modify cpu_queues, gpu_queues and active_queues to functions. * Change static vectors to static pointers to verctors. It disables call for destructors. Destructors are also call in undefined order. * Clean commented code * Format code to fit line width * Fix for code style
1 parent 578a6f6 commit 78aba38

File tree

1 file changed

+33
-15
lines changed

1 file changed

+33
-15
lines changed

backends/source/dppl_sycl_queue_interface.cpp

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,29 @@ void error_reporter (const std::string & msg)
103103
class QMgrHelper
104104
{
105105
public:
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

Comments
 (0)