Skip to content

Hardware

CPU vs GPU

  • CPU:
    • très bon pour faire plein de choses différentes, mais une à la fois ou quelques-unes en même temps
    • moins de cœurs, mais très intelligents (= beaucoup d'inscrutions)
somme = 0
for i in range(5):
    somme += i
  • GPU:
    • spécialisé pour les images et les calculs en masse
    • peut faire plein de petites tâches très simples en même temps
    • beaucoup de cœurs, mais plus simples (= moins d'instructions) et surtout des instructions spécialisées pour le calcul mathématique et calcul parallèle
    • Très utile pour faire de grand volume de calcul en parallèle
      • ex: faire des calculs pour chaque itération d'une liste
      • Permet de faire en parallèle ces calculs sur une partie de la liste puis passe à la partie suivante etc
    • Requiert cependant qu'il n'y ait pas de dépendance entre les calculs parallèles
for i in range(5):
    C[i] = A[i] + B[i]
  • Cas typiques où on calcule en parallèle :
    • Ajouter ou multiplier des éléments de tableaux (sans interdependance)
    • Appliquer un filtre sur une image (chaque pixel est traité indépendamment)
    • Simuler des milliers de particules
    • Calculer des résultats pour chaque utilisateur d’une appli en même temps
    • Compression de plusieurs fichiers
    • Statistiques sur des populations distinctes
    • Réseaux de neurones

Dev GPU

  • Utiliser soit:
  • Le language du fabricant: CUDA (Compute Unified Device Architecture) pour nVidia
  • Une librairie qui encapsule l'utilisation du GPU: PyTorch et instruction .cuda(), TensorFlow