AdriBat1
Implement and verify remote persistence workflow
979e977
#!/usr/bin/env python3
"""
Test GPU Client (Antigravity Version)
=====================================
Questo script usa la libreria 'antigravity' per verificare la GPU remota.
"""
from antigravity_sdk import RemoteGPU
# Codice di verifica da eseguire sul server
REMOTE_CHECK_CODE = r'''
import torch
import sys
import time
print("=" * 60)
print("🔍 REMOTE GPU DEEP CHECK")
print("=" * 60)
# 1. Verifica disponibilità CUDA
print(f" PyTorch version: {torch.__version__}")
print(f" CUDA disponibile: {torch.cuda.is_available()}")
if torch.cuda.is_available():
print(f" CUDA version: {torch.version.cuda}")
print(f" Numero GPU: {torch.cuda.device_count()}")
# 2. Informazioni sulla GPU
print("\n🎮 Dettagli GPU:")
for i in range(torch.cuda.device_count()):
props = torch.cuda.get_device_properties(i)
print(f" GPU {i}: {props.name}")
print(f" - Memoria Totale: {props.total_memory / 1024**3:.2f} GB")
print(f" - Multi-Processors: {props.multi_processor_count}")
# 3. Test calcolo tensoriale
print("\n⚡ Test Calcolo Tensoriale:")
size = 4000
print(f" Matrice {size}x{size} (Float32)...")
device = torch.device("cuda")
try:
a = torch.randn(size, size, device=device)
b = torch.randn(size, size, device=device)
# Warmup
torch.matmul(a[:100,:100], b[:100,:100])
torch.cuda.synchronize()
start = time.time()
c = torch.matmul(a, b)
torch.cuda.synchronize()
elapsed = time.time() - start
print(f" ✅ Calcolo completato in {elapsed:.4f} secondi")
print(f" 🚀 Speed: { (2*size**3) / (elapsed * 1e12):.2f} TFLOPS (approx)")
except Exception as e:
print(f" ❌ Errore Calcolo: {e}")
# 4. Verifica memoria
print("\n💾 Utilizzo Memoria GPU:")
allocated = torch.cuda.memory_allocated() / 1024**3
print(f" Allocata: {allocated:.2f} GB")
print("\n" + "=" * 60)
print("✅ GPU REMOTA PIENAMENTE OPERATIVA")
print("=" * 60)
# 5. Genera Plot di prova (così il client ha qualcosa da scaricare)
print("\n🎨 Generazione Grafico di Test...")
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 4))
plt.bar(['MatMul GPU'], [elapsed], color='green')
plt.title(f'GPU Computation Time: {elapsed:.4f}s')
plt.ylabel('Seconds')
plt.savefig('gpu_test_plot.png')
print("📦 Grafico salvato: gpu_test_plot.png")
else:
print("\n❌ CUDA NON DISPONIBILE - Running on CPU")
sys.exit(1)
'''
def main():
print("🚀 Connecting using 'antigravity' library...")
try:
# Inizializza client (URL default)
gpu = RemoteGPU()
# Esegue codice
result = gpu.run(REMOTE_CHECK_CODE)
# Il risultato viene già stampato se verbose=True (default),
# ma per sicurezza controlliamo l'output
if "GPU REMOTA PIENAMENTE OPERATIVA" in result.output:
print("\n🎉 GREAT SUCCESS! La libreria funziona e la GPU risponde.")
else:
print("\n⚠️ Il test non sembra aver confermato la GPU (controlla output sopra).")
except Exception as e:
print(f"❌ Errore Libreria: {e}")
if __name__ == "__main__":
main()