Code source de services.api_modelisation.tests.test_cuda

"""
Version: 1.0.0 (2023-12-23)
Auteur: Kahina et franck - Groupe 2
Contact: bigmoletos@yopmail.com

Script de test de la configuration CUDA pour le GPU.

Ce module vérifie la disponibilité et le bon fonctionnement de CUDA
pour les calculs GPU. Il teste:
- La configuration de l'environnement CUDA
- Les opérations de base sur GPU
- Les performances de calcul matriciel

Architecture:
------------
1. Vérification environnement:
   - Variables d'environnement CUDA
   - Chemins des bibliothèques
   - Version du runtime

2. Tests fonctionnels:
   - Opérations basiques
   - Calculs matriciels
   - Synchronisation GPU

3. Validation performance:
   - Multiplication de matrices
   - Utilisation mémoire
   - Temps d'exécution

Utilisation:
-----------
    python test_cuda.py

Prérequis:
---------
    - CUDA Toolkit installé
    - CuPy
    - Pilotes NVIDIA à jour
"""

import cupy as cp
import numpy as np
import os


[docs] def test_cuda(): """ Teste la configuration et les performances CUDA. Cette fonction: 1. Vérifie l'environnement CUDA 2. Teste les opérations GPU basiques 3. Évalue les performances Processus: --------- 1. Vérification: - Variables d'environnement - Version CUDA - Nombre de GPUs 2. Tests: - Opérations simples (carré) - Multiplication de matrices - Synchronisation GPU 3. Performance: - Matrices 1000x1000 - Multiplication - Synchronisation Returns: ------- bool True si tous les tests passent False en cas d'erreur Notes: ----- - Affiche les informations de debug - Teste la multiplication de matrices - Vérifie la synchronisation """ try: # Afficher les informations sur l'environnement print("Environment variables:") print(f"CUDA_PATH: {os.environ.get('CUDA_PATH', 'Not set')}") print( f"LD_LIBRARY_PATH: {os.environ.get('LD_LIBRARY_PATH', 'Not set')}") # Test simple CUDA operation x_gpu = cp.array([1, 2, 3, 4, 5]) y_gpu = cp.square(x_gpu) # Afficher les informations CUDA print("\nCUDA Information:") print(f"CUDA version: {cp.cuda.runtime.runtimeGetVersion()}") print(f"CuPy version: {cp.__version__}") print(f"Number of GPU devices: {cp.cuda.runtime.getDeviceCount()}") # Tester la performance print("\nPerformance test:") a = cp.random.rand(1000, 1000) b = cp.random.rand(1000, 1000) c = cp.matmul(a, b) cp.cuda.Stream.null.synchronize() print("CUDA Test successful! Matrix multiplication completed.") return True except Exception as e: print(f"\nCUDA Test failed: {str(e)}") return False
if __name__ == "__main__": test_cuda()