Fix gcnArchName bug in topology dump (#937)
Signed-off-by: nileshnegi <Nilesh.Negi@amd.com>
Este commit está contenido en:
+1
-1
@@ -372,7 +372,7 @@ ncclResult_t ncclTopoAddGpu(struct ncclXmlNode* xmlGpu, struct ncclTopoSystem* s
|
||||
const char* gcnArch;
|
||||
const char* gcnArchName;
|
||||
NCCLCHECK(xmlGetAttr(xmlGpu, "gcn", &gcnArch));
|
||||
convertGcnArchToGcnArchName(gcnArch, gcnArchName);
|
||||
convertGcnArchToGcnArchName(gcnArch, &gcnArchName);
|
||||
gpu->gpu.gcn = strdup(gcnArchName);
|
||||
rcclHipDeviceArch_t arch;
|
||||
NCCLCHECK(xmlGetAttrInt(xmlGpu, "arch", &arch.value));
|
||||
|
||||
+1
-1
@@ -650,7 +650,7 @@ ncclResult_t ncclTopoGetXmlFromGpu(struct ncclXmlNode* pciNode, uint32_t rocmDev
|
||||
NCCLCHECK(xmlSetAttr(gpuNode, "gcn", gcn));
|
||||
}
|
||||
NCCLCHECK(xmlGetAttr(gpuNode, "gcn", &gcn));
|
||||
convertGcnArchToGcnArchName(gcn, gcnArchName);
|
||||
convertGcnArchToGcnArchName(gcn, &gcnArchName);
|
||||
NCCLCHECK(xmlSetAttr(gpuNode, "gcn", gcnArchName));
|
||||
|
||||
rcclHipDeviceArch_t arch;
|
||||
|
||||
@@ -31,7 +31,7 @@ THE SOFTWARE.
|
||||
*/
|
||||
|
||||
void GcnArchNameFormat(char *gcnArchName, char* out);
|
||||
void convertGcnArchToGcnArchName(const char* gcnArch, const char* gcnArchName);
|
||||
void convertGcnArchToGcnArchName(const char* gcnArch, const char** gcnArchName);
|
||||
int GetGcnArchName(int deviceId, char* out);
|
||||
double GetDeviceWallClockRateInKhz(int deviceId);
|
||||
bool IsArchMatch(char const* arch, char const* target);
|
||||
|
||||
@@ -32,24 +32,24 @@ void GcnArchNameFormat(char* gcnArchName, char* out) {
|
||||
strcpy(out, gcnArchNameToken);
|
||||
}
|
||||
|
||||
void convertGcnArchToGcnArchName(const char* gcnArch, const char* gcnArchName) {
|
||||
void convertGcnArchToGcnArchName(const char* gcnArch, const char** gcnArchName) {
|
||||
// gcnArch is deprecated and we should instead use gcnArchName; however, some data files still have
|
||||
// the older gcnArch value. There's only a handful of architectures that were coded prior to deprecation,
|
||||
// so we handle those cases here.
|
||||
if (strcmp(gcnArch, "906") == 0)
|
||||
gcnArchName = "gfx906";
|
||||
*gcnArchName = "gfx906";
|
||||
else if (strcmp(gcnArch, "908") == 0)
|
||||
gcnArchName = "gfx908";
|
||||
*gcnArchName = "gfx908";
|
||||
else if (strcmp(gcnArch, "910") == 0)
|
||||
gcnArchName = "gfx90a";
|
||||
*gcnArchName = "gfx90a";
|
||||
else if (strcmp(gcnArch, "940") == 0)
|
||||
gcnArchName = "gfx940";
|
||||
*gcnArchName = "gfx940";
|
||||
else if (strcmp(gcnArch, "941") == 0)
|
||||
gcnArchName = "gfx941";
|
||||
*gcnArchName = "gfx941";
|
||||
else if (strcmp(gcnArch, "942") == 0)
|
||||
gcnArchName = "gfx942";
|
||||
*gcnArchName = "gfx942";
|
||||
else
|
||||
gcnArchName = gcnArch;
|
||||
*gcnArchName = gcnArch;
|
||||
}
|
||||
|
||||
int GetGcnArchName(int deviceId, char* out) {
|
||||
|
||||
Referencia en una nueva incidencia
Block a user