We can use hsa_amd_agent_iterate_memory_pools to fetch info about GPU memory pools in the GPU. HSA_AMD_SEGMENT_GROUP seems to be LDS, and HSA_AMD_SEGMENT_GLOBAL seems to be global memory. However, the latter is reported multiple times (I don't know why). The only solution I found for this is to check for the HSA_AMD_MEMORY_POOL_GLOBAL_FLAG_EXTENDED_SCOPE_FINE_GRAINED flag, which seems to be reported only once. For bus width, we simply use HSA_AMD_AGENT_INFO_MEMORY_WIDTH.
Simple yet fancy GPU architecture fetching tool
gpufetch is a command-line tool written in C++ that displays the GPU information in a clean and beautiful way
Table of contents
1. Support
gpufetch supports the following GPUs:
- NVIDIA GPUs (Compute Capability >= 2.0)
- AMD GPUs (Experimental) (RDNA 3.0, CDNA 3.0)
- Intel iGPUs (Generation >= Gen6)
Only compilation under Linux is supported.
2. Backends
gpufetch is made up of three backends:
- CUDA backend
- HSA backend
- Intel backend
Backends are enabled and disabled at compile time. When compiling gpufetch, check the CMake output to see which backends are enabled.
gpufetch will only detect your GPU if the appropiate backend was enabled during compilation (e.g., will not detect your NVIDIA GPU if CUDA backend is disabled!)
By default, CMake will try to enable all backends. However, backends can be manually disabled. See the build.sh script for instructions.
2.1 CUDA backend is not enabled. Why?
CUDA is mandatory to build gpufetch with CUDA backend enabled. However, when building gpufetch, cmake may be unable to find the CUDA installation. If CUDA is installed but CMake does not find it, you need to pass the CUDA path to cmake. You can do this easily by editing directly the build.sh script. For example:
cmake -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc -DCMAKE_CUDA_COMPILER_TOOLKIT_ROOT=/usr/local/cuda/ ..
2.2 The backend is enabled, but gpufetch is unable to detect my GPU
First, make sure that your GPU is enabled. You can print enabled GPUs with lspci:
[drnoob@noob ~]$ lspci -nn | grep VGA
If there is a NVIDIA GPU or Intel iGPU in the system and the appropiate backend is enabled but gpufetch does not detect the GPU, please create a new issue with the provided error message (in the gpufetch output) on the issues page.
3. Installation (building from source)
You will need (mandatory):
- C++ compiler (e.g,
g++) zlibcmakemake
and optionally:
- CUDA (needed for CUDA backend)
- pciutils (a local copy will be downloaded if pciutils is not installed)
To build gpufetch, just clone the repo and run ./build.sh:
git clone https://github.com/Dr-Noob/gpufetch
cd gpufetch
./build.sh
./gpufetch
4. Colors
By default, gpufetch will print the GPU logo with the system color scheme. However, you can set a custom color scheme in two different ways:
4.1 Specifying a name
By specifying a name, gpufetch will use the specific colors of each manufacture. Valid values are:
- intel
- amd
- nvidia
./gpufetch --color intel (default color for Intel)
4.2 Specifying the colors in RGB format
5 colors must be given in RGB with the format: [R,G,B:R,G,B:R,G,B:R,G,B:R,G,B]. These colors correspond to the GPU logo color (first 3 colors) and for the text colors (following 2).
./gpufetch --color 239,90,45:210,200,200:0,0,0:100,200,45:0,200,200

