System Environment Diagnostic and GPU Information Script
This Python script provides a comprehensive overview of the system environment. It displays the Python version, PyTorch details (if installed), the maximum supported CUDA version from nvidia-smi, the installed CUDA Toolkit version (using nvcc), the NVIDIA driver version, and detailed GPU diagnostics such as memory usage and temperatures.
Python
import sys
import subprocess
import re
def get_python_info():
print("===== Python Information =====")
print("Python Version:", sys.version)
print("Implementation:", sys.implementation.name)
print()
def get_torch_info():
try:
import torch
print("===== PyTorch Information =====")
print("Torch Version:", torch.__version__)
cuda_available = torch.cuda.is_available()
print("CUDA Available (torch):", cuda_available)
if cuda_available:
cuda_version = torch.version.cuda
print("Torch CUDA Version:", cuda_version)
print("Number of GPUs:", torch.cuda.device_count())
for i in range(torch.cuda.device_count()):
props = torch.cuda.get_device_properties(i)
print(f"----- GPU {i} -----")
print("Name:", props.name)
print("Total Memory (GB):", round(props.total_memory / (1024**3), 2))
print("Compute Capability:", f"{props.major}.{props.minor}")
print()
except ImportError:
print("PyTorch is not installed.\n")
def get_max_supported_cuda_version():
"""
Parses the maximum supported CUDA version from nvidia-smi output.
This represents the highest CUDA runtime version supported by your driver.
"""
try:
output = subprocess.check_output(["nvidia-smi"], encoding="utf-8")
match = re.search(r"CUDA Version:\s*([\d\.]+)", output)
if match:
cuda_version = match.group(1)
print("Maximum Supported CUDA Version (parsed from nvidia-smi):", cuda_version)
else:
print("Could not parse maximum supported CUDA version from nvidia-smi output.")
except Exception as e:
print("Error retrieving maximum supported CUDA version via nvidia-smi:", e)
print()
def get_installed_cuda_toolkit_version():
"""
Attempts to obtain the installed CUDA Toolkit version by calling nvcc --version.
This is the actual CUDA Toolkit version installed on your system (if any).
"""
try:
output = subprocess.check_output(["nvcc", "--version"], encoding="utf-8")
# Example output line: "Cuda compilation tools, release 12.1, V12.1.105"
match = re.search(r"release\s*([\d\.]+)", output, re.IGNORECASE)
if match:
toolkit_version = match.group(1)
print("Installed CUDA Toolkit Version:", toolkit_version)
else:
print("Could not parse the CUDA Toolkit version from nvcc output.")
except FileNotFoundError:
print("nvcc not found. CUDA Toolkit might not be installed or nvcc is not in PATH.")
except subprocess.CalledProcessError as e:
print("Error calling nvcc:", e)
print()
def get_driver_version():
"""
Extracts and prints the installed NVIDIA driver version from nvidia-smi output.
"""
try:
output = subprocess.check_output(["nvidia-smi"], encoding="utf-8")
match = re.search(r"Driver Version:\s*([\d\.]+)", output)
if match:
driver_version = match.group(1)
print("Installed NVIDIA Driver Version:", driver_version)
else:
print("Could not find the driver version in the nvidia-smi output.")
except FileNotFoundError:
print("nvidia-smi command not found. Make sure you have an NVIDIA GPU and the drivers installed.")
except subprocess.CalledProcessError as e:
print("Error calling nvidia-smi:", e)
print()
def get_nvidia_smi_info():
print("===== NVIDIA SMI Information =====")
try:
output = subprocess.check_output(
[
"nvidia-smi",
"--query-gpu=name,driver_version,memory.total,memory.used,memory.free,utilization.gpu,temperature.gpu",
"--format=csv,noheader,nounits"
],
encoding="utf-8"
)
lines = output.strip().split("\n")
if lines:
for idx, line in enumerate(lines):
details = [d.strip() for d in line.split(",")]
print(f"----- GPU {idx} -----")
print("Name:", details[0])
print("Driver Version:", details[1])
print("Total Memory (MB):", details[2])
print("Used Memory (MB):", details[3])
print("Free Memory (MB):", details[4])
print("GPU Utilization (%):", details[5])
print("Temperature (°C):", details[6])
else:
print("No GPU information returned from nvidia-smi.")
except FileNotFoundError:
print("nvidia-smi command not found. Ensure you have an NVIDIA GPU and the drivers installed.")
except subprocess.CalledProcessError as e:
print("Error calling nvidia-smi:", e)
print()
def main():
get_python_info()
get_torch_info()
get_max_supported_cuda_version()
get_installed_cuda_toolkit_version()
get_driver_version()
get_nvidia_smi_info()
if __name__ == "__main__":
main()