Merge pull request #364 from badgerious/net-class

Add GPUs and NICs based on XML sub tags instead of PCI class.
This commit is contained in:
Sylvain Jeaugey 2020-08-05 12:52:38 -07:00 committed by GitHub
commit 3d63f89068
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -317,21 +317,19 @@ ncclResult_t ncclTopoAddPci(struct ncclXmlNode* xmlPci, struct ncclTopoSystem* s
NCCLCHECK(busIdToInt64(str, &busId)); NCCLCHECK(busIdToInt64(str, &busId));
struct ncclTopoNode* node = NULL; struct ncclTopoNode* node = NULL;
if (type == GPU) { struct ncclXmlNode* xmlGpu = NULL;
struct ncclXmlNode* xmlGpu; NCCLCHECK(xmlGetSub(xmlPci, "gpu", &xmlGpu));
NCCLCHECK(xmlGetSub(xmlPci, "gpu", &xmlGpu)); if (xmlGpu != NULL) {
if (xmlGpu == NULL) return ncclSuccess;
int index; int index;
NCCLCHECK(xmlGetAttrIndex(xmlGpu, "rank", &index)); NCCLCHECK(xmlGetAttrIndex(xmlGpu, "rank", &index));
if (index == -1) return ncclSuccess; if (index == -1) return ncclSuccess;
NCCLCHECK(ncclTopoCreateNode(system, &node, type, busId)); NCCLCHECK(ncclTopoCreateNode(system, &node, type, busId));
NCCLCHECK(ncclTopoAddGpu(xmlGpu, system, node)); NCCLCHECK(ncclTopoAddGpu(xmlGpu, system, node));
} }
if (type == NIC) { struct ncclXmlNode* xmlNic = NULL;
struct ncclXmlNode* xmlNic; NCCLCHECK(xmlGetSub(xmlPci, "nic", &xmlNic));
NCCLCHECK(xmlGetSub(xmlPci, "nic", &xmlNic)); if (xmlNic != NULL) {
if (xmlNic == NULL) return ncclSuccess; type = NIC;
// Ignore sub device ID and merge multi-port NICs into one PCI device. // Ignore sub device ID and merge multi-port NICs into one PCI device.
busId &= 0xfffffffffffffff0; busId &= 0xfffffffffffffff0;
struct ncclTopoNode* nicNode = NULL; struct ncclTopoNode* nicNode = NULL;