J'ai un simple code Fortran qui effectuent la multiplication de matrices et il est parallélisée avec OpenMP comme celui-cimorceau OpenMP et la taille du cache
!$OMP PARALLEL DO PRIVATE(...) SHARED(...) SCHEDULE(STATIC,N/128)
Pour la taille du morceau relativement grand et le nombre de morceaux multiples de nombre de processeurs (4 , 8,16, etc.)
Cependant, lorsque la taille de la matrice devient très importante, il semble plus logique de définir une taille de segment plus petite que la taille du cache (au moins, cela vaut la peine d'essayer). Existe-t-il un moyen simple d'écrire un code portable qui prenne en compte la taille du cache du processeur? Ou ce n'est pas supporté par OpenMP?
Je vous suggère de mettre en place un petit test au début de votre programme. Il exécutera une version réduite de votre tâche pour plusieurs tailles de blocs et déterminera la taille optimale en fonction de l'heure de l'horloge. –