Ελπίζω να βοηθήσει κάποιους που χρειάζονται ξεκάθαρη εικόνα αν λειτουργούν όλα όπως πρέπει στο μηχάνημά τους ώστε να μπορούν να χρησιμοποιήσουν εργαλεία LLM κ.α.
Αυτό το script είναι ένα custom diagnostic tool που ελέγχει την κατάσταση του CUDA και του GPU στο σύστημά σας. Συγκεκριμένα:
-
Συστημικές Πληροφορίες:
- Εμφανίζει την έκδοση Python και PyTorch που χρησιμοποιείτε
-
Πληροφορίες NVIDIA:
- Εμφανίζει την έξοδο του
nvidia-smi, που δείχνει την κατάσταση του GPU σας
- Εμφανίζει την έξοδο του
-
Μεταβλητές Περιβάλλοντος CUDA:
- Ελέγχει αν έχουν οριστεί σωστά οι μεταβλητές περιβάλλοντος CUDA_HOME, CUDA_PATH και LD_LIBRARY_PATH
-
Πληροφορίες CUDA στο PyTorch:
- Ελέγχει αν το PyTorch μπορεί να χρησιμοποιήσει το CUDA
- Αν είναι διαθέσιμο, εμφανίζει:
- Το όνομα του GPU
- Αριθμό διαθέσιμων GPUs
- Έκδοση CUDA
- Υποστήριξη για Tensor Cores (για επιταχυνμένα AI/ML)
- Διαθέσιμη μνήμη GPU
- Εκτελεί ένα απλό τεστ πολλαπλασιασμού πινάκων για να επιβεβαιώσει τη λειτουργικότητα
-
Αντιμετώπιση Προβλημάτων:
- Αν το CUDA δεν είναι διαθέσιμο, παρέχει λεπτομερείς οδηγίες για:
- Εγκατάσταση PyTorch με υποστήριξη CUDA
- Εγκατάσταση βιβλιοθηκών CUDA
- Ρύθμιση μεταβλητών περιβάλλοντος για Fish και Bash
- Επαλήθευση του φόρτωσης του driver NVIDIA
- Αν το CUDA δεν είναι διαθέσιμο, παρέχει λεπτομερείς οδηγίες για:
Είναι ένα πολύ χρήσιμο εργαλείο για να διαγνώσετε προβλήματα με το CUDA και να βεβαιωθείτε ότι το σύστημά σας είναι σωστά ρυθμισμένο για χρήση με PyTorch και άλλα εργαλεία που απαιτούν CUDA.
Στη δική μου περίπτωση, έδωσε το παρακάτω αποτέλεσμα :
Αποτέλεσμα μου (click to expand)
=== CUDA and GPU Information ===
=== System Information ===
Python Version: 3.13.2 (main, Mar 6 2025, 06:42:22) [GCC 14.2.1 20250207]
PyTorch Version: 2.6.0
=== NVIDIA Information ===
NVIDIA-SMI Output:
Wed Mar 19 16:40:37 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.124.04 Driver Version: 570.124.04 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4080 ... Off | 00000000:09:00.0 On | N/A |
| 0% 34C P8 15W / 320W | 1389MiB / 16376MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 2430 G /usr/bin/kwalletd6 3MiB |
| 0 N/A N/A 2467 G /usr/bin/kwin_wayland 53MiB |
| 0 N/A N/A 2543 G /usr/bin/Xwayland 4MiB |
| 0 N/A N/A 2580 G /usr/bin/ksmserver 3MiB |
| 0 N/A N/A 2582 G /usr/bin/kded6 3MiB |
| 0 N/A N/A 2607 G /usr/bin/plasmashell 165MiB |
| 0 N/A N/A 2642 G /usr/bin/kaccess 3MiB |
| 0 N/A N/A 2643 G ...it-kde-authentication-agent-1 3MiB |
| 0 N/A N/A 2645 G /usr/lib/xdg-desktop-portal-kde 3MiB |
| 0 N/A N/A 2761 G /usr/bin/kdeconnectd 3MiB |
| 0 N/A N/A 2821 G /usr/bin/yakuake 3MiB |
| 0 N/A N/A 2833 G /usr/lib/DiscoverNotifier 3MiB |
| 0 N/A N/A 3021 G ktailctl 3MiB |
| 0 N/A N/A 3162 G /usr/bin/rustdesk 40MiB |
| 0 N/A N/A 3164 G /usr/bin/telegram-desktop 139MiB |
| 0 N/A N/A 3366 G /usr/lib/floorp/floorp 66MiB |
| 0 N/A N/A 4185 G ...Ptr --variations-seed-version 80MiB |
| 0 N/A N/A 4984 G ...ess --variations-seed-version 41MiB |
| 0 N/A N/A 13094 G grass 3MiB |
| 0 N/A N/A 17685 G /usr/lib/thunderbird/thunderbird 138MiB |
| 0 N/A N/A 19475 G /usr/lib/baloorunner 3MiB |
| 0 N/A N/A 33722 G /usr/bin/dolphin 3MiB |
| 0 N/A N/A 33730 G /usr/bin/dolphin 3MiB |
| 0 N/A N/A 34091 G ...ess --variations-seed-version 205MiB |
+-----------------------------------------------------------------------------------------+
=== CUDA Environment Variables ===
CUDA_HOME: /opt/cuda
CUDA_PATH: /opt/cuda
LD_LIBRARY_PATH: /tmp/.mount_cursorURtVs6/usr/lib/:/tmp/.mount_cursorURtVs6/usr/lib32/:/tmp/.mount_cursorURtVs6/usr/lib64/:/tmp/.mount_cursorURtVs6/lib/:/tmp/.mount_cursorURtVs6/lib/i386-linux-gnu/:/tmp/.mount_cursorURtVs6/lib/x86_64-linux-gnu/:/tmp/.mount_cursorURtVs6/lib/aarch64-linux-gnu/:/tmp/.mount_cursorURtVs6/lib32/:/tmp/.mount_cursorURtVs6/lib64/:
=== PyTorch CUDA Information ===
CUDA Available: ✓
GPU Information:
Device Name: NVIDIA GeForce RTX 4080 SUPER
Device Count: 1
Current Device: 0
CUDA Version: 12.8
Compute Capability: 8.9
Tensor Cores Available: ✓
Note: Your GPU supports Tensor Cores for accelerated AI/ML operations
Total GPU Memory: 15.58 GB
CUDA Test: ✓ (Matrix multiplication successful)
Και παραθέτω το ουσιαστικό python script
Python script (click to expand)
import torch
import sys
import subprocess
import os
from typing import Tuple
def run_command(command: str) -> str:
"""Run a shell command and return its output."""
try:
result = subprocess.run(command, shell=True, capture_output=True, text=True)
return result.stdout.strip()
except Exception as e:
return f"Error running command: {str(e)}"
def check_cuda_availability() -> None:
"""Check and display CUDA and GPU information."""
print("\n=== CUDA and GPU Information ===\n")
# Check system information first
print("=== System Information ===")
print(f"Python Version: {sys.version}")
print(f"PyTorch Version: {torch.__version__}")
# Check NVIDIA driver and CUDA installation
print("\n=== NVIDIA Information ===")
nvidia_smi = run_command("nvidia-smi")
print("NVIDIA-SMI Output:")
print(nvidia_smi)
# Check CUDA environment variables
print("\n=== CUDA Environment Variables ===")
cuda_home = os.environ.get('CUDA_HOME', 'Not set')
cuda_path = os.environ.get('CUDA_PATH', 'Not set')
ld_library_path = os.environ.get('LD_LIBRARY_PATH', 'Not set')
print(f"CUDA_HOME: {cuda_home}")
print(f"CUDA_PATH: {cuda_path}")
print(f"LD_LIBRARY_PATH: {ld_library_path}")
# Check if CUDA is available in PyTorch
print("\n=== PyTorch CUDA Information ===")
cuda_available = torch.cuda.is_available()
print(f"CUDA Available: {'✓' if cuda_available else '✗'}")
if cuda_available:
# Get current device information
current_device = torch.cuda.current_device()
device_name = torch.cuda.get_device_name(current_device)
device_count = torch.cuda.device_count()
print("\nGPU Information:")
print(f"Device Name: {device_name}")
print(f"Device Count: {device_count}")
print(f"Current Device: {current_device}")
# Get CUDA version
cuda_version = torch.version.cuda
print(f"CUDA Version: {cuda_version}")
# Check for Tensor Cores
compute_capability = torch.cuda.get_device_capability(current_device)
has_tensor_cores = compute_capability[0] >= 7 # Ampere and newer architectures
print(f"\nCompute Capability: {compute_capability[0]}.{compute_capability[1]}")
print(f"Tensor Cores Available: {'✓' if has_tensor_cores else '✗'}")
if has_tensor_cores:
print("Note: Your GPU supports Tensor Cores for accelerated AI/ML operations")
# Get available memory
total_memory = torch.cuda.get_device_properties(current_device).total_memory / 1024**3 # Convert to GB
print(f"\nTotal GPU Memory: {total_memory:.2f} GB")
# Test CUDA with a simple operation
try:
x = torch.rand(5, 5).cuda()
y = torch.rand(5, 5).cuda()
torch.matmul(x, y) # Perform operation without storing result
print("\nCUDA Test: ✓ (Matrix multiplication successful)")
except RuntimeError as e:
print(f"\nCUDA Test: ✗ (Runtime Error: {str(e)})")
except Exception as e:
print(f"\nCUDA Test: ✗ (Unexpected Error: {str(e)})")
else:
print("\nNo CUDA-capable GPU found or CUDA is not properly installed.")
print("Please check the following for CachyOS:")
print("\n1. Install PyTorch with CUDA support:")
print(" sudo pacman -S python-pytorch python-pytorch-cuda")
print("\n2. Install CUDA libraries:")
print(" sudo pacman -S cuda")
print("\n3. Set up environment variables:")
print("\n For Fish shell (add to ~/.config/fish/config.fish):")
print(" set -Ux CUDA_HOME /opt/cuda")
print(" set -Ux PATH $CUDA_HOME/bin $PATH")
print(" set -Ux LD_LIBRARY_PATH $CUDA_HOME/lib64 $LD_LIBRARY_PATH")
print("\n For Bash (add to ~/.bashrc):")
print(" export CUDA_HOME=/opt/cuda")
print(" export PATH=$CUDA_HOME/bin:$PATH")
print(" export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH")
print("\n4. After setting environment variables:")
print(" - For Fish: Restart terminal or run 'source ~/.config/fish/config.fish'")
print(" - For Bash: Restart terminal or run 'source ~/.bashrc'")
print("\n5. Verify NVIDIA driver is loaded:")
print(" lsmod | grep nvidia")
if __name__ == "__main__":
try:
check_cuda_availability()
except Exception as e:
print(f"\nError occurred: {str(e)}")
sys.exit(1)
Δημιουργήθηκε με την βοήθεια του Cursor σε AppImage σε cachyOS Arch Linux.
