SWDEV-463405: Add amdsmi_get_link_topology_nearest support
amdsmi_get_link_topology_nearest() is used to retrieve
the set of GPUs that are nearest to a given device
at a specific interconnectivity level.
Code changes related to the following:
* API
* CLI
* Unit tests
* Examples
Header Unification Change: "/amdsmi/+/1122408"
Change-Id: Id0317797c652c267742513936d321677793ec634
Signed-off-by: Lang Yu <lang.yu@amd.com>
This commit is contained in:
committato da
Oliveira, Daniel
parent
f00a03ed2b
commit
7a557b1c50
@@ -852,6 +852,36 @@ int main() {
|
||||
std::cout << "\n";
|
||||
std::cout << "+=======+==================+============+=============="
|
||||
<< "+=============+=============+=============+============+\n";
|
||||
|
||||
// Get nearest GPUs
|
||||
char *topology_link_type_str[] = {
|
||||
"AMDSMI_LINK_TYPE_INTERNAL",
|
||||
"AMDSMI_LINK_TYPE_XGMI",
|
||||
"AMDSMI_LINK_TYPE_PCIE",
|
||||
"AMDSMI_LINK_TYPE_NOT_APPLICABLE",
|
||||
"AMDSMI_LINK_TYPE_UNKNOWN",
|
||||
};
|
||||
printf("\tOutput of amdsmi_get_link_topology_nearest:\n");
|
||||
for (uint32_t topo_link_type = AMDSMI_LINK_TYPE_INTERNAL; topo_link_type <= AMDSMI_LINK_TYPE_UNKNOWN; topo_link_type++) {
|
||||
auto topology_nearest_info = amdsmi_topology_nearest_t();
|
||||
ret = amdsmi_get_link_topology_nearest(processor_handles[j],
|
||||
static_cast<amdsmi_link_type_t>(topo_link_type),
|
||||
nullptr);
|
||||
CHK_AMDSMI_RET(ret);
|
||||
|
||||
ret = amdsmi_get_link_topology_nearest(processor_handles[j],
|
||||
static_cast<amdsmi_link_type_t>(topo_link_type),
|
||||
&topology_nearest_info);
|
||||
CHK_AMDSMI_RET(ret);
|
||||
printf("\tNearest GPUs found at %s\n", topology_link_type_str[topo_link_type]);
|
||||
for (uint32_t k = 0; k < topology_nearest_info.count; k++) {
|
||||
amdsmi_bdf_t bdf = {};
|
||||
ret = amdsmi_get_gpu_device_bdf(topology_nearest_info.processor_list[k], &bdf);
|
||||
CHK_AMDSMI_RET(ret)
|
||||
printf("\t\tGPU BDF %04lx:%02x:%02x.%d\n", bdf.domain_number,
|
||||
bdf.bus_number, bdf.device_number, bdf.function_number);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -344,6 +344,35 @@ int main() {
|
||||
<<"," << policy.policies[x].policy_description << ")\n";
|
||||
}
|
||||
}
|
||||
|
||||
// Get nearest GPUs
|
||||
char *topology_link_type_str[] = {
|
||||
"AMDSMI_LINK_TYPE_INTERNAL",
|
||||
"AMDSMI_LINK_TYPE_XGMI",
|
||||
"AMDSMI_LINK_TYPE_PCIE",
|
||||
"AMDSMI_LINK_TYPE_NOT_APPLICABLE",
|
||||
"AMDSMI_LINK_TYPE_UNKNOWN",
|
||||
};
|
||||
printf("\tOutput of amdsmi_get_link_topology_nearest:\n");
|
||||
for (uint32_t topo_link_type = AMDSMI_LINK_TYPE_INTERNAL; topo_link_type <= AMDSMI_LINK_TYPE_UNKNOWN; topo_link_type++) {
|
||||
auto topology_nearest_info = amdsmi_topology_nearest_t();
|
||||
ret = amdsmi_get_link_topology_nearest(processor_handles[j],
|
||||
static_cast<amdsmi_link_type_t>(topo_link_type),
|
||||
nullptr);
|
||||
CHK_AMDSMI_RET(ret);
|
||||
ret = amdsmi_get_link_topology_nearest(processor_handles[j],
|
||||
static_cast<amdsmi_link_type_t>(topo_link_type),
|
||||
&topology_nearest_info);
|
||||
CHK_AMDSMI_RET(ret);
|
||||
printf("\tNearest GPUs found at %s\n", topology_link_type_str[topo_link_type]);
|
||||
for (uint32_t k = 0; k < topology_nearest_info.count; k++) {
|
||||
amdsmi_bdf_t bdf = {};
|
||||
ret = amdsmi_get_gpu_device_bdf(topology_nearest_info.processor_list[k], &bdf);
|
||||
CHK_AMDSMI_RET(ret)
|
||||
printf("\tGPU BDF %04lx:%02x:%02x.%d\n", bdf.domain_number,
|
||||
bdf.bus_number, bdf.device_number, bdf.function_number);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Fai riferimento in un nuovo problema
Block a user