CUDA et Programmation Générale sur GPU

Démonstration : Le calcul de hash MD5

Contexte

Une version du code de calcul de hash MD5 de la RSA est disponible à cette adresse : http://majuric.org/software/cudamd5/

Après avoir adapté ce code pour la version 2.0 du SDK pour Mac OS X, les tests suivant ont été fait :

Les tests ont été réalisés sur la machine suivante :

Benchmark hash MD5

On peu remarquer que le calcul sur GPU est bien plus rapide que sur CPU, alors que le code n'est pas optimisé du tout (on voit la différence sur CPU entre cudamd5 est le code de MDCrack qui lui est optimisé).

Ainsi, en optimisant le code, nous pourrions tirer plus de performances de la part du GPU.

En effet, en ajoutant l'option de compilation "--ptxas-options=-v", nous pouvons constater que chaque thread utilise 23 registres et 32 octets de mémoire partagée. Ainsi, la feuille excel de GPU Occupancy Calculator nous indique que le GPU fonctionne à 42% de sa capacité, et que le goulot d'étranglement se situe au niveau du nombre de registres utilisés qui est beaucoup trop important. Une piste d'optimisation serait de réduire l'utilisation de ces registres au profit de la mémoire partagée qui là n'est pas utilisée du tout.