Update tuning parameters (#518)

* Update tuning parameters

* Respect user algo and topo selections
This commit is contained in:
Wenkai Du
2022-03-29 08:15:37 -07:00
committed by GitHub
parent 2d558c9abc
commit 7cbbca4da1
2 changed files with 38 additions and 18 deletions
+20
View File
@@ -426,6 +426,26 @@ static ncclResult_t getAlgoInfo(struct ncclInfo* info, int collNetTypeSupport, i
if (info->coll == ncclFuncAllToAllPivot) {
int pivotA2ANumUniRings = comm->topo->pivotA2ANumBiRings * 2;
info->nChannels = comm->nChannels / pivotA2ANumUniRings * pivotA2ANumUniRings;
} else if (comm->topo->nodes[GPU].nodes[0].gpu.gcn == 910 && comm->nChannels == 32 && comm->nRanks/comm->nNodes == 16 && info->nBytes >= 268435456
&& ((comm->nNodes > 2 && info->nBytes <= 2147483648) || (comm->nNodes == 2 && info->nBytes <= 1073741824))) {
static int userTuneInput = -2;
if (userTuneInput == -2) {
const char *protoStr = getenv("NCCL_PROTO");
const char *algoStr = getenv("NCCL_ALGO");
if (!protoStr && !algoStr)
userTuneInput = 0;
else
userTuneInput = 1;
}
if (userTuneInput) {
// always respect user settings
info->nChannels = nc;
} else {
// use ring simple with reduced channels on gfx90a for specific data sizes
info->protocol = NCCL_PROTO_SIMPLE;
info->algorithm = NCCL_ALGO_RING;
info->nChannels = nc/2;
}
} else {
info->nChannels = nc;
}