Leçon 9 : Grids et blocks 2D
Les matrices et les images sont naturellement bidimensionnelles, donc CUDA te permet d'organiser les threads en une grid 2D. Au lieu d'une seule dimension x, on a threadIdx.x et threadIdx.y, blockIdx.x et blockIdx.y, ainsi que blockDim.x et blockDim.y. Chaque thread calcule une ligne et une colonne
Un théâtre avec des rangées et des sièges. Pour trouver un siège avec un seul numéro d'affilée, tu comptes : chaque rangée complète apporte width sièges, donc le siège est la rangée multipliée par width plus le numéro de colonne. Chaque placeur (thread) connaît exactement sa propre rangée et sa colonne.
- grid 2D
- Organiser les threads en deux dimensions (x et y), pratique pour les matrices et les images où chaque élément a une ligne et une colonne.
- row et col
- row vient de la dimension y (blockIdx.y, threadIdx.y) et col de la dimension x. Ensemble, elles forment la coordonnée 2D du thread.
- aplatissement row-major
- Convertir (row, col) en un indice plat : idx = row * width + col, parce que la mémoire est stockée ligne après ligne.
- dim3
- Un type à trois composantes (x, y, z) qui décrit la taille d'un block ou d'une grid, par exemple dim3 block(16, 16).