From 7c361ee87978390b324b896630711c345fa9b491 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Thu, 16 Oct 2025 08:14:46 +0200 Subject: [PATCH] Not sure this is what we want --- CMakeLists.txt | 9 +++++++-- src/common/gpu.hpp | 2 -- src/common/main.cpp | 8 ++++++++ src/common/master.cpp | 9 +++++++-- src/hsa/hsa.cpp | 3 +-- src/hsa/hsa.hpp | 2 +- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ce3bd45..ae40f94 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,7 +71,6 @@ set(GPUFECH_COMMON ${COMMON_DIR}/main.cpp ${COMMON_DIR}/args.cpp ${COMMON_DIR}/gpu.cpp - ${COMMON_DIR}/sort.cpp ${COMMON_DIR}/global.cpp ${COMMON_DIR}/printer.cpp ${COMMON_DIR}/master.cpp @@ -86,7 +85,9 @@ if(NOT(ENABLE_HSA_BACKEND AND NOT ENABLE_CUDA_BACKEND AND NOT ENABLE_INTEL_BACKE # order to show the list of GPUs available on the system, so that the user will # get at least some feedback even if HSA is not found. list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") - list(APPEND GPUFECH_COMMON ${COMMON_DIR}/pci.cpp) + list(APPEND GPUFECH_COMMON ${COMMON_DIR}/pci.cpp ${COMMON_DIR}/sort.cpp) + set(CMAKE_ENABLE_PCIUTILS ON) + find_package(PCIUTILS) if(NOT ${PCIUTILS_FOUND}) message(STATUS "${BoldYellow}pciutils not found, downloading and building a local copy...${ColorReset}") @@ -116,6 +117,10 @@ set(SANITY_FLAGS -Wfloat-equal -Wshadow -Wpointer-arith -Wall -Wextra -pedantic target_compile_features(gpufetch PRIVATE cxx_std_11) target_compile_options(gpufetch PRIVATE ${SANITY_FLAGS}) +if (CMAKE_ENABLE_PCIUTILS) + target_compile_definitions(gpufetch PUBLIC BACKEND_USE_PCI) +endif() + if(ENABLE_INTEL_BACKEND) target_compile_definitions(gpufetch PUBLIC BACKEND_INTEL) diff --git a/src/common/gpu.hpp b/src/common/gpu.hpp index c63fd3e..3d35faf 100644 --- a/src/common/gpu.hpp +++ b/src/common/gpu.hpp @@ -3,8 +3,6 @@ #include -#include "../cuda/pci.hpp" - #define UNKNOWN_FREQ -1 enum { diff --git a/src/common/main.cpp b/src/common/main.cpp index 5d12b27..7f95486 100644 --- a/src/common/main.cpp +++ b/src/common/main.cpp @@ -8,6 +8,10 @@ #include "../cuda/cuda.hpp" #include "../cuda/uarch.hpp" +#ifdef BACKEND_USE_PCI +#include "pci.hpp" +#endif + static const char* VERSION = "0.30"; void print_help(char *argv[]) { @@ -79,8 +83,12 @@ int main(int argc, char* argv[]) { } if(get_num_gpus_available(list) == 0) { +#ifdef BACKEND_USE_PCI printErr("No GPU was detected! Available GPUs are:"); print_gpus_list_pci(); +#else + printErr("No GPU was detected!"); +#endif printf("Please, make sure that the appropiate backend is enabled:\n"); print_enabled_backends(); printf("Visit https://github.com/Dr-Noob/gpufetch#2-backends for more information\n"); diff --git a/src/common/master.cpp b/src/common/master.cpp index 9353630..9c5062e 100644 --- a/src/common/master.cpp +++ b/src/common/master.cpp @@ -1,7 +1,10 @@ #include #include -#include "pci.hpp" +#ifdef BACKEND_USE_PCI + #include "pci.hpp" +#endif + #include "global.hpp" #include "colors.hpp" #include "master.hpp" @@ -19,7 +22,9 @@ struct gpu_list { struct gpu_list* get_gpu_list() { int idx = 0; +#ifdef BACKEND_USE_PCI struct pci_dev *devices = get_pci_devices_from_pciutils(); +#endif struct gpu_list* list = (struct gpu_list*) malloc(sizeof(struct gpu_list)); list->num_gpus = 0; list->gpus = (struct gpu_info**) malloc(sizeof(struct info*) * MAX_GPUS); @@ -40,7 +45,7 @@ struct gpu_list* get_gpu_list() { bool valid = true; while(valid) { - list->gpus[idx] = get_gpu_info_hsa(devices, idx); + list->gpus[idx] = get_gpu_info_hsa(idx); if(list->gpus[idx] != NULL) idx++; else valid = false; } diff --git a/src/hsa/hsa.cpp b/src/hsa/hsa.cpp index 8edd28d..da58673 100644 --- a/src/hsa/hsa.cpp +++ b/src/hsa/hsa.cpp @@ -13,7 +13,6 @@ #include "hsa.hpp" #include "uarch.hpp" -#include "../common/pci.hpp" #include "../common/global.hpp" #include "../common/uarch.hpp" @@ -76,7 +75,7 @@ struct topology_h* get_topology_info(struct agent_info info) { return topo; } -struct gpu_info* get_gpu_info_hsa(struct pci_dev *devices, int gpu_idx) { +struct gpu_info* get_gpu_info_hsa(int gpu_idx) { struct gpu_info* gpu = (struct gpu_info*) emalloc(sizeof(struct gpu_info)); gpu->pci = NULL; gpu->idx = gpu_idx; diff --git a/src/hsa/hsa.hpp b/src/hsa/hsa.hpp index 06d1c38..0942d2f 100644 --- a/src/hsa/hsa.hpp +++ b/src/hsa/hsa.hpp @@ -3,7 +3,7 @@ #include "../common/gpu.hpp" -struct gpu_info* get_gpu_info_hsa(struct pci_dev *devices, int gpu_idx); +struct gpu_info* get_gpu_info_hsa(int gpu_idx); char* get_str_cu(struct gpu_info* gpu); #endif