import glob
import os
import torch
import subprocess
import platform
def get_nvidia_driver_version():
try:
output = subprocess.check_output(["nvidia-smi", "--query-gpu=driver_version", "--format=csv,noheader,nounits"]).decode("utf-8")
return output.strip()
except Exception as e:
return str(e)
def get_cudnn_version():
cudnn_paths = [
"/usr/lib/x86_64-linux-gnu/libcudnn.so.*",
"/usr/local/cuda-*/targets/x86_64-linux/lib/libcudnn.so.*"
]
for path in cudnn_paths:
files = glob.glob(path)
if files:
return files[0]
return "Not found"
def get_gpu_info():
try:
output = subprocess.check_output(["nvidia-smi", "--query-gpu=name", "--format=csv,noheader,nounits"]).decode("utf-8")
return output.strip().split("\n")
except Exception as e:
return [str(e)]
def get_library_versions():
library_versions = {
"pip3": subprocess.check_output(["pip3", "freeze"]).decode("utf-8"),
"conda": subprocess.check_output(["conda", "list"]).decode("utf-8")
}
return library_versions
def main():
print("Collecting environment information...")
print(f"PyTorch version: {torch.__version__}")
print(f"Is debug build: {torch.version.debug}")
print(f"OS: {platform.platform()}")
try:
gcc_version = subprocess.check_output(["gcc", "--version"]).decode("utf-8").splitlines()[0]
print(f"GCC version: {gcc_version}")
except Exception as e:
print(f"GCC version: {e}")
try:
cmake_version = subprocess.check_output(["cmake", "--version"]).decode("utf-8").splitlines()[0]
print(f"CMake version: {cmake_version}")
except Exception as e:
print(f"CMake version: {e}")
print(f"Python version: {platform.python_version()} ({platform.architecture()[0]} runtime)")
print(f"Is CUDA available: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f"CUDA runtime version: {torch.version.cuda}")
print("GPU models and configuration:")
for i, gpu in enumerate(get_gpu_info()):
print(f"GPU {i}: {gpu}")
print(f"Nvidia driver version: {get_nvidia_driver_version()}")
print(f"cuDNN version: {get_cudnn_version()}")
library_versions = get_library_versions()
print("Versions of relevant libraries:")
for source, versions in library_versions.items():
print(f"[{source}] {versions}")
if __name__ == "__main__":
main()