diff --git a/Nvidia_STL.typ b/Nvidia_STL.typ index fb4c9866073d960bf7a66f26c4fac33488c87d81..def78de248aca3fd0f67a458cb7112c8ace63a05 100644 --- a/Nvidia_STL.typ +++ b/Nvidia_STL.typ @@ -34,4 +34,6 @@ #new-section-slide("Le futur avec C++23 (views et mdspans)") +#new-section-slide("Notions à retenir") + #new-section-slide("Questions ?") \ No newline at end of file diff --git a/cpp_basics_for_STL.typ b/cpp_basics_for_STL.typ index 68f6ac370c8238f16ab2beadef1f5f58d90ac0f3..4dff1903760e47802798c37e93395d7e54c8433d 100644 --- a/cpp_basics_for_STL.typ +++ b/cpp_basics_for_STL.typ @@ -18,12 +18,72 @@ #new-section-slide("Introduction") -#slide(title: "Contenu")[ - +#slide( + title: "Contenu", +)[ + Nous allons voir succinctement quels sont les outils de C++ indispensables pour + pouvoir utiliser la parallélisation sur GPU avec les algorithmes STL. ] #new-section-slide("Itérateurs") +#slide( + title: "Qu'est-ce qu'un itérateur en C++", +)[ + Le concept n'est pas strictement similaire au design pattern itérateur. + + Les itérateurs en C++ sont des objets qui permettent de parcourir une + collection. + + La collection peut-être virtuelle ou il peut s'agir d'une zone mémoire contigüe. + + On peut également concevoir l'itérateur comme une généralisation du pointeur en + C++. +] + +#slide(title: "Les types d'itérateurs")[ + Il existe plusieurs types d'itérateurs en C++ + + #set align(center + horizon) + #rect(inset: 8pt)[ + Contiguous (C++ 20) + #rect(inset: 8pt)[ + Random access + #rect(inset: 8pt)[ + Bidirectional + #rect(inset: 8pt, width: 25%, height: 50%)[ + Forward + #rect(inset: 8pt)[ + Input + ] + #rect(inset: 8pt)[ + Output + ] + ] + ] + ] + ] +] + +#slide( + title: "Comment utiliser un itérateur", +)[ +Toutes les collections de la STL proposent une méthode `begin` et `end`. Elles +permettent d'obtenir un itérateur sur le début et la fin de la collection. + +L'itérateur le plus basique peut être incrémenté `it++` ou `++it`. + +L'itérateur bidirectionnel peut aussi être décrémenté `it--` ou `--it` + +Selon le type d'itérateur, il est également possible de le déréférencer `*it`. + +S'il est possible d'y accèder aléatoirement, on peut utiliser l'opérateur +`it[i]` pour accèder au ième élément. + +Je vous recommande de lire cette page pour plus d'exemples : +#link("https://cplusplus.com/reference/iterator") +] + #new-section-slide("Vecteurs") #new-section-slide("Tableaux et Spans") @@ -32,4 +92,6 @@ #new-section-slide("Algorithmes STL") +#new-section-slide("Notions à retenir") + #new-section-slide("Questions ?") \ No newline at end of file diff --git a/intro.typ b/intro.typ index cd6171748b2c4ddf71bf4207a8ab58844e023bb0..9c7174388a4b7750f15edf03a7a472a9972c7b2d 100644 --- a/intro.typ +++ b/intro.typ @@ -45,7 +45,7 @@ + Les itérateurs C++ + Les vecteurs, les tableaux et les spans + Les captures - + Les algorithmes STL #pause + + Les algorithmes de la Standard Template Library (STL) #pause + Présentation du kit HPC Nvidia + Le compilateur nvc++ + Comment paralléliser son code avec nvc++