Programmation GPU
Quelle est la définition des conflits de banc (bank conflicts) de la mémoire partagée CUDA ?
- AUn problème de deux GPU utilisant le même compte bancaire
- BUn problème d'arrêt du programme par manque de capacité de la mémoire partagée
- CLa mémoire partagée étant divisée en 32 bancs, lorsque plusieurs threads d'un warp accèdent simultanément à des adresses différentes d'un même banc, les accès sont sérialisés et ralentis
Afficher la réponse et l'explication
Réponse : C. La mémoire partagée étant divisée en 32 bancs, lorsque plusieurs threads d'un warp accèdent simultanément à des adresses différentes d'un même banc, les accès sont sérialisés et ralentis
La mémoire partagée est constituée de 32 bancs attribués successivement tous les 4 octets, chaque banc ne pouvant accéder qu'à une adresse à la fois. Si les 32 threads d'un warp utilisent des bancs différents, un seul accès suffit ; si deux threads accèdent à des adresses différentes d'un même banc, l'accès se fait en deux fois. Par exemple, une lecture tous les 32 éléments concentre tous les threads sur un même banc et l'accès se scinde en 32. Lorsque tous lisent la même adresse, la valeur est diffusée à tous et il n'y a pas de conflit.