Psuedo-randomly adding zero-byte sends in AllToAllv unit test (#1597)

Bu işleme şunda yer alıyor:
gilbertlee-amd
2025-03-20 17:00:48 -06:00
işlemeyi yapan: GitHub
ebeveyn 805448261d
işleme 9a4e49ff1a
+23 -5
Dosyayı Görüntüle
@@ -5,7 +5,7 @@
************************************************************************/
// Note: InPlace is not supported for All-To-Allv
#include "TestBed.hpp"
namespace RcclUnitTesting
@@ -14,7 +14,8 @@ namespace RcclUnitTesting
void PrepareCounts(int const totalRanks, int const chunkSize,
OptionalColArgs& options,
std::vector<size_t>& numInputElements,
std::vector<size_t>& numOutputElements)
std::vector<size_t>& numOutputElements,
int percentZeroElement = 0)
{
numInputElements.clear();
numOutputElements.clear();
@@ -30,10 +31,27 @@ namespace RcclUnitTesting
int const recvIdx = recvRank * totalRanks + sendRank;
// Each pair sends slightly different amounts of elements (based on chunkSize)
int const numElements = (1 + sendRank + recvRank) * chunkSize;
int numElements = (1 + sendRank + recvRank) * chunkSize;
options.sendcounts[sendIdx] = options.recvcounts[recvIdx] = numElements;
}
// Psuedo-randomly zero out some of the sends
int s = 0, r = 0;
double zeroStride = (percentZeroElement <= 0) ? (totalRanks * totalRanks + 1) :
(percentZeroElement >= 100) ? 1.0
: 100.0 / percentZeroElement;
double zeroTarget = zeroStride;
for (int i = 1; i <= totalRanks * totalRanks; i++) {
if (i >= zeroTarget) {
options.sendcounts[s * totalRanks + r] = options.recvcounts[r * totalRanks + s] = 0;
zeroTarget += zeroStride;
}
int next = ((s*totalRanks+(r+(s*s)%7/2)%totalRanks) + totalRanks-1) % (totalRanks*totalRanks);
s = next / totalRanks;
r = ((next % totalRanks) - (s*s)%7/2) % totalRanks;
if (r < 0) r += totalRanks;
}
// Compute displacements
for (int sendRank = 0; sendRank < totalRanks; ++sendRank)
{
@@ -79,7 +97,7 @@ namespace RcclUnitTesting
// Prepare AllToAllV options
std::vector<size_t> numInputElements;
std::vector<size_t> numOutputElements;
PrepareCounts(totalRanks, 256, options, numInputElements, numOutputElements);
PrepareCounts(totalRanks, 256, options, numInputElements, numOutputElements, 40);
for (int dataIdx = 0; dataIdx < dataTypes.size() && isCorrect; ++dataIdx)
{
@@ -137,7 +155,7 @@ namespace RcclUnitTesting
// Prepare AllToAllV options
std::vector<size_t> numInputElements;
std::vector<size_t> numOutputElements;
PrepareCounts(totalRanks, 256, options, numInputElements, numOutputElements);
PrepareCounts(totalRanks, 256, options, numInputElements, numOutputElements, 60);
for (int dataIdx = 0; dataIdx < dataTypes.size() && isCorrect; ++dataIdx)
{