guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/02: talks: Add JCAD 2021 talk.


From: Ludovic Courtès
Subject: 01/02: talks: Add JCAD 2021 talk.
Date: Tue, 14 Dec 2021 11:29:33 -0500 (EST)

civodul pushed a commit to branch master
in repository maintenance.

commit 2a2b4757812f9f061454b1320f3865fa561d9192
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Thu Dec 9 22:04:49 2021 +0100

    talks: Add JCAD 2021 talk.
    
    * talks/jcad-2021: New directory.
---
 talks/jcad-2021/images/big-picture-3.pdf           |   1 +
 talks/jcad-2021/images/eigen-users.fdp             |  86 ++++
 .../images/gamblin-binary-portability.png          | Bin 0 -> 132016 bytes
 .../jcad-2021/images/guixhpc-logo-transparent.pdf  |   1 +
 talks/jcad-2021/images/inria-white-2019.pdf        |   1 +
 talks/jcad-2021/images/openmpi-graph.fdp           |  15 +
 talks/jcad-2021/images/supercomputer-us-doe.jpg    | Bin 0 -> 557472 bytes
 talks/jcad-2021/images/tandem-jules-beau-1896.jpg  | Bin 0 -> 85815 bytes
 talks/jcad-2021/images/xkcd-compiling.png          | Bin 0 -> 28315 bytes
 talks/jcad-2021/rules.ini                          |  25 +
 talks/jcad-2021/talk.tex                           | 543 +++++++++++++++++++++
 11 files changed, 672 insertions(+)

diff --git a/talks/jcad-2021/images/big-picture-3.pdf 
b/talks/jcad-2021/images/big-picture-3.pdf
new file mode 120000
index 0000000..cb1e458
--- /dev/null
+++ b/talks/jcad-2021/images/big-picture-3.pdf
@@ -0,0 +1 @@
+/home/ludo/src/guix-maintenance/talks/fosdem-2018/hpc/images/big-picture-3.pdf
\ No newline at end of file
diff --git a/talks/jcad-2021/images/eigen-users.fdp 
b/talks/jcad-2021/images/eigen-users.fdp
new file mode 100644
index 0000000..cde23e7
--- /dev/null
+++ b/talks/jcad-2021/images/eigen-users.fdp
@@ -0,0 +1,86 @@
+digraph "Guix reverse-package" {
+  "140706616166464" [label = "eigen@3.3.8", shape = box, fontname = sans];
+  "140706616166464" -> "140706656906688" [color = cyan3];
+  "140706616166464" -> "140706656906512" [color = cyan3];
+  "140706616166464" -> "140706609637264" [color = cyan3];
+  "140706616166464" -> "140706609637440" [color = cyan3];
+  "140706616166464" -> "140706660311392" [color = cyan3];
+  "140706616166464" -> "140706660276816" [color = cyan3];
+  "140706616166464" -> "140706660277168" [color = cyan3];
+  "140706616166464" -> "140706660246032" [color = cyan3];
+  "140706616166464" -> "140706598496144" [color = cyan3];
+  "140706616166464" -> "140706598496320" [color = cyan3];
+  "140706616166464" -> "140706598494560" [color = cyan3];
+  "140706616166464" -> "140706599968544" [color = cyan3];
+  "140706616166464" -> "140706599882176" [color = cyan3];
+  "140706616166464" -> "140706599880064" [color = cyan3];
+  "140706616166464" -> "140706599880768" [color = cyan3];
+  "140706616166464" -> "140706599844256" [color = cyan3];
+  "140706616166464" -> "140706599881824" [color = cyan3];
+  "140706616166464" -> "140706599879888" [color = cyan3];
+  "140706616166464" -> "140706599479536" [color = cyan3];
+  "140706616166464" -> "140706602076048" [color = cyan3];
+  "140706616166464" -> "140706632009616" [color = cyan3];
+  "140706616166464" -> "140706658485456" [color = cyan3];
+  "140706616166464" -> "140706658485280" [color = cyan3];
+  "140706616166464" -> "140706658485632" [color = cyan3];
+  "140706616166464" -> "140706658540816" [color = cyan3];
+  "140706616166464" -> "140706658540640" [color = cyan3];
+  "140706616166464" -> "140706658540464" [color = cyan3];
+  "140706616166464" -> "140706658485984" [color = cyan3];
+  "140706616166464" -> "140706602947440" [color = cyan3];
+  "140706616166464" -> "140706658348832" [color = cyan3];
+  "140706616166464" -> "140706626013776" [color = cyan3];
+  "140706616166464" -> "140706626043328" [color = cyan3];
+  "140706616166464" -> "140706630907792" [color = cyan3];
+  "140706616166464" -> "140706655901408" [color = cyan3];
+  "140706616166464" -> "140706655489472" [color = cyan3];
+  "140706616166464" -> "140706655696608" [color = cyan3];
+  "140706616166464" -> "140706655489120" [color = cyan3];
+  "140706616166464" -> "140706655489296" [color = cyan3];
+  "140706616166464" -> "140706612358768" [color = cyan3];
+  "140706616166464" -> "140706626041920" [color = cyan3];
+  "140706616166464" -> "140706626042096" [color = cyan3];
+  "140706656906688" [label = "celestia@1.6.1-815.9dbdf29", shape = box, 
fontname = sans];
+  "140706656906512" [label = "celestia-gtk@1.6.1-815.9dbdf29", shape = box, 
fontname = sans];
+  "140706609637264" [label = "guitarix-lv2@0.41.0", shape = box, fontname = 
sans];
+  "140706609637440" [label = "guitarix@0.41.0", shape = box, fontname = sans];
+  "140706660311392" [label = "nanopolish@0.11.1-1.6331dc4", shape = box, 
fontname = sans];
+  "140706660276816" [label = "salmon@1.4.0", shape = box, fontname = sans];
+  "140706660277168" [label = "sailfish@0.10.1", shape = box, fontname = sans];
+  "140706660246032" [label = "imp@2.15.0", shape = box, fontname = sans];
+  "140706598496144" [label = "avogadro2@1.93.0", shape = box, fontname = sans];
+  "140706598496320" [label = "avogadrolibs@1.93.0", shape = box, fontname = 
sans];
+  "140706598494560" [label = "openbabel@3.1.1", shape = box, fontname = sans];
+  "140706599968544" [label = "emulation-station@2.0.1-1.9cc42ad", shape = box, 
fontname = sans];
+  "140706599882176" [label = "openscad@2021.01", shape = box, fontname = sans];
+  "140706599880064" [label = "libigl@2.3.0", shape = box, fontname = sans];
+  "140706599880768" [label = "meshlab@2020.06", shape = box, fontname = sans];
+  "140706599844256" [label = "libfive@0-4.8ca1b86", shape = box, fontname = 
sans];
+  "140706599881824" [label = "freecad@0.19.2", shape = box, fontname = sans];
+  "140706599879888" [label = "prusa-slicer@2.3.3", shape = box, fontname = 
sans];
+  "140706599479536" [label = "nextpnr-ice40@0.0.0-1.fbe486d", shape = box, 
fontname = sans];
+  "140706602076048" [label = "marble-marcher@0-1.e580460", shape = box, 
fontname = sans];
+  "140706632009616" [label = "monado@21.0.0", shape = box, fontname = sans];
+  "140706658485456" [label = "vtk@8.2.0", shape = box, fontname = sans];
+  "140706658485280" [label = "vtk@6.3.0", shape = box, fontname = sans];
+  "140706658485632" [label = "vtk@9.0.1", shape = box, fontname = sans];
+  "140706658540816" [label = "insight-toolkit@5.0.0", shape = box, fontname = 
sans];
+  "140706658540640" [label = "insight-toolkit@4.13.2", shape = box, fontname = 
sans];
+  "140706658540464" [label = "insight-toolkit@4.12.2", shape = box, fontname = 
sans];
+  "140706658485984" [label = "mia@2.4.6", shape = box, fontname = sans];
+  "140706602947440" [label = "luminance-hdr@2.6.0", shape = box, fontname = 
sans];
+  "140706658348832" [label = "krita@4.4.8", shape = box, fontname = sans];
+  "140706626013776" [label = "shogun@6.1.3", shape = box, fontname = sans];
+  "140706626043328" [label = "python-pytorch@1.10.0", shape = box, fontname = 
sans];
+  "140706630907792" [label = "dune-pdelab-openmpi@2.7.0-git-476fe437", shape = 
box, fontname = sans];
+  "140706655901408" [label = "dune-pdelab@2.7.0-git-476fe437", shape = box, 
fontname = sans];
+  "140706655489472" [label = "arpack-ng@3.8.0", shape = box, fontname = sans];
+  "140706655696608" [label = "ceres-solver@1.14.0", shape = box, fontname = 
sans];
+  "140706655489120" [label = "arpack-ng-openmpi@3.8.0", shape = box, fontname 
= sans];
+  "140706655489296" [label = "arpack-ng@3.3.0", shape = box, fontname = sans];
+  "140706612358768" [label = "pybind11@2.6.2", shape = box, fontname = sans];
+  "140706626041920" [label = "fenics@2019.1.0.post0", shape = box, fontname = 
sans];
+  "140706626042096" [label = "fenics-dolfin@2019.1.0.post0", shape = box, 
fontname = sans];
+
+}
diff --git a/talks/jcad-2021/images/gamblin-binary-portability.png 
b/talks/jcad-2021/images/gamblin-binary-portability.png
new file mode 100644
index 0000000..2542cf1
Binary files /dev/null and 
b/talks/jcad-2021/images/gamblin-binary-portability.png differ
diff --git a/talks/jcad-2021/images/guixhpc-logo-transparent.pdf 
b/talks/jcad-2021/images/guixhpc-logo-transparent.pdf
new file mode 120000
index 0000000..a386cde
--- /dev/null
+++ b/talks/jcad-2021/images/guixhpc-logo-transparent.pdf
@@ -0,0 +1 @@
+../../aramis-2019/images/guixhpc-logo-transparent.pdf
\ No newline at end of file
diff --git a/talks/jcad-2021/images/inria-white-2019.pdf 
b/talks/jcad-2021/images/inria-white-2019.pdf
new file mode 120000
index 0000000..0c7c223
--- /dev/null
+++ b/talks/jcad-2021/images/inria-white-2019.pdf
@@ -0,0 +1 @@
+/home/ludo/src/guix-maintenance/talks/fosdem-2020/guix-jupyter/images/inria-white-2019.pdf
\ No newline at end of file
diff --git a/talks/jcad-2021/images/openmpi-graph.fdp 
b/talks/jcad-2021/images/openmpi-graph.fdp
new file mode 100644
index 0000000..cb2404f
--- /dev/null
+++ b/talks/jcad-2021/images/openmpi-graph.fdp
@@ -0,0 +1,15 @@
+digraph "Guix package" {
+  "140705220869744" [label = "openmpi@4.1.1", shape = box, fontname = sans];
+  "140705220869744" -> "140705218971888" [color = magenta];
+  "140705220869744" -> "140705220694720" [color = magenta];
+  "140705220869744" -> "140705218971712" [color = magenta];
+  "140705220869744" -> "140705218970832" [color = magenta];
+  "140705220869744" -> "140705220694192" [color = magenta];
+  "140705220869744" -> "140705218952288" [color = magenta];
+  "140705218971888" [label = "libfabric@1.11.2", shape = box, fontname = sans];
+  "140705220694720" [label = "opensm@3.3.22", shape = box, fontname = sans];
+  "140705218971712" [label = "psm@3.3.20170428", shape = box, fontname = sans];
+  "140705218970832" [label = "psm2@11.2.185", shape = box, fontname = sans];
+  "140705220694192" [label = "ucx@1.9.0", shape = box, fontname = sans];
+  "140705218952288" [label = "rdma-core@33.1", shape = box, fontname = sans];
+}
diff --git a/talks/jcad-2021/images/supercomputer-us-doe.jpg 
b/talks/jcad-2021/images/supercomputer-us-doe.jpg
new file mode 100644
index 0000000..c51c24b
Binary files /dev/null and b/talks/jcad-2021/images/supercomputer-us-doe.jpg 
differ
diff --git a/talks/jcad-2021/images/tandem-jules-beau-1896.jpg 
b/talks/jcad-2021/images/tandem-jules-beau-1896.jpg
new file mode 100644
index 0000000..3ec4544
Binary files /dev/null and b/talks/jcad-2021/images/tandem-jules-beau-1896.jpg 
differ
diff --git a/talks/jcad-2021/images/xkcd-compiling.png 
b/talks/jcad-2021/images/xkcd-compiling.png
new file mode 100644
index 0000000..1577dcf
Binary files /dev/null and b/talks/jcad-2021/images/xkcd-compiling.png differ
diff --git a/talks/jcad-2021/rules.ini b/talks/jcad-2021/rules.ini
new file mode 100644
index 0000000..0509310
--- /dev/null
+++ b/talks/jcad-2021/rules.ini
@@ -0,0 +1,25 @@
+;; Rules for Rubber.
+
+[dot-pdf]
+target = (.*)\.pdf
+source = \1.dot
+rule = shell
+cost = 0
+command = dot -Tpdf -Gratio=.78 -o $target $source
+message = rendering $source into $target
+
+[fdp-pdf]
+target = (.*)\.pdf
+source = \1.fdp
+rule = shell
+cost = 0
+command = fdp -Tpdf -Gratio=.78 -o $target $source
+message = rendering $source into $target (FDP)
+
+[svg-pdf]
+target = (.*)\.pdf
+source = \1.svg
+rule = shell
+cost = 1
+command = inkscape --export-pdf=$target $source
+message = converting $source to $target
diff --git a/talks/jcad-2021/talk.tex b/talks/jcad-2021/talk.tex
new file mode 100644
index 0000000..1fc672c
--- /dev/null
+++ b/talks/jcad-2021/talk.tex
@@ -0,0 +1,543 @@
+% The comment below tells Rubber to compile the .dot files.
+%
+% rubber: module graphics
+% rubber: rules rules.ini
+
+% Make sure URLs are broken on hyphens.
+% See <https://tex.stackexchange.com/questions/3033/forcing-linebreaks-in-url>.
+\RequirePackage[hyphens]{url}
+
+\documentclass[aspectratio=169]{beamer}
+
+\usetheme{default}
+
+\usefonttheme{structurebold}
+
+% Nice sans-serif font.
+\usepackage[sfdefault,lining]{FiraSans} %% option 'sfdefault' activates Fira 
Sans as the default text font
+\renewcommand*\oldstylenums[1]{{\firaoldstyle #1}}
+
+% Nice monospace font.
+\usepackage{inconsolata}
+%% \renewcommand*\familydefault{\ttdefault} %% Only if the base font of the 
document is to be typewriter style
+\usepackage[T1]{fontenc}
+
+\usepackage[utf8]{inputenc}
+\PassOptionsToPackage{hyphens}{url}\usepackage{hyperref,xspace,multicol}
+
+\usepackage[absolute,overlay]{textpos}
+\usepackage{tikz}
+\usetikzlibrary{arrows,shapes,trees,shadows,positioning,backgrounds}
+\usepackage{fancyvrb}           % for '\Verb'
+\usepackage{xifthen}            % for '\isempty'
+
+% Remember the position of every picture.
+\tikzstyle{every picture}+=[remember picture]
+
+\tikzset{onslide/.code args={<#1>#2}{%
+  \only<#1>{\pgfkeysalso{#2}} % \pgfkeysalso doesn't change the path
+}}
+
+% Colors.
+\definecolor{guixred1}{RGB}{226,0,38}  % red P
+\definecolor{guixorange1}{RGB}{243,154,38}  % guixorange P
+\definecolor{guixyellow}{RGB}{254,205,27}  % guixyellow P
+\definecolor{guixred2}{RGB}{230,68,57}  % red S
+\definecolor{guixred3}{RGB}{115,34,27}  % dark red
+\definecolor{guixorange2}{RGB}{236,117,40}  % guixorange S
+\definecolor{guixtaupe}{RGB}{134,113,127} % guixtaupe S
+\definecolor{guixgrey}{RGB}{91,94,111} % guixgrey S
+\definecolor{guixdarkgrey}{RGB}{46,47,55} % guixdarkgrey S
+\definecolor{guixblue1}{RGB}{38,109,131} % guixblue S
+\definecolor{guixblue2}{RGB}{10,50,80} % guixblue S
+\definecolor{guixgreen1}{RGB}{133,146,66} % guixgreen S
+\definecolor{guixgreen2}{RGB}{157,193,7} % guixgreen S
+
+\setbeamerfont{title}{size=\huge}
+\setbeamerfont{frametitle}{size=\huge}
+\setbeamerfont{normal text}{size=\Large}
+
+% White-on-black color theme.
+\setbeamercolor{structure}{fg=guixorange1,bg=black}
+\setbeamercolor{title}{fg=white,bg=black}
+\setbeamercolor{date}{fg=guixorange1,bg=black}
+\setbeamercolor{frametitle}{fg=white,bg=black}
+\setbeamercolor{titlelike}{fg=white,bg=black}
+\setbeamercolor{normal text}{fg=white,bg=black}
+\setbeamercolor{alerted text}{fg=guixyellow,bg=black}
+\setbeamercolor{section in toc}{fg=white,bg=black}
+\setbeamercolor{section in toc shaded}{fg=white,bg=black}
+\setbeamercolor{subsection in toc}{fg=guixorange1,bg=black}
+\setbeamercolor{subsection in toc shaded}{fg=white,bg=black}
+\setbeamercolor{subsubsection in toc}{fg=guixorange1,bg=black}
+\setbeamercolor{subsubsection in toc shaded}{fg=white,bg=black}
+\setbeamercolor{frametitle in toc}{fg=white,bg=black}
+\setbeamercolor{local structure}{fg=guixorange1,bg=black}
+
+\newcommand{\highlight}[1]{\alert{\textbf{#1}}}
+
+\title{Reproductibilité et portabilité des performances}
+
+\author{Ludovic Courtès}
+\date{\small{JCAD, 14 décembre 2019}}
+
+\setbeamertemplate{navigation symbols}{} % remove the navigation bar
+
+
+\newcommand{\screenshot}[2][width=\paperwidth]{
+  \begin{frame}[plain]
+    \begin{tikzpicture}[remember picture, overlay]
+      \node [at=(current page.center), inner sep=0pt]
+        {\includegraphics[{#1}]{#2}};
+    \end{tikzpicture}
+  \end{frame}
+}
+
+
+\begin{document}
+
+\begin{frame}[plain, fragile]
+  \begin{tikzpicture}[overlay]
+    \node [at=(current page.center)] {
+      % https://images.bnf.fr/#/detail/1535157/9
+      \includegraphics[width=1.5\textwidth]{images/tandem-jules-beau-1896}
+    };
+    \node [at=(current page.center), fill=guixorange2, opacity=.4,
+      text width=1.3\textwidth, text height=\textheight] {
+    };
+    \node [at=(current page.south east), anchor=south east, inner sep=5mm] {
+      {\includegraphics[width=0.2\paperwidth]{images/inria-white-2019}}
+    };
+  \end{tikzpicture}
+
+  \vspace{20mm}
+  \Huge{\textbf{Reproductibilité \& \\
+      Portabilité des performances}}
+  \\[15mm]
+  \large{Ludovic Courtès}
+  \\[2mm]
+  \alert{\textbf{Journées calcul et données (JCAD)}}
+  \\[1.5mm]
+  \textbf{\oldstylenums{14 décembre 2021}}
+  \vfill{}
+
+\end{frame}
+
+\setbeamercolor{normal text}{bg=white}
+\begin{frame}[plain]
+  \includegraphics[width=\textwidth]{images/big-picture-3}
+\end{frame}
+
+
+\setbeamercolor{normal text}{fg=black,bg=guixtaupe}
+\begin{frame}[plain, fragile]
+  \begin{tikzpicture}[overlay]
+    \node [at=(current page.center)] {
+      \includegraphics[width=\paperwidth]{images/supercomputer-us-doe}
+    };
+  \end{tikzpicture}
+
+  \vfill{}
+  \Huge{\textbf{Deux obsessions : MPI et AVX}}
+\end{frame}
+
+\begin{frame}[plain, fragile]
+  \begin{tikzpicture}[overlay]
+    \node [at=(current page.center), inner sep=0pt, rotate=5,
+    drop shadow={opacity=0.7, fill=black}, draw, color=black, line width=1pt]
+    
{\includegraphics[width=0.9\paperwidth]{images/gamblin-binary-portability}};
+
+    \node(ref) [at=(current page.south), anchor=south, color=guixdarkgrey, 
rounded corners,
+      fill=white, opacity=.7, text opacity=1, inner sep=3mm]
+          
{\url{https://trex-coe.eu/events/trex-build-system-hackathon-8-12-nov-2021}};
+    \node [at=(ref.north east), anchor=south east, color=guixdarkgrey, inner 
sep=3mm, outer sep=3mm] {
+      Todd Gamblin (Spack)
+    };
+
+  \end{tikzpicture}
+\end{frame}
+
+\setbeamercolor{normal text}{fg=black,bg=white}
+\begin{frame}[plain]
+  \begin{tikzpicture}[overlay]
+    \node [at=(current page.center)] {
+      \includegraphics[height=\textheight]{images/openmpi-graph}
+    };
+    \node<2-> [at=(current page.center), fill=guixblue2, opacity=.6,
+      text width=1.3\textwidth, text height=\textheight] {
+    };
+    \node<2-> [at=(current page.south), anchor=south, inner sep=3mm,
+      text=white] {
+      
\url{https://hpc.guix.info/blog/2019/12/optimized-and-portable-open-mpi-packaging/}
+    };
+  \end{tikzpicture}
+
+  \Large{
+  \begin{itemize}
+    \item<2-> InfiniBand (UCX, rdma-core)
+    \item<2-> InfiniPath/TrueScale (PSM)
+    \item<2-> Omni-Path (PSM2)
+    \item<2-> Ethernet
+    \item<2-> ...
+  \end{itemize}
+  }
+\end{frame}
+
+
+\setbeamercolor{normal text}{fg=black,bg=guixgreen2}
+\begin{frame}[plain]
+  \vspace{12mm}
+  \Huge{\textbf{La jungle\\ des extensions vectorielles}}
+\end{frame}
+
+\setbeamercolor{normal text}{fg=black,bg=guixtaupe}
+
+\begin{frame}[plain, fragile]
+  \begin{tikzpicture}[
+        box/.style = { fill=guixblue2, inner sep=3mm, rounded corners, 
font=\LARGE\bf }
+      ]
+    \matrix[row sep=15mm, column sep=12mm] {
+      \node(sse2) [box, draw=guixorange1, thick] {SSE2 (ca. 2003)}; & & 
\node(avx512) [box] {AVX-512 (2013)}; \\
+      \node(sse3) [box] {SSE3}; & \node {\LARGE\textbf{x86\_64}}; & 
\node(avx2) [box] {AVX2}; \\
+      \node(ssse3) [box] {SSSE3}; & & \node(avx) [box] {AVX}; \\
+    };
+
+    \path[very thick, draw=guixorange1] (sse2) edge [->] (sse3);
+    \path[very thick, draw=guixorange1] (sse3) edge [->] (ssse3);
+    \path[very thick, draw=guixorange1] (ssse3) edge [->] (avx);
+    \path[very thick, draw=guixorange1] (avx) edge [->] (avx2);
+    \path[very thick, draw=guixorange1] (avx2) edge [->] (avx512);
+  \end{tikzpicture}
+\end{frame}
+
+\begin{frame}[plain, fragile]
+  \begin{tikzpicture}[
+        box/.style = { fill=guixblue2, inner sep=3mm, rounded corners, 
font=\Large }
+      ]
+    \matrix[row sep=12mm, column sep=17mm] {
+      \node(bonnel) [box] {bonnel};         & \node(haswell) [box] {haswell};  
       & \node(broadwell) [box] {broadwell}; \\
+      \node(silvermont) [box] {silvermont}; & \node(ivybridge) [box] 
{ivybridge};     & \node(skylake) [box] {skylake}; \\
+      \node(core2) [box] {core2};           & \node(sandybridge) [box] 
{sandybridge}; & \node(skylake-avx512) [box] {skylake-avx512}; \\
+      \node(nehalem) [box] {nehalem};       & \node(westmere) [box] 
{westmere};       & \node(etc) [box] {\textit{etc}...}; \\
+    };
+
+    \path[very thick, draw=guixorange1, ->] (bonnel) edge (silvermont);
+    \path[very thick, draw=guixorange1, ->] (silvermont) edge (core2);
+    \path[very thick, draw=guixorange1, ->] (core2) edge (nehalem);
+    \path[very thick, draw=guixorange1, ->] (nehalem) edge (westmere);
+    \path[very thick, draw=guixorange1, ->] (westmere) edge (sandybridge);
+    \path[very thick, draw=guixorange1, ->] (sandybridge) edge (ivybridge);
+    \path[very thick, draw=guixorange1, ->] (ivybridge) edge (haswell);
+    \path[very thick, draw=guixorange1, ->] (haswell) edge (broadwell);
+    \path[very thick, draw=guixorange1, ->] (broadwell) edge (skylake);
+    \path[very thick, draw=guixorange1, ->] (skylake) edge (skylake-avx512);
+    \path[very thick, draw=guixorange1, ->] (skylake-avx512) edge (etc);
+  \end{tikzpicture}
+\end{frame}
+
+\begin{frame}[plain, fragile]
+  \vspace{2cm}
+  \Large{
+    \begin{tabular}{lrr}
+      \textbf{code} & \textbf{GEMM 240x240x240} \\
+      Eigen (x86\_64 baseline)          & 11 Gflops/s \\
+      Eigen \texttt{-march=westmere}    & 12 Gflops/s \\
+      Eigen \texttt{-march=sandybridge} & 20 Gflops/s \\
+      Eigen \texttt{-march=skylake}     & \textbf{36} Gflops/s \\
+      OpenBLAS                          & 16 Gflops/s \\
+    \end{tabular}
+  }
+
+  \vfill{}
+  \small{\texttt{guix shell eigen-benchmarks -- benchBlasGemm 240 240 240}, 
Intel CORE i7}
+
+  \begin{tikzpicture}[overlay]
+    \node at (13,4) [shape=circle, fill=guixorange2, inner sep=3mm] {
+      \LARGE{\textbf{x3}}
+    };
+  \end{tikzpicture}
+\end{frame}
+
+\setbeamercolor{normal text}{fg=black,bg=guixred3}
+\begin{frame}[plain, fragile]
+  \begin{semiverbatim}
+    \Large{
+$ ls /cm/shared/modules/\alert{intel}/
+broadwell       haswell  ivybridge
+knightslanding  knl      skylake
+
+$ ls /cm/shared/modules/intel/\alert{skylake}/modulefiles/
+compiler  linalg  tools
+}
+  \end{semiverbatim}
+\end{frame}
+
+\begin{frame}[plain, fragile]
+  \begin{semiverbatim}
+$ \alert{spack} spec netcdf-c
+Concretized
+--------------------------------
+netcdf-c@4.8.1\textsf{...} arch=linux-ubuntu18.04-\alert{skylake_avx512}
+    ^hdf5@1.10.7\textsf{...} arch=linux-ubuntu18.04-\alert<2->{skylake_avx512}
+        ^cmake@3.21.4\textsf{...} 
arch=linux-ubuntu18.04-\alert<3->{skylake_avx512}
+            ^ncurses@6.2\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+                ^pkgconf@1.8.0\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+            ^openssl@1.1.1l\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+                ^perl@5.34.0\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+                    ^berkeley-db@18.1.40\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+                    ^bzip2@1.0.8\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+                        ^diffutils@3.8\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+                            ^libiconv@1.16\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+                    ^gdbm@1.19\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+                        ^readline@8.1\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+                    ^zlib@1.2.11\textsf{...} 
arch=linux-ubuntu18.04-\alert<4->{skylake_avx512}
+  \end{semiverbatim}
+
+  \begin{tikzpicture}[overlay]
+    \node<4> [at=(current page.south), anchor=south, inner sep=3mm,
+      outer sep=3mm,
+      text=white, fill=black, rounded corners, opacity=.4, text opacity=1] {
+      \url{https://spack.readthedocs.io/en/latest/getting_started.html}
+    };
+
+    \node<5> [at=(current page.center)] {
+      \includegraphics[height=.9\textheight]{images/xkcd-compiling}
+    };
+    \node<5> [at=(current page.west), anchor=north, inner sep=3mm,
+      outer sep=3mm, rotate=90,
+      text=white, fill=black, rounded corners, opacity=.4, text opacity=1] {
+      \url{https://xkcd.com/303/}
+    };
+  \end{tikzpicture}
+\end{frame}
+
+\setbeamercolor{normal text}{fg=black,bg=guixorange1}
+\begin{frame}[plain]
+  \begin{tikzpicture}[overlay]
+    \node at (current page.center) [anchor=center,
+           inner sep=-10mm, shape=star, star points=9,
+           fill=white, text=guixdarkgrey] {
+      \LARGE{\textbf{Function multi-versioning!}}
+    };
+  \end{tikzpicture}
+\end{frame}
+
+\setbeamercolor{normal text}{fg=black,bg=guixtaupe}
+
+\begin{frame}[plain, fragile]
+  \begin{tikzpicture}[
+        box/.style = { inner sep=3mm, rounded corners, font=\Large },
+        crypto/.style = { box, fill=guixblue2 },
+        linalg/.style = { box, fill=guixblue1 },
+        multip/.style = { box, fill=guixdarkgrey },
+        lang/.style = { box, fill=guixred2 },
+      ]
+    \matrix[row sep=12mm, column sep=20mm] {
+      \node[box]{GNU libc}; & \node[crypto]{Libgcrypt}; & 
\node[crypto]{Nettle}; \\
+      \node[linalg]{OpenBLAS}; & \node[linalg]{BLIS}; & \node[linalg]{FFTW}; \\
+      \node[multip]{GMP}; & \node[lang]{Julia}; & \node[lang]{Rust}; \\
+    };
+  \end{tikzpicture}
+\end{frame}
+
+\begin{frame}[plain, fragile]
+  \Large{
+  \begin{semiverbatim}
+void my_func (double *array)
+  __attribute__ ((\alert{target_clones} ("arch=skylake", "default")));
+
+void my_func (double *array)
+\{
+  \textrm{...}
+\}
+  \end{semiverbatim}
+  }
+
+  \begin{tikzpicture}[overlay]
+    \node<2> [at=(current page.south), anchor=south, rounded corners, inner 
sep=3mm, fill=guixdarkgrey, text opacity=1, opacity=.6, text=white, outer 
sep=3mm] {
+      
\small{\url{https://hpc.guix.info/blog/2018/01/pre-built-binaries-vs-performance/}}
+    };
+  \end{tikzpicture}
+\end{frame}
+
+% generate patch -> applicability?
+
+% (note: simdjson does FMV
+% 
<https://github.com/simdjson/simdjson/blob/master/doc/implementation-selection.md>)
+
+% Problem: Eigen, etc.
+
+\setbeamercolor{normal text}{fg=black,bg=white}
+\begin{frame}[plain, fragile]
+  \begin{tikzpicture}[overlay]
+    \node [at=(current page.center), shape=star, star points=9, fill=white, 
inner sep=7mm] {};
+
+    \node [at=(current page.center)] {
+      \includegraphics[width=\paperwidth]{images/eigen-users}
+    };
+
+    \begin{scope}[on background layer]
+    \node<2-> [at=(current page.center), text width=\paperwidth, text 
height=\paperheight,
+      fill=guixred3, opacity=.9] {};
+    \end{scope}
+
+    \node<3> [at=(current page.south), anchor=south, rounded corners, inner 
sep=3mm, fill=guixdarkgrey, text opacity=1, opacity=.6, text=white, outer 
sep=3mm] {
+      \url{https://gitlab.com/libeigen/eigen/-/issues/2344}
+    };
+  \end{tikzpicture}
+
+  \begin{semiverbatim}
+  \only<3->{
+    \LARGE{
+#ifdef \alert{__AVX512F__}
+    \textrm{...}
+#elif defined \alert{__AVX__}
+    \textrm{...}
+
+#else
+// Unoptimized baseline code.
+#endif
+}}
+  \end{semiverbatim}
+\end{frame}
+
+\setbeamercolor{normal text}{fg=black,bg=white}
+\begin{frame}[plain]
+  \begin{tikzpicture}[overlay]
+    \node at (current page.center) [anchor=center,
+           inner sep=-30mm, shape=star, star points=9,
+           fill=guixorange1, text=black] {
+      \Huge{\textbf{Package multi-versioning!}}
+    };
+  \end{tikzpicture}
+\end{frame}
+
+\setbeamercolor{normal text}{fg=black,bg=guixtaupe}
+\begin{frame}[plain, fragile]
+  \begin{semiverbatim}
+    \Large{
+\$ guix \alert{shell} eigen-benchmarks -- \\
+    benchBlasGemm 240 240 240
+240 x 240 x 240
+cblas: 0.20367 (16.289 GFlops/s)
+eigen : 0.285149 (11.635 GFlops/s)
+
+\uncover<2->{\$ guix \alert{shell} \alert{--tune} eigen-benchmarks -- \\
+guix shell: tuning for CPU micro-architecture \alert{skylake}
+240 x 240 x 240
+cblas: 0.203131 (16.333 GFlops/s)
+eigen : 0.0929638 (\alert{35.688} GFlops/s)}
+    }
+  \end{semiverbatim}
+
+  \begin{tikzpicture}[overlay]
+    \node<3-> [at=(current page.north east), anchor=north, rotate=-30, inner 
sep=0mm,
+      shape=star, star points=5, fill=guixorange1, text=black, outer sep=40mm]
+              { \LARGE{\textbf{WIP}} };
+    \node<3-> [at=(current page.south), anchor=south, rounded corners, inner 
sep=3mm, fill=guixdarkgrey, text opacity=1, opacity=.6, text=white, outer 
sep=3mm] {
+      \url{https://issues.guix.gnu.org/52283}
+    };
+
+  \end{tikzpicture}
+\end{frame}
+
+\begin{frame}[plain, fragile]
+  \begin{tikzpicture}[
+        box/.style = { fill=guixblue2, inner sep=3mm, rounded corners, 
font=\Large },
+        tuned/.style = { box, fill=guixblue2 }
+      ]
+    \matrix[row sep=12mm, column sep=20mm] {
+      \node(eigen) [box]{Eigen}; & & \\
+      \uncover<2->{\node(vtk2)[tuned]{VTK \texttt{-march=skylake}};} & 
\node(vtk)[box]{VTK}; & \\
+      & & \node(opencv)[box] {OpenCV}; \\
+    };
+
+    \path<1>[very thick, draw=guixorange1, ->] (eigen) edge (vtk);
+    \path<1>[very thick, draw=guixorange1, ->] (vtk) edge (opencv);
+    \path<2->[very thick, draw=guixorange1, ->, dotted] (eigen) edge (vtk);
+    \path<2->[very thick, draw=guixorange1, ->, dotted] (vtk) edge (opencv);
+    \path<2->[very thick, draw=guixorange1, ->] (eigen) edge (vtk2);
+    \path<2->[very thick, draw=guixorange1, ->] (vtk2) edge (opencv);
+  \end{tikzpicture}
+
+  \begin{tikzpicture}[overlay]
+    \node<3> at (10,5) [fill=guixorange1, inner sep=3mm, rounded corners,
+      rotate=-20] { \LARGE{\textbf{Reproducible!}} };
+  \end{tikzpicture}
+\end{frame}
+
+% conclusion: 
+\setbeamercolor{normal text}{fg=black,bg=guixblue1}
+\begin{frame}[plain, fragile]
+  \Huge{
+    \vspace{2cm}
+    MPI, OPA, UCX, SSE, AVX, NEON...
+    \\[2cm]
+    \uncover<2->{\textbf{Portabilité, performance \\[2mm]
+      \emph{et} reproductibilité.}}
+    %% \uncover<2->{\textbf{Nul besoin de sacrifier \\[2mm]
+    %%     la \emph{reproductibilité} \\[2mm]
+    %%     pour les \emph{performances}.}}
+  }
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbeamercolor{normal text}{bg=black}
+\begin{frame}[plain]
+
+\vfill{
+  \vspace{3cm}
+  
\center{\includegraphics[width=0.5\textwidth]{images/guixhpc-logo-transparent}}\\[1.0cm]
+  \center{\alert{\url{https://hpc.guix.info}}} \\[0.2cm]
+  \texttt{ludovic.courtes@inria.fr |} @GuixHPC
+  \\[1.2cm]
+}
+\end{frame}
+
+
+\begin{frame}{}
+  \begin{textblock}{12}(2, 6)
+    \tiny{
+      Copyright \copyright{} 2010, 2012--2021 Ludovic Courtès 
\texttt{ludo@gnu.org}.\\[3.0mm]
+      GNU Guix logo, CC-BY-SA 4.0, \url{https://gnu.org/s/guix/graphics}.
+      \\[1.5mm]
+      Tandem picture by Jules Beau, public domain, 
\url{https://images.bnf.fr/\#/detail/1535157/9}
+      \\[1.5mm]
+      LLNL supercomputer picture by US DoE, public domain,
+      
\url{https://commons.wikimedia.org/wiki/File:U.S._Department_of_Energy_-_Science_-_477_018_010_(9563440651).jpg}
+      \\[1.5mm]
+      Copyright of other images included in this document is held by
+      their respective owners.
+      \\[3.0mm]
+      This work is licensed under the \alert{Creative Commons
+        Attribution-Share Alike 3.0} License.  To view a copy of this
+      license, visit
+      \url{https://creativecommons.org/licenses/by-sa/3.0/} or send a
+      letter to Creative Commons, 171 Second Street, Suite 300, San
+      Francisco, California, 94105, USA.
+      \\[2.0mm]
+      At your option, you may instead copy, distribute and/or modify
+      this document under the terms of the \alert{GNU Free Documentation
+        License, Version 1.3 or any later version} published by the Free
+      Software Foundation; with no Invariant Sections, no Front-Cover
+      Texts, and no Back-Cover Texts.  A copy of the license is
+      available at \url{https://www.gnu.org/licenses/gfdl.html}.
+      \\[2.0mm]
+      % Give a link to the 'Transparent Copy', as per Section 3 of the GFDL.
+      The source of this document is available from
+      \url{https://git.sv.gnu.org/cgit/guix/maintenance.git}.
+    }
+  \end{textblock}
+\end{frame}
+
+\end{document}
+
+% Local Variables:
+% coding: utf-8
+% comment-start: "%"
+% comment-end: ""
+% ispell-local-dictionary: "francais"
+% compile-command: "guix shell -m ../beamer-manifest.scm -- rubber --pdf 
talk.tex"
+% End:
+
+%%  LocalWords:  Reproducibility



reply via email to

[Prev in Thread] Current Thread [Next in Thread]