Skip to content

Commit cddb23e

Browse files
authored
Fix for multinode processing
1 parent d6042e4 commit cddb23e

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

plugin/sycl/device_manager.cc

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,27 @@ ::sycl::queue* DeviceManager::GetQueue(const DeviceOrd& device_spec) const {
1919
size_t queue_idx;
2020
bool not_use_default_selector = (device_spec.ordinal != kDefaultOrdinal) ||
2121
(collective::IsDistributed());
22-
DeviceRegister& device_register = GetDevicesRegister();
2322
if (not_use_default_selector) {
24-
const int device_idx =
25-
collective::IsDistributed() ? collective::GetRank() : device_spec.ordinal;
23+
DeviceRegister& device_register = GetDevicesRegister();
2624
if (device_spec.IsSyclDefault()) {
2725
auto& devices = device_register.devices;
26+
const int device_idx = collective::IsDistributed()
27+
? collective::GetRank() % devices.size()
28+
: device_spec.ordinal;
2829
CHECK_LT(device_idx, devices.size());
2930
queue_idx = device_idx;
3031
} else if (device_spec.IsSyclCPU()) {
3132
auto& cpu_devices_idxes = device_register.cpu_devices_idxes;
33+
const int device_idx = collective::IsDistributed()
34+
? collective::GetRank() % cpu_devices_idxes.size()
35+
: device_spec.ordinal;
3236
CHECK_LT(device_idx, cpu_devices_idxes.size());
3337
queue_idx = cpu_devices_idxes[device_idx];
3438
} else if (device_spec.IsSyclGPU()) {
3539
auto& gpu_devices_idxes = device_register.gpu_devices_idxes;
40+
const int device_idx = collective::IsDistributed()
41+
? collective::GetRank() % gpu_devices_idxes.size()
42+
: device_spec.ordinal;
3643
CHECK_LT(device_idx, gpu_devices_idxes.size());
3744
queue_idx = gpu_devices_idxes[device_idx];
3845
} else {

0 commit comments

Comments
 (0)