Il y a une dizaine d'années, plusieurs articles sont parus pour montrer que C++ pouvait avoir des performances égales ou équivalentes au Fortran. En particulier, on pouvait s'appuyer sur la bibliothèque Blitz++ (http://www.oonumerics.org/blitz/).
Depuis, j'ai refait des tests sur plusieurs plateformes. Les performances en Fortran sont bien plus impressionnantes en Fortran 90 qu'en Fortran 77 (un facteur 2 est courant). Même certaines versions "tunées" sont plus lentes que les versions classiques. Cela s'inverse par exemple sur le bench acoustique 2D si on prend un modèle de taille 6500*6500 (donc 100 fois plus important).
Pour en revenir au C++, les performances sont actuellement inférieures à celles de Fortran sur ces benchs avec les compilateurs actuels (ICC 10 ou 11, PGI 8, sur plusieurs plateformes comme les Xeon avec architecture Core, Opteron, Itanium). Même en indiquant au compilateur que les arguments ne peuvent pas être aliasés (-fno-fnalias pour GCC et ICC par exemple, tout en sachantq ue ces options sont dangereuses, ou en utilisant le mot-clé C99 restrict sur des benchs C), il n'est pas toujours possible d'obtenir les mêmes performances qu'en Fortran (sur d'autres benchs).
Ce post est donc proposé ici pour voir quelles sont les solutions pour approcher les performances maximales... Pour l'instant, je n'en ai pas![]()
Partager