Skip to content
Snippets Groups Projects
Verified Commit 9998e290 authored by Michaël El Kharroubi's avatar Michaël El Kharroubi :satellite:
Browse files

Nvidia STL done

parent 309b7186
Branches
No related tags found
No related merge requests found
......@@ -199,8 +199,55 @@ std::for_each(std::execution::par_unseq,
```
]
#slide(
title: "Le compilateur ne peut pas tout copier",
)[
Attardons nous sur cet extrait de code `[device_v = v.data(), cst]`
Le compilateur ne va pas simplement copier le pointeur `v.data()`, il va
remonter à l'allocation mémoire de la zone pointée et va s'occuper de la rendre
accessible depuis le device.
Par conséquent, il n'est pas possible d'utiliser de la mémoire allouée par du
code qui n'aurait pas été compilé par nvc++ (ex: une librairie paratagée comme
OpenCV).
Le compilateur s'appuie principalement sur la CUDA Unified memory. Pour plus
d'information à ce sujet, je vous recommande ce billet de blog :
#link("https://developer.nvidia.com/blog/unified-memory-cuda-beginners")
]
#new-section-slide("Le futur avec C++23 (views et mdspans)")
#new-section-slide("Notions à retenir")
#slide(
title: "",
)[
La prochaine étape majeure dans ce paradigme apparaît avec C++23. Depuis C++ 20,
les spans et les views ont fait leur apparition.
Les views sont une forme d'itérateurs à évaluation paresseuse.
Dans C++23, on voit apparaître de nouvelles méthodes pour combiner les views
comme par exemple le produit cartésien pour générer les indices d'une matrice.
Et la grande nouveauté, les mdspans qui permettent de gérer des structures de
données multidimensionnelles.
]
#new-section-slide("Exemple de code C++23 et notions à retenir")
#slide(
title: "Notions essentielles à retenir",
)[
- On parallélise notre code avec le compilateur nvc++ du SDK HPC de Nvidia
- Il faut passer le paramètre stdpar au compilateur pour lui dire comment
paralléliser (cpu, gpu).
- Pour paralléliser un algorithme STL, il faut lui passer une politique
d'exécution
- Connaître et comprendre la différence entre les 4 politiques d'exécution
- On ne peut pas passer des données du _host_ par référence au _device_
- On capture les zones mémoire par copie pour les passer au _device_
- On ne peut pas capturer de la mémoire allouée par un code qui n'a pas été
compilé par nvc++.
]
#new-section-slide("Questions ?")
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment