ids.alfacom.it/extracted_idf/install_cuda_almalinux_fixed.sh
marco370 0bfe3258b5 Saved progress at the end of the loop
Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 7a657272-55ba-4a79-9a2e-f1ed9bc7a528
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 1c71ce6e-1a3e-4f53-bb5d-77cdd22b8ea3
2025-11-11 09:15:10 +00:00

300 lines
9.9 KiB
Bash

#!/bin/bash
# =========================================================================
# SCRIPT INSTALLAZIONE CUDA + TENSORFLOW GPU SU ALMALINUX 9.6
# VERSIONE CORRETTA - GESTISCE DRIVER NVIDIA GIÀ INSTALLATI
# =========================================================================
set -e
echo "🐧 CONFIGURAZIONE CUDA + TENSORFLOW GPU - ALMALINUX 9.6 (FIXED)"
echo "================================================================"
# Verifica sistema
echo "📋 Verifica sistema..."
cat /etc/redhat-release
uname -r
# Verifica driver NVIDIA esistenti
echo "🎮 Verifica driver NVIDIA esistenti..."
if command -v nvidia-smi &> /dev/null; then
echo "✅ Driver NVIDIA già installati:"
nvidia-smi --query-gpu=name,driver_version --format=csv,noheader,nounits
NVIDIA_ALREADY_INSTALLED=true
else
echo "❌ Driver NVIDIA non trovati"
NVIDIA_ALREADY_INSTALLED=false
fi
# 1. AGGIORNAMENTO SISTEMA (con skip dei conflitti)
echo "🔄 Aggiornamento sistema (skip conflitti)..."
sudo dnf update -y --skip-broken
# 2. INSTALLAZIONE REPOSITORY EPEL
echo "📦 Installazione EPEL..."
sudo dnf install -y epel-release
# 3. INSTALLAZIONE STRUMENTI SVILUPPO
echo "🔧 Installazione strumenti sviluppo..."
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y kernel-devel kernel-headers gcc gcc-c++ make dkms
# 4. CONFIGURAZIONE REPOSITORY CUDA (senza reinstallare driver)
echo "🚀 Configurazione repository CUDA..."
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
# 5. INSTALLAZIONE CUDA TOOLKIT COMPATIBILE
echo "🚀 Installazione CUDA Toolkit (compatibile con driver esistenti)..."
if [ "$NVIDIA_ALREADY_INSTALLED" = true ]; then
echo "✅ Driver esistenti rilevati - installazione solo CUDA Toolkit"
# Installa solo CUDA Toolkit senza driver
sudo dnf install -y cuda-toolkit-12-4 --exclude="nvidia-driver*,xorg-x11-drv-nvidia*,nvidia-modprobe,nvidia-persistenced,nvidia-settings"
# Oppure prova versione specifica compatibile
if [ $? -ne 0 ]; then
echo "⚠️ Tentativo installazione CUDA 12.2 (compatibile con driver 550)..."
sudo dnf install -y cuda-toolkit-12-2 --exclude="nvidia-driver*,xorg-x11-drv-nvidia*,nvidia-modprobe,nvidia-persistenced,nvidia-settings"
fi
else
echo "❌ Driver NVIDIA non installati - installazione completa necessaria"
# Disabilita nouveau prima
sudo tee /etc/modprobe.d/blacklist-nouveau.conf <<EOF
blacklist nouveau
options nouveau modeset=0
EOF
sudo dracut --force
# Installazione completa
sudo dnf install -y cuda-toolkit-12-4
fi
# 6. CONFIGURAZIONE VARIABILI AMBIENTE
echo "🌍 Configurazione variabili ambiente..."
# Trova la versione CUDA installata
CUDA_VERSION=""
if [ -d "/usr/local/cuda-12.4" ]; then
CUDA_VERSION="12.4"
elif [ -d "/usr/local/cuda-12.2" ]; then
CUDA_VERSION="12.2"
elif [ -d "/usr/local/cuda" ]; then
CUDA_VERSION="$(basename $(readlink -f /usr/local/cuda) | sed 's/cuda-//')"
fi
if [ -n "$CUDA_VERSION" ]; then
echo "✅ CUDA $CUDA_VERSION rilevato"
sudo tee /etc/profile.d/cuda.sh <<EOF
export CUDA_HOME=/usr/local/cuda-$CUDA_VERSION
export PATH=\$CUDA_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$CUDA_HOME/lib64:\$LD_LIBRARY_PATH
export CUDA_PATH=\$CUDA_HOME
EOF
else
echo "⚠️ Versione CUDA non rilevata - configurazione generica"
sudo tee /etc/profile.d/cuda.sh <<EOF
export CUDA_HOME=/usr/local/cuda
export PATH=\$CUDA_HOME/bin:\$PATH
export LD_LIBRARY_PATH=\$CUDA_HOME/lib64:\$LD_LIBRARY_PATH
export CUDA_PATH=\$CUDA_HOME
EOF
fi
# Carica variabili ambiente
source /etc/profile.d/cuda.sh
# 7. VERIFICA INSTALLAZIONE
echo "🧪 Verifica installazione CUDA..."
if command -v nvcc &> /dev/null; then
echo "✅ NVCC installato:"
nvcc --version
else
echo "❌ NVCC non trovato - problemi installazione CUDA"
fi
# 8. DOWNLOAD cuDNN (manuale)
echo "📚 Configurazione cuDNN..."
echo "⚠️ SCARICA MANUALMENTE cuDNN da: https://developer.nvidia.com/cudnn"
echo " 1. Registrati/Login su NVIDIA Developer"
echo " 2. Scarica cuDNN per CUDA $CUDA_VERSION"
echo " 3. Estrai e copia:"
echo " tar -xzf cudnn-linux-x86_64-*-archive.tar.xz"
echo " sudo cp cudnn-linux-x86_64-*/include/cudnn*.h /usr/local/cuda/include"
echo " sudo cp -P cudnn-linux-x86_64-*/lib/libcudnn* /usr/local/cuda/lib64"
echo " sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*"
# 9. PYTHON E TENSORFLOW
echo "🐍 Configurazione Python e TensorFlow..."
# Verifica Python
python3 --version
pip3 --version
# Upgrade pip
pip3 install --upgrade pip
# Installazione TensorFlow GPU compatibile
echo "🤖 Installazione TensorFlow GPU..."
# Sceglie versione TensorFlow compatibile con CUDA
if [ "$CUDA_VERSION" = "12.4" ]; then
pip3 install tensorflow[and-cuda]==2.17.*
elif [ "$CUDA_VERSION" = "12.2" ]; then
pip3 install tensorflow[and-cuda]==2.16.*
else
pip3 install tensorflow[and-cuda] # Ultima versione disponibile
fi
# 10. CREAZIONE SCRIPT TEST
echo "🧪 Creazione script test..."
cat > test_cuda_production.py <<'PYEOF'
#!/usr/bin/env python3
"""
Test configurazione CUDA per sistema DDoS v04 su AlmaLinux 9.6
"""
import tensorflow as tf
import os
import subprocess
print("🔍 TEST CUDA PRODUZIONE - ALMALINUX 9.6")
print("=" * 45)
# Info sistema
print("📋 SISTEMA:")
try:
result = subprocess.run(['cat', '/etc/redhat-release'], capture_output=True, text=True)
print(f" OS: {result.stdout.strip()}")
except:
print(" OS: Non rilevato")
# Info NVIDIA
print("\n🎮 NVIDIA:")
try:
result = subprocess.run(['nvidia-smi', '--query-gpu=name,driver_version,memory.total', '--format=csv,noheader,nounits'],
capture_output=True, text=True)
if result.returncode == 0:
for line in result.stdout.strip().split('\n'):
gpu_info = line.split(', ')
if len(gpu_info) >= 3:
print(f" GPU: {gpu_info[0]}")
print(f" Driver: {gpu_info[1]}")
print(f" Memory: {gpu_info[2]} MB")
else:
print(" nvidia-smi non disponibile")
except:
print(" Errore verifica NVIDIA")
# Info CUDA
print(f"\n🚀 CUDA:")
try:
result = subprocess.run(['nvcc', '--version'], capture_output=True, text=True)
if result.returncode == 0:
for line in result.stdout.split('\n'):
if 'release' in line:
print(f" NVCC: {line.strip()}")
break
else:
print(" NVCC non disponibile")
except:
print(" NVCC non trovato")
# Info TensorFlow
print(f"\n🤖 TENSORFLOW:")
print(f" Version: {tf.__version__}")
print(f" CUDA built: {tf.test.is_built_with_cuda()}")
# GPU devices
gpus = tf.config.list_physical_devices('GPU')
print(f" GPU devices: {len(gpus)}")
if gpus:
for i, gpu in enumerate(gpus):
print(f" GPU {i}: {gpu}")
# Test computation
print(f"\n🧪 TEST COMPUTAZIONE:")
try:
with tf.device('/GPU:0'):
# Test specifico per sistema DDoS v04
print(" Test matrice 1000x1000...")
start = tf.timestamp()
a = tf.random.normal([1000, 1000])
b = tf.random.normal([1000, 1000])
c = tf.matmul(a, b)
end = tf.timestamp()
gpu_time = (end - start).numpy()
print(f" ✅ GPU time: {gpu_time:.4f}s")
# Test batch processing (simula sistema v04)
print(" Test batch DDoS v04 (176 features, 1000 samples)...")
start = tf.timestamp()
features = tf.random.normal([1000, 176]) # Simula feature v04
result = tf.nn.relu(tf.matmul(features, tf.random.normal([176, 64])))
end = tf.timestamp()
batch_time = (end - start).numpy()
throughput = 1000 / batch_time
print(f" ✅ Batch time: {batch_time:.4f}s")
print(f" ✅ Throughput: {throughput:.0f} campioni/sec")
except Exception as e:
print(f" ❌ Errore test GPU: {e}")
else:
print(" ❌ Nessuna GPU TensorFlow trovata")
# Test cuDNN
print(f"\n📚 CUDNN:")
try:
cuda_build_info = tf.sysconfig.get_build_info()
cuda_version = cuda_build_info.get('cuda_version', 'N/A')
cudnn_version = cuda_build_info.get('cudnn_version', 'N/A')
print(f" CUDA version: {cuda_version}")
print(f" cuDNN version: {cudnn_version}")
except:
print(" Info non disponibili")
print(f"\n🎯 STATUS:")
if gpus and tf.test.is_built_with_cuda():
print(" ✅ SISTEMA PRONTO PER DDoS DETECTION v04 GPU")
print(" 🚀 Comandi raccomandati:")
print(" python3 analisys_04.py --max-records 1000000 --memory-optimize")
print(" python3 detect_multi_04.py --advanced --batch-size 2000")
else:
print(" ⚠️ Sistema in modalità CPU - performance ridotte")
PYEOF
chmod +x test_cuda_production.py
# 11. CONFIGURAZIONE SISTEMD PER NVIDIA PERSISTENCE
echo "🔧 Configurazione NVIDIA Persistence..."
if [ "$NVIDIA_ALREADY_INSTALLED" = true ]; then
sudo systemctl enable nvidia-persistenced 2>/dev/null || echo "nvidia-persistenced non disponibile"
sudo systemctl start nvidia-persistenced 2>/dev/null || echo "nvidia-persistenced non avviabile"
fi
echo ""
echo "✅ INSTALLAZIONE COMPLETATA!"
echo "================================"
echo ""
echo "📋 VERIFICA IMMEDIATA:"
echo "1. Test driver: nvidia-smi"
echo "2. Test CUDA: nvcc --version"
echo "3. Test completo: python3 test_cuda_production.py"
echo ""
echo "⚠️ SE cuDNN NON È INSTALLATO:"
echo " Scarica da: https://developer.nvidia.com/cudnn"
echo " Segui le istruzioni mostrate sopra"
echo ""
echo "🚀 SISTEMA DDoS DETECTION v04:"
echo " export TF_GPU_MEMORY_GROWTH=1"
echo " export CUDA_VISIBLE_DEVICES=0"
echo " python3 analisys_04.py --max-records 1000000"
echo ""
echo "🎯 OTTIMIZZAZIONI TESLA M60:"
echo " - Batch size raccomandato: 1000-2000"
echo " - Memory limit: 6GB/8GB disponibili"
echo " - Throughput atteso: 10k+ campioni/sec"