Skip to content

Change static variables to static pointers #29

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 33 additions & 15 deletions backends/source/dppl_sycl_queue_interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,29 @@ void error_reporter (const std::string & msg)
class QMgrHelper
{
public:
static std::vector<cl::sycl::queue> cpu_queues;
static std::vector<cl::sycl::queue> gpu_queues;
static thread_local std::vector<cl::sycl::queue> active_queues;
static std::vector<cl::sycl::queue>&
cpu_queues_ ()
{
static std::vector<cl::sycl::queue>* cpu_queues =
QMgrHelper::init_queues(info::device_type::cpu);
return *cpu_queues;
}

static std::vector<cl::sycl::queue>&
gpu_queues_ ()
{
static std::vector<cl::sycl::queue>* gpu_queues =
QMgrHelper::init_queues(info::device_type::gpu);
return *gpu_queues;
}

static std::vector<cl::sycl::queue>&
active_queues_ ()
{
thread_local static std::vector<cl::sycl::queue>* active_queues =
new std::vector<cl::sycl::queue>({default_selector()});
return *active_queues;
}

static __dppl_give DPPLSyclQueueRef
getQueue (DPPLSyclDeviceType DeviceTy, size_t DNum);
Expand All @@ -122,25 +142,23 @@ class QMgrHelper
static void
popSyclQueue ();

static cl::sycl::vector_class<cl::sycl::queue>
static cl::sycl::vector_class<cl::sycl::queue>*
init_queues (info::device_type device_ty)
{
std::vector<cl::sycl::queue> queues;
auto queues = new std::vector<cl::sycl::queue>();
for(auto d : device::get_devices(device_ty))
queues.emplace_back(d);
queues->emplace_back(d);
return queues;
}
};

// Initialize the active_queue with the default queue
thread_local std::vector<cl::sycl::queue> QMgrHelper::active_queues
= {default_selector()};

std::vector<cl::sycl::queue> QMgrHelper::cpu_queues
= QMgrHelper::init_queues(info::device_type::cpu);

std::vector<cl::sycl::queue> QMgrHelper::gpu_queues
= QMgrHelper::init_queues(info::device_type::gpu);
// make function call like access to variable
// it is for minimizing code changes during replacing static vars with functions
// it could be refactored by replacing variable with function call
// scope of this variables is only this file
#define cpu_queues cpu_queues_()
#define gpu_queues gpu_queues_()
#define active_queues active_queues_()

/*!
* Allocates a new copy of the present top of stack queue, which can be the
Expand Down