Python Bindings for the Moore Threads GPU Management Library
Project description
MTML Python Bindings (pymtml)
Python bindings for the Moore Threads Management Library (MTML) - a C-based API for monitoring and managing Moore Threads GPU devices.
Overview
MTML provides programmatic access to GPU metrics and configuration, similar to nvidia-smi for NVIDIA GPUs. This library (pymtml.py) wraps the native MTML C library for Python usage.
Moore Threads GPUs use MUSA (Meta-computing Unified System Architecture) as their compute platform, analogous to NVIDIA's CUDA.
Requirements
- Python 3.7+
- Moore Threads GPU driver with MTML library installed
- Linux: The
libmtml.soshared library must be in the library path - Windows: The
mtml.dlllibrary must be in the system PATH or in themtml/directory relative to the script
Installation
pip install mthreads-ml-py
# Or install from source
git clone https://github.com/MooreThreads/mthreads-ml-py.git
cd mthreads-ml-py
pip install -e .
Quick Start
from pymtml import *
# Initialize the library
mtmlLibraryInit()
# Get device count
device_count = mtmlLibraryCountDevice()
print(f"Found {device_count} GPU(s)")
# Query each device
for i in range(device_count):
device = mtmlLibraryInitDeviceByIndex(i)
# Basic info
name = mtmlDeviceGetName(device)
uuid = mtmlDeviceGetUUID(device)
print(f"Device {i}: {name} ({uuid})")
# Memory info
with mtmlMemoryContext(device) as memory:
total = mtmlMemoryGetTotal(memory)
used = mtmlMemoryGetUsed(memory)
print(f" Memory: {used / 1024**3:.2f} / {total / 1024**3:.2f} GB")
# GPU utilization
with mtmlGpuContext(device) as gpu:
util = mtmlGpuGetUtilization(gpu)
temp = mtmlGpuGetTemperature(gpu)
print(f" GPU Util: {util}%, Temp: {temp}°C")
# Shutdown
mtmlLibraryShutDown()
API Categories
Library APIs
mtmlLibraryInit()- Initialize the librarymtmlLibraryShutDown()- Shutdown the librarymtmlLibraryGetVersion()- Get library versionmtmlLibraryCountDevice()- Get device countmtmlLibraryInitDeviceByIndex(index)- Get device handle by indexmtmlLibraryInitDeviceByUuid(uuid)- Get device handle by UUID
Device APIs
mtmlDeviceGetIndex(device)- Get device indexmtmlDeviceGetName(device)- Get device namemtmlDeviceGetUUID(device)- Get device UUIDmtmlDeviceGetBrand(device)- Get device brandmtmlDeviceGetSerialNumber(device)- Get serial numbermtmlDeviceGetPciInfo(device)- Get PCI informationmtmlDeviceGetPowerUsage(device)- Get power usage (mW)mtmlDeviceGetVbiosVersion(device)- Get VBIOS versionmtmlDeviceCountGpuCores(device)- Get GPU core count
GPU APIs
mtmlDeviceInitGpu(device)- Initialize GPU handlemtmlGpuGetUtilization(gpu)- Get GPU utilization (%)mtmlGpuGetTemperature(gpu)- Get GPU temperature (°C)mtmlGpuGetClock(gpu)- Get current GPU clock (MHz)mtmlGpuGetMaxClock(gpu)- Get max GPU clock (MHz)mtmlGpuGetEngineUtilization(gpu, engine)- Get engine utilization
Memory APIs
mtmlDeviceInitMemory(device)- Initialize memory handlemtmlMemoryGetTotal(memory)- Get total memory (bytes)mtmlMemoryGetUsed(memory)- Get used memory (bytes)mtmlMemoryGetUtilization(memory)- Get memory utilization (%)mtmlMemoryGetClock(memory)- Get memory clock (MHz)mtmlMemoryGetBusWidth(memory)- Get memory bus width (bits)mtmlMemoryGetBandwidth(memory)- Get memory bandwidth (GB/s)
MtLink APIs (Multi-GPU Interconnect)
mtmlDeviceGetMtLinkSpec(device)- Get MtLink specificationmtmlDeviceGetMtLinkState(device, link)- Get link statemtmlDeviceGetMtLinkRemoteDevice(device, link)- Get remote devicemtmlDeviceCountMtLinkLayouts(dev1, dev2)- Count link layouts between devices
Topology APIs
mtmlDeviceGetTopologyLevel(dev1, dev2)- Get topology level between devicesmtmlDeviceGetP2PStatus(dev1, dev2, cap)- Get P2P statusmtmlDeviceCountDeviceByTopologyLevel(device, level)- Count devices at topology levelmtmlDeviceGetDeviceByTopologyLevel(device, level, count)- Get devices at topology level
ECC APIs
mtmlMemoryGetEccMode(memory)- Get ECC mode (current, pending)mtmlMemoryGetEccErrorCounter(memory, errorType, counterType, location)- Get ECC error countmtmlMemoryGetRetiredPagesCount(memory)- Get retired pages countmtmlMemoryGetRetiredPagesPendingStatus(memory)- Get pending status
VPU APIs (Video Processing Unit)
mtmlDeviceInitVpu(device)- Initialize VPU handlemtmlVpuGetClock(vpu)- Get VPU clock (MHz)mtmlVpuGetUtilization(vpu)- Get VPU utilizationmtmlVpuGetCodecCapacity(vpu)- Get codec capacity
Topology Levels
MTML_TOPOLOGY_INTERNAL = 0 # Same GPU
MTML_TOPOLOGY_SINGLE = 1 # Single PCIe switch
MTML_TOPOLOGY_MULTIPLE = 2 # Multiple PCIe switches
MTML_TOPOLOGY_HOSTBRIDGE = 3 # Host bridge
MTML_TOPOLOGY_NODE = 4 # Same NUMA node
MTML_TOPOLOGY_SYSTEM = 5 # Different NUMA nodes
P2P Capabilities
MTML_P2P_CAPS_READ = 0 # P2P read capability
MTML_P2P_CAPS_WRITE = 1 # P2P write capability
Error Handling
All functions raise MTMLError exceptions on failure:
try:
device = mtmlLibraryInitDeviceByIndex(99)
except MTMLError as e:
print(f"Error: {e}")
Running Tests
# Run comprehensive MTML API tests
python test_pymtml.py
# Run sglang compatibility tests
python test_sglang_compat.py
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mthreads_ml_py-2.2.11-py3-none-any.whl.
File metadata
- Download URL: mthreads_ml_py-2.2.11-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddd4fd9e7134d8afa9a1d04069793c52f221257adbd7ffb74eaeb7826ced372c
|
|
| MD5 |
355e1971d8c3a2b5515c88bd78ff485e
|
|
| BLAKE2b-256 |
444d2ecce9791f1405af7fea7b54876ac32a6d6e9daf3a7744413ec768cfa2eb
|