5 Compilation

NVIDIA, dans son immense bonté, nous fournit un compilateur prévu pour CUDA. Celui-ci dispose d'une interface en ligne de commande simple et comparable à celles que nous connaissons, cl, de Visual Studio, ou gcc, l'interface de GCC. Ce compilateur, nvcc, s'occupe de toutes les étapes de la compilation.

Pour pouvoir définir les portions de code spécifiques à ce compilateur, il définit la macro __CUDACC__.

Comme dit précédemment, il s'occupe de toutes les phases de la compilation : l'assemblage, la compilation, et l'édition des liens. Vous pouvez choisir ces parties grâce à la ligne de commande.

Ce compilateur fonctionne très bien avec les Makefiles, c'est d'ailleurs cette technique qui va être ici développée, compatible avec les chaînes de compilation GNU (make) et Microsoft (nmake).

Vous pouvez aussi utiliser la ligne de commande directement :

nvcc -c cu.cu -o cu.obj
nvcc cu.obj -o apptest

Vous pouvez aussi décider que le code CUDA sera exécuté sur le processeur, qui émulera alors un GPU. Il suffit d'ajouter emu=1 à la ligne de commandes, comme ceci.

make emu=1

On verra plus tard comment compiler avec CMake, et d'ailleurs dans l'exemple on ferra ça.