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