@@ -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