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
[ROCm/rccl commit: b871ea3c0c]
Tento commit je obsažen v:
@@ -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
|
||||
|
||||
Odkázat v novém úkolu
Zablokovat Uživatele