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
Этот коммит содержится в:
@@ -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
|
||||
|
||||
Ссылка в новой задаче
Block a user