Leçon 35 : cuBLAS, Thrust et quand ne pas écrire de kernel
Tout au long du cours, on a écrit pas mal de kernels à la main — somme de vecteurs, réduction, multiplication de matrices. Mais pour les opérations standard, NVIDIA et la communauté CUDA ont déjà écrit des implémentations agressivement optimisées pendant des années : cuBLAS pour l'algèbre linéaire (
Avant de construire une scie électrique à partir de zéro pour couper une planche, vérifie s'il n'y en a pas déjà une excellente dans le magasin. cuBLAS et Thrust sont les outils professionnels déjà faits : pour les opérations courantes, ils sont presque toujours meilleurs que tout ce que tu peux construire seul en une nuit.
- cuBLAS
- La bibliothèque de NVIDIA pour l'algèbre linéaire sur le GPU. Inclut sgemm (multiplication de matrices) et plus, ajustée pour la performance maximale.
- Thrust
- Une bibliothèque C++ de style STL pour CUDA : thrust::reduce, thrust::sort, thrust::transform et plus, tournant sur le GPU.
- thrust::reduce
- Effectue une réduction (par exemple, une somme) sur un intervalle, sur le GPU, en une seule ligne — remplaçant un kernel de réduction écrit à la main.
- thrust::device_vector
- Un conteneur Thrust qui vit dans la mémoire du device et gère l'allocation/libération automatiquement, comme std::vector.