or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

examples

edge-cases.mdreal-world-scenarios.md
index.md
tile.json

quick-start.mddocs/guides/

Quick Start Guide

This guide will help you get started with the AMDSMI library for monitoring and managing AMD GPUs and CPUs.

Installation

pip install amdsmi

Requirements

  • Python >= 3.6
  • AMD hardware with ROCm support
  • For CPU monitoring: ESMI library support

Basic Usage Pattern

The AMDSMI library follows a simple initialization → use → shutdown pattern:

import amdsmi

# 1. Initialize the library
amdsmi.amdsmi_init(amdsmi.AmdSmiInitFlags.INIT_AMD_GPUS)

try:
    # 2. Use the library
    devices = amdsmi.amdsmi_get_processor_handles()
    
    for device in devices:
        # Query device information
        activity = amdsmi.amdsmi_get_gpu_activity(device)
        print(f"GPU Activity: {activity}")

finally:
    # 3. Always shut down
    amdsmi.amdsmi_shut_down()

Initialization Options

Choose which device types to initialize:

# Initialize only GPUs (default)
amdsmi.amdsmi_init(amdsmi.AmdSmiInitFlags.INIT_AMD_GPUS)

# Initialize only CPUs (requires ESMI)
amdsmi.amdsmi_init(amdsmi.AmdSmiInitFlags.INIT_AMD_CPUS)

# Initialize all processor types
amdsmi.amdsmi_init(amdsmi.AmdSmiInitFlags.INIT_ALL_PROCESSORS)

Common Tasks

Discover Devices

import amdsmi

amdsmi.amdsmi_init()

try:
    # Get all processor handles
    devices = amdsmi.amdsmi_get_processor_handles()
    print(f"Found {len(devices)} devices")
    
    # Get device type for each
    for device in devices:
        proc_type = amdsmi.amdsmi_get_processor_type(device)
        print(f"Device type: {proc_type['processor_type']}")
finally:
    amdsmi.amdsmi_shut_down()

Monitor GPU Metrics

import amdsmi

amdsmi.amdsmi_init()

try:
    devices = amdsmi.amdsmi_get_processor_handles()
    
    for device in devices:
        # Get GPU name
        asic_info = amdsmi.amdsmi_get_gpu_asic_info(device)
        print(f"\nGPU: {asic_info['market_name']}")
        
        # Get utilization
        activity = amdsmi.amdsmi_get_gpu_activity(device)
        print(f"  GFX Activity: {activity['gfx_activity']}%")
        
        # Get temperature
        temp = amdsmi.amdsmi_get_temp_metric(
            device,
            amdsmi.AmdSmiTemperatureType.EDGE,
            amdsmi.AmdSmiTemperatureMetric.CURRENT
        )
        print(f"  Temperature: {temp / 1000.0}°C")
        
        # Get power
        power = amdsmi.amdsmi_get_power_info(device)
        print(f"  Power: {power['current_socket_power'] / 1000000.0}W")
        
        # Get VRAM usage
        vram = amdsmi.amdsmi_get_gpu_vram_usage(device)
        used_gb = vram['vram_used'] / (1024**3)
        total_gb = vram['vram_total'] / (1024**3)
        print(f"  VRAM: {used_gb:.2f} GB / {total_gb:.2f} GB")
        
finally:
    amdsmi.amdsmi_shut_down()

Error Handling

The library uses specific exception types for different error conditions:

import amdsmi
from amdsmi import (
    AmdSmiLibraryException,
    AmdSmiParameterException,
    AmdSmiException
)

try:
    amdsmi.amdsmi_init()
    devices = amdsmi.amdsmi_get_processor_handles()
    
    if devices:
        device = devices[0]
        activity = amdsmi.amdsmi_get_gpu_activity(device)
        
except AmdSmiParameterException as e:
    print(f"Invalid parameter: {e}")
except AmdSmiLibraryException as e:
    print(f"Library error: {e.get_error_info()}")
except AmdSmiException as e:
    print(f"AMDSMI error: {e}")
finally:
    try:
        amdsmi.amdsmi_shut_down()
    except:
        pass

Next Steps

  • Explore Real-World Scenarios for more complex examples
  • Review the API Reference for detailed function documentation
  • Check Edge Cases for advanced usage patterns