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
This commit is contained in:
Wenkai Du
2020-09-30 16:25:36 -07:00
committed by GitHub
parent aa985bfb7e
commit b871ea3c0c
22 changed files with 300 additions and 60 deletions
+3 -22
View File
@@ -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