-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Welcome to the unv-smi wiki!
Universal System Management Interface is an attempt to standardize and automate an instantaneous, environment-independent retrieval of essential information necessary for understanding, assessing, and achieving the most performance out of a given standalone machine or complex computer cluster. All you need is a C++ compiler.
Those that will benefit most from utilizing this program are:
- Those who do not have NVIDIA GPUs and can't run nvidia-smi to see their GPU(s)
- Anyone unfamiliar with running various, platform-specific terminal commands in order to try and find this information
- Anyone wanting compare performance thresholds across machines or clusters
- C++ Developers, System/Application Profilers, etc...
- Computer Cluster Administrators
- High Performance Computing Researchers
Retrieving numerous system details at once (especially across clusters) is never a simple, 1-step process. In a world of diversified hardware architectures and software programming environments, it can become tireless and cumbersome to constantly rely on various hardware vendors, software specifications, and operating system environments, to adequately describe, classify, and exploit compute resources on a given system. Sometimes these dependencies can prevent programmers from accessing details about their system immediately. This was created to facilitate that process with the idea of establishing a standard mechanism via C++ to always work.
Having an immediate report of your system's hardware and software information enables you to:
- Reduce various configuration-dependent shell command look-ups into to running one executable.
- Derive high-performance solutions that make the most effective use of the compute resources available on the system.
- Facilitate scientific research and analysis, since this information can be easily redirected to a csv.
- Understand theoretical performance and restraints of different machines/clusters immediately.
- Compare complex and diversified architectures and programming models quickly.
- View GPU specs and the standard programming model based on the manufacturer of the GPU chip (especially for those that do not have the liberty of running nvidia-smi).
Using C++ preprocessor directives, API version macros, and shell commands for the appropriate OS, a system report is generated and displayed in a user-friendly format upon running the executable. Currently, unv-smi reports the following:
- The C++ Standard your compiler is using _(e.g., C++14) _
- The OpenMP Version reported by the macro (e.g., OpenMP 4.5)
- Maximum OpenMP Threads Available (e.g., 8)
- GPU Programming Model for this System _(e.g., Rocm/Hip for AMD) _
- Operating System Name (e.g., Ubuntu Linux)
- CPU Architecture (e.g., 64-bit)
- CPU Physical/Logical Cores (e.g., 4,8)
- GPU Vendor (e.g., AMD)
- GPU Name (e.g., AMD Radeon™ RX 6000)
CPU Cache line size
GPU cores
Information to help avoid false sharing on the CPU with OpenMP
CentOS
Red Hat Enterprise Linux
Ubuntu 22.04 LTS x86_64
Ubuntu 20.04.4 LTS x86_64
AlmaLinux 8.4 (Electric Cheetah) x86_64
MacOS X Yosemite
Windows 11 Pro
Windows 10