Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Tommy Gorham edited this page Sep 4, 2023 · 7 revisions

Welcome to the unv-smi wiki!

What is unv-smi?

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.

Who is this for?

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

Why was this developed?

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.

Why is this helpful?

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).

How is this information reported?

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)

What additional information can be expected in the near future?

CPU Cache line size

GPU cores

Information to help avoid false sharing on the CPU with OpenMP

Operating Systems/Architectures this has been tested on

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