Programmation GPU
Lors de la transposition d'une grande matrice sur GPU (b[j][i] = a[i][j]), quel est l'objectif principal du passage par la mémoire partagée ?
- ADiviser par deux le nombre de calculs de transposition
- BTrier les valeurs de la matrice en ordre croissant en mémoire partagée
- CLire les tuiles par ligne en accès coalescé, changer leur orientation en mémoire partagée et rendre aussi l'écriture coalescée
Afficher la réponse et l'explication
Réponse : C. Lire les tuiles par ligne en accès coalescé, changer leur orientation en mémoire partagée et rendre aussi l'écriture coalescée
Écrit naïvement, la lecture de a par ligne est coalescée, mais l'écriture dans b se fait par colonne, à des adresses espacées, ce qui ralentit. En chargeant une tuile en mémoire partagée puis en permutant l'affectation des threads pour la relire, lectures et écritures en mémoire globale portent sur des adresses contiguës. On y associe l'allocation d'une colonne supplémentaire pour éviter les conflits de banc lors de la lecture par colonne en mémoire partagée.