Programmation GPU
Pour traiter sur GPU des données de particules ayant des positions x, y et z, quelle disposition est avantageuse du point de vue de l'accès mémoire coalescé ?
- AUn tableau de structures, avec x, y et z groupés par particule
- BToutes les valeurs dans un ordre aléatoire
- CDes tableaux séparés pour x, pour y et pour z (structure de tableaux plutôt que tableau de structures)
Afficher la réponse et l'explication
Réponse : C. Des tableaux séparés pour x, pour y et pour z (structure de tableaux plutôt que tableau de structures)
Dans un tableau de structures (AoS), les données sont rangées x, y, z de la particule 0, puis x, y, z de la particule 1, etc. ; lorsque chaque thread lit x, les adresses sont espacées de 12 octets. Avec une structure de tableaux (SoA) où les x sont contigus, des threads voisins lisent les x à des adresses voisines et l'accès est coalescé. Pour la même raison, la SoA est aussi souvent avantageuse en SIMD sur CPU.