Cuda / Tensor Cores Check Script

Ελπίζω να βοηθήσει κάποιους που χρειάζονται ξεκάθαρη εικόνα αν λειτουργούν όλα όπως πρέπει στο μηχάνημά τους ώστε να μπορούν να χρησιμοποιήσουν εργαλεία LLM κ.α.

Αυτό το script είναι ένα custom diagnostic tool που ελέγχει την κατάσταση του CUDA και του GPU στο σύστημά σας. Συγκεκριμένα:

  1. Συστημικές Πληροφορίες:

    • Εμφανίζει την έκδοση Python και PyTorch που χρησιμοποιείτε
  2. Πληροφορίες NVIDIA:

    • Εμφανίζει την έξοδο του nvidia-smi, που δείχνει την κατάσταση του GPU σας
  3. Μεταβλητές Περιβάλλοντος CUDA:

    • Ελέγχει αν έχουν οριστεί σωστά οι μεταβλητές περιβάλλοντος CUDA_HOME, CUDA_PATH και LD_LIBRARY_PATH
  4. Πληροφορίες CUDA στο PyTorch:

    • Ελέγχει αν το PyTorch μπορεί να χρησιμοποιήσει το CUDA
    • Αν είναι διαθέσιμο, εμφανίζει:
      • Το όνομα του GPU
      • Αριθμό διαθέσιμων GPUs
      • Έκδοση CUDA
      • Υποστήριξη για Tensor Cores (για επιταχυνμένα AI/ML)
      • Διαθέσιμη μνήμη GPU
    • Εκτελεί ένα απλό τεστ πολλαπλασιασμού πινάκων για να επιβεβαιώσει τη λειτουργικότητα
  5. Αντιμετώπιση Προβλημάτων:

    • Αν το CUDA δεν είναι διαθέσιμο, παρέχει λεπτομερείς οδηγίες για:
      • Εγκατάσταση PyTorch με υποστήριξη CUDA
      • Εγκατάσταση βιβλιοθηκών CUDA
      • Ρύθμιση μεταβλητών περιβάλλοντος για Fish και Bash
      • Επαλήθευση του φόρτωσης του driver NVIDIA

Είναι ένα πολύ χρήσιμο εργαλείο για να διαγνώσετε προβλήματα με το 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.

4 «Μου αρέσει»


Δημιουργήθηκε με την βοήθεια του Spectacle σε cachyOS Arch Linux.

3 «Μου αρέσει»