rsnt_translations
56,430
edits
(Created page with "Il manque certainement quelque chose; ce code n’a pas une allure parallèle… Comme solution, modifions le contenu du kernel entre <<< et >>>. <syntaxhighlight lang="cpp"...") |
No edit summary |
||
Line 58: | Line 58: | ||
[[File:Cuda-threads-blocks.png|thumbnail|Figure 1. Les fils sont groupés en blocs qui forment une grille. ]] | [[File:Cuda-threads-blocks.png|thumbnail|Figure 1. Les fils sont groupés en blocs qui forment une grille. ]] | ||
Pour obtenir un parallélisme intensif, on doit utiliser le plus le fils possible; puisqu'un ''kernel'' CUDA comprend un très grand nombre de fils, il faut bien les organiser. Avec CUDA, les fils sont groupés en blocs de fils, eux-mêmes formant une grille. Diviser les fils fait en sorte que : | Pour obtenir un parallélisme intensif, on doit utiliser le plus le fils possible; puisqu'un ''kernel'' CUDA comprend un très grand nombre de fils, il faut bien les organiser. Avec CUDA, les fils sont groupés en blocs de fils, eux-mêmes formant une grille. Diviser les fils fait en sorte que : | ||
*les fils groupés coopèrent via la mémoire partagée, | *les fils groupés coopèrent via la mémoire partagée, | ||
*les fils d'un bloc ne coopèrent pas avec les fils des autres blocs. | *les fils d'un bloc ne coopèrent pas avec les fils des autres blocs. | ||
Selon ce modèle, les fils dans un bloc travaillent sur le même groupe d'instructions (mais peut-être avec des jeux de données différents) et s'échangent les données via la mémoire partagée. Les fils dans les autres blocs font de même (voir la figure). | |||
[[File:Cuda_threads.png|thumbnail|Intercommunication via la mémoire partagée des fils dans un bloc. ]] | |||
[[File:Cuda_threads.png|thumbnail| | |||
Each thread uses IDs to decide what data to work on: | Each thread uses IDs to decide what data to work on: |