Skip to content

Commit

Permalink
Add NPS=4 model (#417)
Browse files Browse the repository at this point in the history
* Add NPS=4 model

* Fixing bug with ExtractSubDataset function not fully initializing subdataset (#390)


(cherry picked from commit f6f5e16)

Co-authored-by: Stanley Tsang <[email protected]>
  • Loading branch information
wenkaidu and stanleytsang-amd authored Aug 6, 2021
1 parent 9e2f016 commit d306fd3
Show file tree
Hide file tree
Showing 12 changed files with 40 additions and 13 deletions.
12 changes: 12 additions & 0 deletions src/graph/rome_models.cc
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,17 @@ static struct rcclRomeModel rome_model_43 = {
.ringBase = "0 1 2 3 4 5 6 7|0 2 5 7 4 6 1 3|0 3 1 6 4 7 5 2|0 7 6 5 4 3 2 1",
};

static struct rcclRomeModel rome_model_53 = {
.nGpus = 8, .nCpus = 4, .nNics = 4, .nLinks = 3,
.gpuIds = { 0x4a000, 0x50000, 0xa000, 0xf000, 0xca000, 0xd0000, 0x8a000, 0x90000, },
.nicIds = { 0x0, 0x0, 0x0, 0x0, },
.gpuNuma = { 1, 1, 3, 3, 5, 5, 7, 7, },
.nicNuma = { 1, 3, 5, 7, },
.connMatrix = { 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, },
.pattern = "00210021",
.ringBase = "N0 0 1 2 3 4 5 6 7 N3|N3 7 6 5 4 3 2 1 0 N0|N1 2 3 0 1 6 7 4 5 N2|N2 5 4 7 6 1 0 3 2 N1",
};

static struct rcclRomeModel romeTopoModels[] = {
rome_model_22,
rome_model_25,
Expand All @@ -309,6 +320,7 @@ static struct rcclRomeModel romeTopoModels[] = {
rome_model_49,
rome_model_52,
rome_model_43,
rome_model_53,
};

/* Parse user defined rings. Format is like :
Expand Down
1 change: 1 addition & 0 deletions test/CorrectnessTest.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ namespace CorrectnessTests
subDataset.numElements = lastElement - startElement + 1;
subDataset.dataType = dataType;
subDataset.inPlace = inPlace;
subDataset.function = function;

subDataset.inputs.resize(numDevices);
subDataset.outputs.resize(numDevices);
Expand Down
4 changes: 2 additions & 2 deletions test/test_AllGather.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace CorrectnessTests

// Prepare input / output / expected results
Dataset dataset;
dataset.Initialize(numDevices, numElements, dataType, inPlace);
dataset.Initialize(numDevices, numElements, dataType, inPlace, ncclCollAllGather);
FillDatasetWithPattern(dataset);
ComputeExpectedResults(dataset);

Expand Down Expand Up @@ -46,7 +46,7 @@ namespace CorrectnessTests

// Allocate dataset
Dataset dataset;
dataset.Initialize(numDevices, numElements, dataType, inPlace);
dataset.Initialize(numDevices, numElements, dataType, inPlace, ncclCollAllGather);

// Loop over several offsets (so that device pointers are not aligned)
for (int firstElement = 1; firstElement <= 11; firstElement += 2)
Expand Down
2 changes: 1 addition & 1 deletion test/test_AllReduce.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace CorrectnessTests

// Prepare input / output / expected results
Dataset dataset;
dataset.Initialize(numDevices, numElements, dataType, inPlace);
dataset.Initialize(numDevices, numElements, dataType, inPlace, ncclCollAllReduce);
FillDatasetWithPattern(dataset);
ComputeExpectedResults(dataset, op);

Expand Down
2 changes: 1 addition & 1 deletion test/test_AllReduceAbort.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ namespace CorrectnessTests

// Prepare input / output / expected results
Dataset dataset;
dataset.Initialize(numDevices, numElements, dataType, inPlace);
dataset.Initialize(numDevices, numElements, dataType, inPlace, ncclCollAllReduce);
FillDatasetWithPattern(dataset);

int gpu = 0; // GPU number to trigger abort
Expand Down
6 changes: 3 additions & 3 deletions test/test_AllReduceGroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ namespace CorrectnessTests

// Prepare input / output / expected results
Dataset dataset1, dataset2, dataset3;
dataset1.Initialize(numDevices, numElements, dataType, inPlace);
dataset2.Initialize(numDevices, numElements, dataType, inPlace);
dataset3.Initialize(numDevices, numElements, dataType, inPlace);
dataset1.Initialize(numDevices, numElements, dataType, inPlace, ncclCollAllReduce);
dataset2.Initialize(numDevices, numElements, dataType, inPlace, ncclCollAllReduce);
dataset3.Initialize(numDevices, numElements, dataType, inPlace, ncclCollAllReduce);
FillDatasetWithPattern(dataset1);
FillDatasetWithPattern(dataset2);
FillDatasetWithPattern(dataset3);
Expand Down
2 changes: 1 addition & 1 deletion test/test_Broadcast.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace CorrectnessTests

// Allocate data
Dataset dataset;
dataset.Initialize(numDevices, numElements, dataType, inPlace);
dataset.Initialize(numDevices, numElements, dataType, inPlace, ncclCollBroadcast);

// Test each possible root
for (int root = 0; root < numDevices; root++)
Expand Down
2 changes: 1 addition & 1 deletion test/test_BroadcastAbort.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ namespace CorrectnessTests

// Prepare input / output / expected results
Dataset dataset;
dataset.Initialize(numDevices, numElements, dataType, inPlace);
dataset.Initialize(numDevices, numElements, dataType, inPlace, ncclCollBroadcast);
FillDatasetWithPattern(dataset);

int root = 0;
Expand Down
9 changes: 8 additions & 1 deletion test/test_CombinedCalls.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,16 @@ namespace CorrectnessTests

// Create multiple datasets for combined operation
std::vector<Dataset> datasets(5);
std::vector<ncclFunc_t> ncclFuncs(5);
ncclFuncs.push_back(ncclCollAllGather);
ncclFuncs.push_back(ncclCollAllReduce);
ncclFuncs.push_back(ncclCollBroadcast);
ncclFuncs.push_back(ncclCollReduce);
ncclFuncs.push_back(ncclCollReduceScatter);

for (int i = 0; i < datasets.size(); i++)
{
datasets[i].Initialize(numDevices, numElements, dataType, inPlace);
datasets[i].Initialize(numDevices, numElements, dataType, inPlace, ncclFuncs[i]);
FillDatasetWithPattern(datasets[i]);
}

Expand Down
9 changes: 8 additions & 1 deletion test/test_GroupCalls.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,16 @@ namespace CorrectnessTests

// Create multiple datasets for group operation
std::vector<Dataset> datasets(5);
std::vector<ncclFunc_t> ncclFuncs(5);
ncclFuncs.push_back(ncclCollAllGather);
ncclFuncs.push_back(ncclCollAllReduce);
ncclFuncs.push_back(ncclCollBroadcast);
ncclFuncs.push_back(ncclCollReduce);
ncclFuncs.push_back(ncclCollReduceScatter);

for (int i = 0; i < datasets.size(); i++)
{
datasets[i].Initialize(numDevices, numElements, dataType, inPlace);
datasets[i].Initialize(numDevices, numElements, dataType, inPlace, ncclFuncs[i]);
FillDatasetWithPattern(datasets[i]);
}

Expand Down
2 changes: 1 addition & 1 deletion test/test_Reduce.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace CorrectnessTests

// Allocate data
Dataset dataset;
dataset.Initialize(numDevices, numElements, dataType, inPlace);
dataset.Initialize(numDevices, numElements, dataType, inPlace, ncclCollReduce);

// Test each possible root
for (int root = 0; root < numDevices; root++)
Expand Down
2 changes: 1 addition & 1 deletion test/test_ReduceScatter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace CorrectnessTests

// Prepare input / output / expected results
Dataset dataset;
dataset.Initialize(numDevices, numElements, dataType, inPlace);
dataset.Initialize(numDevices, numElements, dataType, inPlace, ncclCollReduceScatter);
FillDatasetWithPattern(dataset);
ComputeExpectedResults(dataset, op);

Expand Down

0 comments on commit d306fd3

Please sign in to comment.