Skip to content

Commit 2dd439f

Browse files
authored
Merge pull request #19 from CExA-project/add_transitions_no_mem
Add light transitions
2 parents 119dc0c + 480b80b commit 2dd439f

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

courses/01_beginners/main.tex

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ \section{Introduction}
282282
\item[Productivity] Write code quickly and easily, maintain and extend code, leverage architecture optimization
283283
\end{description}
284284
\end{column}
285+
\pause
285286
\begin{column}{0.55\linewidth}
286287
What \emph{developers for science} also want
287288

@@ -314,6 +315,7 @@ \section{Introduction}
314315
\item Want your code to be easily maintainable and readable by others, especially non experts
315316
\end{itemize}
316317
\end{column}
318+
\pause
317319
\begin{column}{0.5\linewidth}
318320
Maybe \emph{no} if you...
319321

@@ -361,12 +363,14 @@ \section{Introduction}
361363
\item Abstraction of most parallel patterns used in HPC (loops, reduction, scan)
362364
\item Abstracted basic data structures used in science (vectors, multidimensional arrays, sub-arrays, strided arrays, etc)
363365
\end{itemize}
366+
\pause
364367
\item Kokkos' advanced capabilities
365368
\begin{itemize}
366369
\item Advanced data structure properties
367370
\item Thread safety, thread scalability, and atomic operations
368371
\item Hierarchical patterns for maximizing parallelism
369372
\end{itemize}
373+
\pause
370374
\item Kokkos' tools and Kernels
371375
\begin{itemize}
372376
\item Profiling, tuning and debuging tools
@@ -461,6 +465,7 @@ \subsection{Compilation}
461465
-DCMAKE_CXX_COMPILER=g++
462466
\end{minted}
463467
\end{column}
468+
\pause
464469
\begin{column}{0.4\linewidth}
465470
\begin{center}
466471
\begin{tblr}[theme=kokkostable]{ll}
@@ -492,6 +497,7 @@ \subsection{Compilation}
492497
-DKokkos_ENABLE_CUDA=ON
493498
\end{minted}
494499
\end{column}
500+
\pause
495501
\begin{column}{0.55\linewidth}
496502
\begin{center}
497503
\begin{tblr}[theme=kokkostable]{ll}
@@ -529,6 +535,7 @@ \subsection{Compilation}
529535
\item All CMake options are available \doclink{\href{https://kokkos.org/kokkos-core-wiki/keywords.html}{in the doc}}
530536
\end{itemize}
531537
\end{column}
538+
\pause
532539
\begin{column}{0.6\linewidth}
533540
\begin{center}
534541
\small
@@ -613,6 +620,7 @@ \subsection{Compilation}
613620
\end{itemize}
614621
\end{alertblock}
615622
\end{column}
623+
\pause
616624
\begin{column}{0.25\linewidth}
617625
\strut As a Git submodule
618626
@@ -631,6 +639,7 @@ \subsection{Compilation}
631639
\end{itemize}
632640
\end{alertblock}
633641
\end{column}
642+
\pause
634643
\begin{column}{0.25\linewidth}
635644
\strut Using CMake
636645
@@ -647,6 +656,7 @@ \subsection{Compilation}
647656
\end{itemize}
648657
\end{alertblock}
649658
\end{column}
659+
\pause
650660
\begin{column}{0.25\linewidth}
651661
\strut With Spack
652662
@@ -1381,6 +1391,7 @@ \subsection{Parallel loops}
13811391
Only works on CPUs (need \texttt{target} directive for GPUs)
13821392
\end{block}
13831393
\end{column}
1394+
\pause
13841395
\begin{column}{0.5\linewidth}
13851396
Kokkos version
13861397
@@ -1425,8 +1436,9 @@ \subsection{Parallel loops}
14251436
\end{column}
14261437
\end{columns}
14271438
1428-
\vspace{1em}
1439+
\pause
14291440
1441+
\vspace{1em}
14301442
\structure{Question:} What is this \texttt{KOKKOS\_LAMBDA} thingy?
14311443
\end{frame}
14321444
@@ -1461,11 +1473,13 @@ \subsection{Parallel loops}
14611473
\end{center}
14621474
\begin{itemize}
14631475
\item Kokkos abstraction for where the loop is executed : \highlight{execution space}
1476+
\pause
14641477
\item Parallel code (i.e. inside a \texttt{parallel\_*}) is by default executed
14651478
\begin{itemize}
14661479
\item By the Host if no GPU backend is available
14671480
\item By the Device otherwise
14681481
\end{itemize}
1482+
\pause
14691483
\item Serial code (the rest) is always executed on the Host
14701484
\end{itemize}
14711485
\end{frame}
@@ -1498,8 +1512,10 @@ \subsection{Parallel loops}
14981512
\end{column}
14991513
\end{columns}
15001514
1515+
\pause
1516+
15011517
\vspace{1em}
1502-
\structure{Problem:} What if I need the results of the parallel loop in the host code?
1518+
\structure{Problem:} What if I need the result of the parallel loop in the host code?
15031519
\end{frame}
15041520
15051521
% _____________________________________________________________________________
@@ -1601,6 +1617,7 @@ \subsection{Extending loop policies}
16011617
);
16021618
\end{minted}
16031619
\end{column}
1620+
\pause
16041621
\begin{column}{0.55\linewidth}
16051622
Explicit version (same)\strut
16061623
@@ -1628,6 +1645,7 @@ \subsection{Extending loop policies}
16281645
\item \texttt{Kokkos::DefaultExecutionSpace} and \texttt{Kokkos::DefaultHostExecutionSpace} are enough for beginners
16291646
\item Using a backend-specific execution space is possible, but it breaks portability
16301647
\end{itemize}
1648+
\pause
16311649
\begin{center}
16321650
\begin{tblr}[theme=kokkostable]{colspec=lll, row{2}={bg=lightmain}}
16331651
& \SetCell[c=2]{l} Kokkos compiled on \\
@@ -1654,6 +1672,7 @@ \subsection{Extending loop policies}
16541672
\item \texttt{memory\_space} attribute to access the memory space associated with an execution space
16551673
\item \texttt{HostSpace} for memory space of the default host execution space
16561674
\end{itemize}
1675+
\pause
16571676
\begin{center}
16581677
% allow the table to overflow horizontally
16591678
\makebox[\linewidth][c]{%
@@ -1775,6 +1794,7 @@ \subsection{Extending loop policies}
17751794
\begin{itemize}
17761795
\item One scalar variable collects something for each iteration (sum, max, min, etc.)
17771796
\item Same constraints as before
1797+
\pause
17781798
\item Horrible truth: \texttt{result} value \highlight{depends} on iteration order!
17791799
\end{itemize}
17801800
\end{column}
@@ -1862,8 +1882,12 @@ \subsection{Extending loop policies}
18621882
);
18631883
\end{minted}
18641884
1885+
\pause
1886+
18651887
\structure{Note:} Notice that mathematical operators are in the \texttt{Kokkos} namespace
18661888
1889+
\pause
1890+
18671891
\structure{Beware:} \texttt{Kokkos::max} is not the same as \texttt{Kokkos::Max<double>}!
18681892
\end{frame}
18691893

0 commit comments

Comments
 (0)