Bande passante : quantité de données transférées par unité de temps.
Manque : Actual data throughput vs. effective bandwidth
Entre RAM et GPU, interne au GPU (shared, globale, locale) et entre GPU et externe (GPU Directe).
Théorique : avec largeur du bus mémoire et fréquence du bus. Accessible via cudaGetDeviceProperties() (propriétés memoryClockRate et memoryBusWidth ).
2.0 * memoryClockRate * (memoryBusWidth / 8) * 1.e-6
en GB/s (Go/s). Facteur 2.0 = double data rate par clock.
Influence de nombre de kernels, taille blocs et tableau, code de correction des erreurs, coallescence des données.
Avec données de taille connu, mesure du temps total de transfert. Formule (Go/s) (R_B et W_B en octets par kernel) :
Mesurer débit théorique et effectif et ratio.
Création de 3 kernels : normal, math et mémoire. Si mémoire proche de 100% et supér.3.ieur à math, alors limitation à cause de la bande passante.
Coalescence des données, chargement par bloc.