diff --git a/src/common/printer.cpp b/src/common/printer.cpp index 35b5d47..a3c441d 100644 --- a/src/common/printer.cpp +++ b/src/common/printer.cpp @@ -491,12 +491,16 @@ bool print_gpufetch_amd(struct gpu_info* gpu, STYLE s, struct color** cs, struct return false; char* gpu_name = get_str_gpu_name(gpu); + char* gpu_chip = get_str_chip(gpu->arch); char* uarch = get_str_uarch_hsa(gpu->arch); char* manufacturing_process = get_str_process(gpu->arch); char* sms = get_str_cu(gpu); char* max_frequency = get_str_freq(gpu); setAttribute(art, ATTRIBUTE_NAME, gpu_name); + if (gpu_chip != NULL) { + setAttribute(art, ATTRIBUTE_CHIP, gpu_chip); + } setAttribute(art, ATTRIBUTE_UARCH, uarch); setAttribute(art, ATTRIBUTE_TECHNOLOGY, manufacturing_process); setAttribute(art, ATTRIBUTE_FREQUENCY, max_frequency); diff --git a/src/hsa/uarch.cpp b/src/hsa/uarch.cpp index 17614a4..ae66bb9 100644 --- a/src/hsa/uarch.cpp +++ b/src/hsa/uarch.cpp @@ -298,6 +298,21 @@ bool is_uarch_valid(struct uarch* arch) { } } +bool is_cdna(struct uarch* arch) { + return arch->uarch == UARCH_CDNA || + arch->uarch == UARCH_CDNA2 || + arch->uarch == UARCH_CDNA3 || + arch->uarch == UARCH_CDNA4; +} + +char* get_str_chip(struct uarch* arch) { + // We dont want to show CDNA chip names as they add + // no value, since each architecture maps one to one + // to a chip. + if (is_cdna(arch)) return NULL; + return arch->chip_str; +} + const char* get_str_uarch_hsa(struct uarch* arch) { if (!is_uarch_valid(arch)) { return NULL; diff --git a/src/hsa/uarch.hpp b/src/hsa/uarch.hpp index 0225ba1..ba208ab 100644 --- a/src/hsa/uarch.hpp +++ b/src/hsa/uarch.hpp @@ -8,5 +8,6 @@ struct uarch; struct uarch* get_uarch_from_hsa(struct gpu_info* gpu, char* gpu_name); char* get_str_uarch_hsa(struct uarch* arch); char* get_str_process(struct uarch* arch); // TODO: Shouldnt we define this in the cpp? +char* get_str_chip(struct uarch* arch); #endif