Add Alltoallv RCCL kernel implementation (#269)

* Add alltoallv API and implementation

* Extend Rome P2P channel limit to multinode and alltoall kernels

* topo_expl: fix compilation and sync up with main

* gtest: use RCCL alltoallv API

* Code review changes
Этот коммит содержится в:
Wenkai Du
2020-09-30 16:25:36 -07:00
коммит произвёл GitHub
родитель aa985bfb7e
Коммит b871ea3c0c
22 изменённых файлов: 300 добавлений и 60 удалений
+3 -22
Просмотреть файл
@@ -35,29 +35,10 @@ namespace CorrectnessTests
sdispls[i] = rdispls[i] = disp;
disp += scount;
}
for (int i = 0; i < numDevices; i++) {
if (sendcounts[i] != 0) {
ncclSend(
((char*)dataset.inputs[r]) + sdispls[i] * DataTypeToBytes(dataType),
sendcounts[i],
dataType,
i,
comms[r],
streams[r]);
}
if (recvcounts[i] != 0) {
ncclRecv(
((char*)dataset.outputs[r]) + rdispls[i] * DataTypeToBytes(dataType),
recvcounts[i],
dataType,
i,
comms[r],
streams[r]);
}
}
ncclAllToAllv((char*)dataset.inputs[r], sendcounts, sdispls,
(char*)dataset.outputs[r], recvcounts, rdispls, dataType, comms[r], streams[r]);
}
ncclGroupEnd();
// Wait for reduction to complete
Synchronize();
@@ -89,6 +70,6 @@ namespace CorrectnessTests
testing::Values(2,3,4,5,6,7,8),
// In-place or not
testing::Values(false),
testing::Values("")),
testing::Values("RCCL_ALLTOALL_KERNEL_DISABLE=0", "RCCL_ALLTOALL_KERNEL_DISABLE=1")),
CorrectnessTest::PrintToStringParamName());
} // namespace