Programmation GPU
Lors du calcul d'un produit de grandes matrices sur GPU, pourquoi découpe-t-on les matrices en petites tuiles chargées en mémoire partagée ?
- APour réutiliser de nombreuses fois en mémoire partagée les données lues en mémoire globale et réduire le nombre d'accès à la mémoire lente
- BPour réduire les valeurs des matrices et éviter les dépassements
- CPour réduire le nombre de calculs et obtenir un résultat approché
Afficher la réponse et l'explication
Réponse : A. Pour réutiliser de nombreuses fois en mémoire partagée les données lues en mémoire globale et réduire le nombre d'accès à la mémoire lente
Dans un produit de matrices, un même élément sert à de nombreux calculs. Écrit naïvement, chaque thread relit à chaque fois depuis la mémoire globale et la bande passante mémoire devient insuffisante. En découpant en tuiles chargées en mémoire partagée, tous les threads du bloc réutilisent la tuile de nombreuses fois, et la quantité lue en mémoire globale diminue proportionnellement à la taille de la tuile. C'est le même principe que le blocage (blocking) pour le cache des CPU.