Skip to content

Commit fa4f29a

Browse files
diptorupdDiptorup Deb
authored andcommitted
Change how the queue manager creates the context.
1 parent 425f4b9 commit fa4f29a

File tree

2 files changed

+30
-14
lines changed

2 files changed

+30
-14
lines changed

backends/source/dppl_sycl_queue_manager.cpp

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,29 @@ class QMgrHelper
5656

5757
static QVec* init_queues (backend BE, info::device_type DTy) {
5858
QVec *queues = new QVec();
59-
60-
for (auto &p : platform::get_platforms()) {
61-
auto Devices = p.get_devices();
62-
auto Ctx = context(Devices);
59+
auto Platforms = platform::get_platforms();
60+
for (auto &p : Platforms) {
6361
if (p.is_host()) continue;
64-
for(auto &d : Devices) {
62+
auto be = p.get_backend();
63+
auto Devices = p.get_devices();
64+
65+
if (Devices.size() == 1) {
66+
auto d = Devices[0];
6567
auto devty = d.get_info<info::device::device_type>();
66-
auto be = p.get_backend();
68+
auto Ctx = context(d);
6769
if(devty == DTy && be == BE) {
68-
queues->emplace_back(Ctx, d);
70+
queues->emplace_back(Ctx, d);
71+
break;
72+
}
73+
}
74+
else {
75+
auto Ctx = context(Devices);
76+
for(auto &d : Devices) {
77+
auto devty = d.get_info<info::device::device_type>();
78+
if(devty == DTy && be == BE) {
79+
queues->emplace_back(Ctx, d);
80+
break;
81+
}
6982
}
7083
}
7184
}
@@ -157,35 +170,38 @@ QMgrHelper::getQueue (enum DPPLSyclBEType BETy,
157170
{
158171
case DPPLSyclBEType::DPPL_OPENCL | DPPLSyclDeviceType::DPPL_CPU:
159172
{
160-
if (DNum >= get_opencl_cpu_queues().size()) {
173+
auto cpuQs = get_opencl_cpu_queues();
174+
if (DNum >= cpuQs.size()) {
161175
// \todo handle error
162176
std::cerr << "OpenCL CPU device " << DNum
163177
<< " not found on system.\n";
164178
return nullptr;
165179
}
166-
QRef = new queue(get_opencl_cpu_queues()[DNum]);
180+
QRef = new queue(cpuQs[DNum]);
167181
break;
168182
}
169183
case DPPLSyclBEType::DPPL_OPENCL | DPPLSyclDeviceType::DPPL_GPU:
170184
{
171-
if (DNum >= get_opencl_gpu_queues().size()) {
185+
auto gpuQs = get_opencl_gpu_queues();
186+
if (DNum >= gpuQs.size()) {
172187
// \todo handle error
173188
std::cerr << "OpenCL GPU device " << DNum
174189
<< " not found on system.\n";
175190
return nullptr;
176191
}
177-
QRef = new queue(get_opencl_gpu_queues()[DNum]);
192+
QRef = new queue(gpuQs[DNum]);
178193
break;
179194
}
180195
case DPPLSyclBEType::DPPL_LEVEL_ZERO | DPPLSyclDeviceType::DPPL_GPU:
181196
{
182-
if (DNum >= get_level0_gpu_queues().size()) {
197+
auto l0GpuQs = get_level0_gpu_queues();
198+
if (DNum >= l0GpuQs.size()) {
183199
// \todo handle error
184200
std::cerr << "Level-0 GPU device " << DNum
185201
<< " not found on system.\n";
186202
return nullptr;
187203
}
188-
QRef = new queue(get_level0_gpu_queues()[DNum]);
204+
QRef = new queue(l0GpuQs[DNum]);
189205
break;
190206
}
191207
default:

scripts/build_for_develop.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,4 @@ export CXX=dpcpp
4848
export CFLAGS=-fPIC
4949
python setup.py clean --all
5050
python setup.py build develop
51-
python -m unittest dpctl.tests
51+
python -m unittest -v dpctl.tests

0 commit comments

Comments
 (0)