Skip to main content

Retrieve gpu, cpu, and npu device info and properties from Linux/MacOS with zero package dependency.

Project description

Device-SMI

Self-contained Python lib with zero-dependencies that give you a unified device properties for gpu, cpu, and npu. No more calling separate tools such as nvidia-smi or /proc/cpuinfo and parsing it yourself.

GitHub release PyPI - Version PyPI Downloads License

News

  • 12/05/2024 0.3.2 Added Windows WSL support.
  • 12/03/2024 0.3.1 Added CPUDevice compat for Windows.
  • 12/02/2024 0.3.0 Added OSDevice.[name, version, kernel, arch] for Linux/MacOS/Windows/FreeBSD/Solaris. Added cpu.[count, cores, threads] properties. Bug fix for gpu device index.
  • 11/29/2024 0.2.1 Added pcie.[gen, speed, id] + [firmware, driver] properties to GPU device.

Features

  • Retrieve information for both CPU and GPU devices.
  • Includes details about memory usage, utilization, driver, pcie info when applicable, and other device specifications.
  • Zero pypi dependency.
  • Linux/MacOS support

Supported Devices:

  • OS: Linux, MacOS, Windows, FreeBSD, Solaris
  • CPU: [Intel/AMD/Apple] Linux/MacOS system interface
  • NVIDIA GPU: NVIDIA System Management Interface nvidia-smi
  • Intel XPU: Intel/XPU System Management Interface xpu-smi
  • Apple GPU: MacOS interfaces

Usage

For OS, use os to init a new Device object.

from device_smi import Device

dev = Device("os")
print(dev)

Output: (Ubuntu 22.04)

{'type': 'os', 'name': 'ubuntu', 'version': '22.04', 'kernel': '6.12.1-x64v3-xanmod2', 'arch': 'x86_64'}

For GPU/XPU, use [gpu, cuda] for Nvidia and xpu for Intel/XPU. Index usage for multiple GPUs: cuda:0

from device_smi import Device

dev = Device("cuda:0")
print(dev)

Output: (Nvidia 4090)

{'pcie': {'gen': 2, 'speed': 1, 'id': '00000000:16:00.0'}, 'gpu': {'driver': '565.57.01', 'firmware': '95.02.3C.40.E7'}, 'type': 'gpu', 'model': 'geforce rtx 4090', 'memory_total': 25757220864, 'vendor': 'nvidia', 'features': ['8.9']}

For CPU, use cpu to init a new Device object.

from device_smi import Device

dev = Device("cpu")
print(dev)

Output: (AMD EPYC 7443)

{'type': 'cpu', 'model': 'epyc 7443', 'vendor': 'amd', 'memory_total': 1000000000000, 'count': 2, 'cores': 48, 'threads': 96, 'features': ['3dnowprefetch', 'abm', 'adx', 'aes', 'amd_ppin', 'aperfmperf', 'apic', 'arat', 'avx', 'avx2', 'bmi1', 'bmi2', 'bpext', 'brs', 'cat_l3', 'cdp_l3', 'clflush', 'clflushopt', 'clwb', 'clzero', 'cmov', 'cmp_legacy', 'constant_tsc', 'cpb', 'cpuid', 'cqm', 'cqm_llc', 'cqm_mbm_local', 'cqm_mbm_total', 'cqm_occup_llc', 'cr8_legacy', 'cx16', 'cx8', 'de', 'debug_swap', 'decodeassists', 'erms', 'extapic', 'extd_apicid', 'f16c', 'flushbyasid', 'fma', 'fpu', 'fsgsbase', 'fsrm', 'fxsr', 'fxsr_opt', 'ht', 'hw_pstate', 'ibpb', 'ibrs', 'ibs', 'invpcid', 'irperf', 'lahf_lm', 'lbrv', 'lm', 'mba', 'mca', 'mce', 'misalignsse', 'mmx', 'mmxext', 'monitor', 'movbe', 'msr', 'mtrr', 'mwaitx', 'nonstop_tsc', 'nopl', 'npt', 'nrip_save', 'nx', 'ospke', 'osvw', 'overflow_recov', 'pae', 'pat', 'pausefilter', 'pcid', 'pclmulqdq', 'pdpe1gb', 'perfctr_core', 'perfctr_llc', 'perfctr_nb', 'pfthreshold', 'pge', 'pku', 'pni', 'popcnt', 'pse', 'pse36', 'rapl', 'rdpid', 'rdpru', 'rdrand', 'rdseed', 'rdt_a', 'rdtscp', 'rep_good', 'sep', 'sha_ni', 'skinit', 'smap', 'smca', 'smep', 'ssbd', 'sse', 'sse2', 'sse4_1', 'sse4_2', 'sse4a', 'ssse3', 'stibp', 'succor', 'svm', 'svm_lock', 'syscall', 'tce', 'topoext', 'tsc', 'tsc_scale', 'umip', 'user_shstk', 'v_spec_ctrl', 'v_vmsave_vmload', 'vaes', 'vgif', 'vmcb_clean', 'vme', 'vmmcall', 'vpclmulqdq', 'wbnoinvd', 'wdt', 'xgetbv1', 'xsave', 'xsavec', 'xsaveerptr', 'xsaveopt', 'xsaves', 'xtopology']}

Roadmap

  • Support AMD GPU
  • Support Intel/Gaudi
  • Support Google/TPU
  • Add NPU support (ARM/Intel/AMD)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

device_smi-0.3.3.dev0.tar.gz (15.1 kB view details)

Uploaded Source

File details

Details for the file device_smi-0.3.3.dev0.tar.gz.

File metadata

  • Download URL: device_smi-0.3.3.dev0.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.10

File hashes

Hashes for device_smi-0.3.3.dev0.tar.gz
Algorithm Hash digest
SHA256 aa58d933c9935431f0bc66c2e57421d75f3440974464d3e8ab6b4174228f3929
MD5 c0cb967adb35d49cf0262d28a3548f35
BLAKE2b-256 a5c8911c3c1f0aee6410e0b8128e1d04f445b5c1f1b9545dc9c796c25b64dde4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page