guix-commits
[Top][All Lists]
Advanced

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

01/10: talks: Add beginning of FOSDEM HPC talk.


From: Ludovic Courtès
Subject: 01/10: talks: Add beginning of FOSDEM HPC talk.
Date: Sun, 5 Feb 2017 12:00:17 +0000 (UTC)

civodul pushed a commit to branch master
in repository maintenance.

commit 6ac6586734e33db392b39cd27e22e120ee5b4b1b
Author: Ludovic Courtès <address@hidden>
Date:   Thu Feb 2 14:42:44 2017 +0100

    talks: Add beginning of FOSDEM HPC talk.
---
 .gitignore                                         |    8 +
 .../hpc/images/Guix-horizontal-print.pdf           |  Bin 0 -> 5351 bytes
 talks/fosdem-2017/hpc/images/GuixSD.pdf            |    1 +
 talks/fosdem-2017/hpc/images/cake.jpg              |  Bin 0 -> 146095 bytes
 .../hpc/images/docker-image-layers-cropped.png     |    1 +
 talks/fosdem-2017/hpc/images/easybuild-bug.png     |  Bin 0 -> 64965 bytes
 talks/fosdem-2017/hpc/images/easybuild.png         |  Bin 0 -> 136625 bytes
 .../fosdem-2017/hpc/images/environment-modules.png |  Bin 0 -> 17818 bytes
 talks/fosdem-2017/hpc/images/frozen-pizza.jpg      |    1 +
 talks/fosdem-2017/hpc/images/openhub-activity.png  |  Bin 0 -> 19245 bytes
 .../hpc/images/openhub-contributors.png            |  Bin 0 -> 16103 bytes
 .../hpc/images/package-managers-cropped.png        |    1 +
 talks/fosdem-2017/hpc/images/reppar-front-page.png |  Bin 0 -> 136222 bytes
 .../hpc/images/singularity-hpc-wire.png            |  Bin 0 -> 85357 bytes
 talks/fosdem-2017/hpc/images/spack-bug.png         |  Bin 0 -> 123461 bytes
 talks/fosdem-2017/hpc/images/spack.png             |  Bin 0 -> 18644 bytes
 .../hpc/images/universal_install_script.png        |    1 +
 talks/fosdem-2017/hpc/outline.org                  |   32 ++
 talks/fosdem-2017/hpc/rules.ini                    |    9 +
 talks/fosdem-2017/hpc/talk.tex                     |  605 ++++++++++++++++++++
 20 files changed, 659 insertions(+)

diff --git a/.gitignore b/.gitignore
index a3b5a55..824224e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -94,3 +94,11 @@
 /talks/inria-bordeaux-2016/talk.snm
 /talks/inria-bordeaux-2016/talk.toc
 /talks/inria-bordeaux-2016/talk.vrb
+/talks/fosdem-2017/hpc/talk.aux
+/talks/fosdem-2017/hpc/talk.log
+/talks/fosdem-2017/hpc/talk.nav
+/talks/fosdem-2017/hpc/talk.out
+/talks/fosdem-2017/hpc/talk.pdf
+/talks/fosdem-2017/hpc/talk.snm
+/talks/fosdem-2017/hpc/talk.toc
+/talks/fosdem-2017/hpc/talk.vrb
diff --git a/talks/fosdem-2017/hpc/images/Guix-horizontal-print.pdf 
b/talks/fosdem-2017/hpc/images/Guix-horizontal-print.pdf
new file mode 100644
index 0000000..05b1a3b
Binary files /dev/null and 
b/talks/fosdem-2017/hpc/images/Guix-horizontal-print.pdf differ
diff --git a/talks/fosdem-2017/hpc/images/GuixSD.pdf 
b/talks/fosdem-2017/hpc/images/GuixSD.pdf
new file mode 120000
index 0000000..688296d
--- /dev/null
+++ b/talks/fosdem-2017/hpc/images/GuixSD.pdf
@@ -0,0 +1 @@
+../../../fosdem-2016/distributions/images/GuixSD.pdf
\ No newline at end of file
diff --git a/talks/fosdem-2017/hpc/images/cake.jpg 
b/talks/fosdem-2017/hpc/images/cake.jpg
new file mode 100644
index 0000000..3806080
Binary files /dev/null and b/talks/fosdem-2017/hpc/images/cake.jpg differ
diff --git a/talks/fosdem-2017/hpc/images/docker-image-layers-cropped.png 
b/talks/fosdem-2017/hpc/images/docker-image-layers-cropped.png
new file mode 120000
index 0000000..829451a
--- /dev/null
+++ b/talks/fosdem-2017/hpc/images/docker-image-layers-cropped.png
@@ -0,0 +1 @@
+../../../fosdem-2016/distributions/images/docker-image-layers-cropped.png
\ No newline at end of file
diff --git a/talks/fosdem-2017/hpc/images/easybuild-bug.png 
b/talks/fosdem-2017/hpc/images/easybuild-bug.png
new file mode 100644
index 0000000..70613b0
Binary files /dev/null and b/talks/fosdem-2017/hpc/images/easybuild-bug.png 
differ
diff --git a/talks/fosdem-2017/hpc/images/easybuild.png 
b/talks/fosdem-2017/hpc/images/easybuild.png
new file mode 100644
index 0000000..a535446
Binary files /dev/null and b/talks/fosdem-2017/hpc/images/easybuild.png differ
diff --git a/talks/fosdem-2017/hpc/images/environment-modules.png 
b/talks/fosdem-2017/hpc/images/environment-modules.png
new file mode 100644
index 0000000..e47dd54
Binary files /dev/null and 
b/talks/fosdem-2017/hpc/images/environment-modules.png differ
diff --git a/talks/fosdem-2017/hpc/images/frozen-pizza.jpg 
b/talks/fosdem-2017/hpc/images/frozen-pizza.jpg
new file mode 120000
index 0000000..20306e2
--- /dev/null
+++ b/talks/fosdem-2017/hpc/images/frozen-pizza.jpg
@@ -0,0 +1 @@
+../../../fosdem-2016/distributions/images/frozen-pizza.jpg
\ No newline at end of file
diff --git a/talks/fosdem-2017/hpc/images/openhub-activity.png 
b/talks/fosdem-2017/hpc/images/openhub-activity.png
new file mode 100644
index 0000000..f737e21
Binary files /dev/null and b/talks/fosdem-2017/hpc/images/openhub-activity.png 
differ
diff --git a/talks/fosdem-2017/hpc/images/openhub-contributors.png 
b/talks/fosdem-2017/hpc/images/openhub-contributors.png
new file mode 100644
index 0000000..9e87963
Binary files /dev/null and 
b/talks/fosdem-2017/hpc/images/openhub-contributors.png differ
diff --git a/talks/fosdem-2017/hpc/images/package-managers-cropped.png 
b/talks/fosdem-2017/hpc/images/package-managers-cropped.png
new file mode 120000
index 0000000..d5f7b16
--- /dev/null
+++ b/talks/fosdem-2017/hpc/images/package-managers-cropped.png
@@ -0,0 +1 @@
+../../../inria-bordeaux-2016/images/package-managers-cropped.png
\ No newline at end of file
diff --git a/talks/fosdem-2017/hpc/images/reppar-front-page.png 
b/talks/fosdem-2017/hpc/images/reppar-front-page.png
new file mode 100644
index 0000000..889538a
Binary files /dev/null and b/talks/fosdem-2017/hpc/images/reppar-front-page.png 
differ
diff --git a/talks/fosdem-2017/hpc/images/singularity-hpc-wire.png 
b/talks/fosdem-2017/hpc/images/singularity-hpc-wire.png
new file mode 100644
index 0000000..0952bc0
Binary files /dev/null and 
b/talks/fosdem-2017/hpc/images/singularity-hpc-wire.png differ
diff --git a/talks/fosdem-2017/hpc/images/spack-bug.png 
b/talks/fosdem-2017/hpc/images/spack-bug.png
new file mode 100644
index 0000000..41de59e
Binary files /dev/null and b/talks/fosdem-2017/hpc/images/spack-bug.png differ
diff --git a/talks/fosdem-2017/hpc/images/spack.png 
b/talks/fosdem-2017/hpc/images/spack.png
new file mode 100644
index 0000000..8dad4c5
Binary files /dev/null and b/talks/fosdem-2017/hpc/images/spack.png differ
diff --git a/talks/fosdem-2017/hpc/images/universal_install_script.png 
b/talks/fosdem-2017/hpc/images/universal_install_script.png
new file mode 120000
index 0000000..e21c111
--- /dev/null
+++ b/talks/fosdem-2017/hpc/images/universal_install_script.png
@@ -0,0 +1 @@
+../../../inria-bordeaux-2016/images/universal_install_script.png
\ No newline at end of file
diff --git a/talks/fosdem-2017/hpc/outline.org 
b/talks/fosdem-2017/hpc/outline.org
new file mode 100644
index 0000000..374cbc4
--- /dev/null
+++ b/talks/fosdem-2017/hpc/outline.org
@@ -0,0 +1,32 @@
+#+TITLE: Optimized & Reproducible HPC Software Deployment
+
+* current HPC software environments are broken
+** distros are old and inflexible, not upgraded
+** thus, sysadmins write their own modules
+** hand-maintained modules break, still inflexible
+** modules may be removed behind your feet
+** thus, users hand-build software in $HOME
+** possibly using language-specific package managers
+** => it's a mess
+* fixing this chaos
+** first approach: easybuild & spack
+*** layered on top of the existing distro
+*** good: packaging work is shared among HPC users, some QA
+*** bad: everyone builds in $HOME -> waste of resources
+*** bad: uses host tools -> not reproducible [screenshots]
+** second approach: app bundles
+*** we have the bits, not the source
+*** 100% reproducibility, but prevents experimentation
+** third approach: can we have our cake and eat it too?
+* Guix
+** what it is
+** example commands
+** isolated builds: 100% reproducible
+** reproducible *yet* customizable [RepPar paper]
+** package variants, personal packages
+* HPC & non-root usage (switch to Pjotr here?)
+** the problem: guix-daemon runs as root because that's the only way to get 
repro build envs
+** solutions:
+*** running guix-daemon as non-root: doesn't work
+*** user namespaces: unfortunately not widely available
+*** relocation: yay!
diff --git a/talks/fosdem-2017/hpc/rules.ini b/talks/fosdem-2017/hpc/rules.ini
new file mode 100644
index 0000000..5a74423
--- /dev/null
+++ b/talks/fosdem-2017/hpc/rules.ini
@@ -0,0 +1,9 @@
+;; 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
diff --git a/talks/fosdem-2017/hpc/talk.tex b/talks/fosdem-2017/hpc/talk.tex
new file mode 100644
index 0000000..d91e010
--- /dev/null
+++ b/talks/fosdem-2017/hpc/talk.tex
@@ -0,0 +1,605 @@
+% The comment below tells Rubber to compile the .dot files.
+%
+% rubber: module graphics
+% rubber: rules rules.ini
+
+\documentclass{beamer}
+
+\usetheme{default}
+
+\usefonttheme{structurebold}
+\usepackage{helvet}
+\usecolortheme{seagull}         % white on black
+
+\usepackage[utf8]{inputenc}
+\PassOptionsToPackage{hyphens}{url}\usepackage{hyperref,xspace,multicol}
+\usepackage[absolute,overlay]{textpos}
+\usepackage{tikz}
+\usetikzlibrary{arrows,shapes,trees,shadows,positioning}
+\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{Optimized \& Reproducible HPC Software Deployment}
+\subtitle{... with GNU~Guix and free software}
+
+\author{Pjotr Prins\footnote{UMC Utrecht, UTHSC GeneNetwork.org} \& Ludovic 
Courtès\footnote{Inria}}
+\date{\small{FOSDEM, February 2017}}
+
+\setbeamertemplate{navigation symbols}{} % remove the navigation bar
+
+\AtBeginSection[]{
+  \begin{frame}
+    \frametitle{}
+    \tableofcontents[currentsection]
+  \end{frame} 
+}
+
+
+\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}
+
+\maketitle
+
+\setbeamercolor{normal text}{bg=guixblue2}
+\begin{frame}
+  \Huge{\textbf{Recipe for a contemporary HPC cluster environment.}}
+\end{frame}
+\setbeamercolor{normal text}{fg=white,bg=black}
+
+% https://www.plafrim.fr/en/the-platform/software-documentation/
+\begin{frame}[plain]
+  \Huge{\#1. Start with an old \& inflexible distro.}
+\end{frame}
+
+\begin{frame}[plain]
+  \Huge{\#2. Add a layer of home-made ``modules''.}
+\end{frame}
+
+\setbeamercolor{normal text}{fg=black,bg=white}
+\screenshot{images/environment-modules}
+\setbeamercolor{normal text}{fg=white,bg=black}
+
+\begin{frame}[plain]
+  \LARGE{\#2b. Tweak the modules.
+  \uncover<2->{\\\#2c. Oh, run-time linker error!}
+  \uncover<3->{\\\#2d. Tweak build flags for user A.}
+  \uncover<4->{\\\#2e. New versions are out, rebuild!}
+  \uncover<5->{\\\#2f. User B unhappy cuz we upgraded.  Ignore?}
+  \uncover<6->{\\...}}
+\end{frame}
+
+\begin{frame}[plain]
+  \Huge{\#3. Spice up with user-built software!}
+\end{frame}
+
+
+\setbeamercolor{normal text}{bg=white}
+\screenshot[width=0.8\paperwidth]{images/package-managers-cropped}
+
+\begin{frame}[plain]
+  \begin{tikzpicture}[remember picture, overlay]
+    \node [at=(current page.center), inner sep=0pt]
+          
{\includegraphics[height=\paperheight]{images/universal_install_script}};
+    \node [at=(current page.north east), anchor=south east, rotate=90,
+           text=black, text opacity=1, fill=white, opacity=.6]{
+      \url{http://xkcd.com/1654/}
+    };
+  \end{tikzpicture}
+\end{frame}
+
+\setbeamercolor{normal text}{bg=guixblue2}
+\begin{frame}
+  \Huge{\textbf{Fixing HPC cluster environments.}}
+\end{frame}
+
+\setbeamercolor{normal text}{bg=white}
+\begin{frame}[plain]
+  \begin{tikzpicture}[overlay]
+    \node [at=(current page.center), anchor=south,
+      fill=white, text width=\paperwidth, text centered,
+      text height=0.5\paperheight]
+          {\includegraphics[width=0.5\paperwidth]{images/easybuild}};
+
+          % 
https://github.com/LLNL/spack/blob/develop/share/spack/logo/spack-logo-text-64.png
+          % 
https://github.com/LLNL/spack/blob/develop/share/spack/logo/spack-logo-white-text-48.png
+    \node [at=(current page.center), anchor=north,
+      fill=white, text width=\paperwidth, text centered,
+      inner sep=0.2\paperheight]
+          {\includegraphics[width=0.4\paperwidth]{images/spack}};
+  \end{tikzpicture}
+\end{frame}
+
+\screenshot[width=\paperwidth]{images/easybuild-bug}
+\screenshot[width=\paperwidth]{images/spack-bug}
+
+\setbeamercolor{normal text}{bg=guixdarkgrey}
+\begin{frame}[plain]
+  \Huge{\textbf{Give up on packaging?}}
+  \\[1.0cm]
+  \uncover<2->{\Large{$\rightarrow$ ``app bundles'' (Docker images \& co.)}}
+\end{frame}
+\setbeamercolor{normal text}{bg=black}
+
+%% \setbeamercolor{normal text}{bg=guixred3,fg=white}
+%% \begin{frame}[plain]
+%%   \begin{quotation}
+%%     \noindent
+%%     \LARGE{``Debian and other distributions are going to be \textbf{that
+%%         thing you run docker on}, little more.''}
+%%   \end{quotation}
+%%   \hfill{--- Jos Poortvliet, ownCloud developer}
+
+%%   \begin{tikzpicture}[overlay]
+%%     \node [at=(current page.south east), anchor=south east]{
+%%       \url{http://lwn.net/Articles/670566/}
+%%     };
+%%   \end{tikzpicture}
+%% \end{frame}
+
+%% \setbeamercolor{normal text}{bg=white}
+%% \begin{frame}[plain]
+%%   \begin{tikzpicture}[remember picture, overlay]
+%%     \node [at=(current page.center), inner sep=0pt]
+%%           
{\includegraphics[height=\paperheight]{images/dockerfile-owncloud-cropped}};
+
+%%     \node [at=(current page.center), anchor=south west, overlay,
+%%            text=black, text opacity=1, fill=white, opacity=.7, text 
width=5cm]
+%%           {\LARGE{It's also that thing you run \emph{inside} Docker!}};
+%%   \end{tikzpicture}
+%% \end{frame}
+
+
+\setbeamercolor{normal text}{bg=white}
+\begin{frame}[plain]
+  \begin{tikzpicture}[remember picture, overlay]
+    \node [at=(current page.center), inner sep=0pt]
+          
{\includegraphics[width=\paperwidth]{images/docker-image-layers-cropped}};
+    \node [at=(current page.north east), anchor=north east,
+           text=black, text opacity=1, fill=white, opacity=.6]{
+      \url{https://imagelayers.io/}
+    };
+  \end{tikzpicture}
+\end{frame}
+
+%% \screenshot{images/frozen-pizza}
+%% \begin{frame}[plain]
+%%   \begin{tikzpicture}[remember picture, overlay]
+%%     \node [at=(current page.center), inner sep=0pt]
+%%           {\includegraphics[height=\paperheight]{images/docker-security}};
+%%     \node [at=(current page.south east), anchor=south east,
+%%            text=black, text opacity=1, fill=white]{
+%%       \small{\url{https://www.banyanops.com/blog/analyzing-docker-hub/}}
+%%     };
+%%     \node [at=(current page.south west), anchor=south west,
+%%            text=black, text opacity=1, fill=white]{
+%%       \small{May 2015}
+%%     };
+%%   \end{tikzpicture}
+%% \end{frame}
+
+\begin{frame}[plain]
+  \begin{tikzpicture}[remember picture, overlay]
+    \node [at=(current page.center), inner sep=0pt]
+          
{\includegraphics[width=0.95\paperwidth]{images/singularity-hpc-wire}};
+    \node [at=(current page.south east), anchor=south east,
+           text=black, text opacity=1, fill=white]{
+      
\tiny{\url{https://www.hpcwire.com/2016/10/20/singularity-containers-easing-scientific-computing}}
+    };
+  \end{tikzpicture}
+\end{frame}
+
+\setbeamercolor{normal text}{bg=black}
+\begin{frame}[plain]{``app bundles'' are headed wrong}
+  \Large{
+    \begin{itemize}
+    \item difficulty to \highlight{compose} software packages
+    \item wrong \highlight{abstraction level}: image vs. package
+    \item \highlight{hardly reproducible}: we have the bits, not the
+      source
+    \item makes it hard to \highlight{customize \& experiment}
+    \end{itemize}
+  }
+\end{frame}
+
+\setbeamercolor{normal text}{bg=white}
+\begin{frame}[plain]
+  \begin{tikzpicture}[remember picture, overlay]
+    \node [at=(current page.center), inner sep=0pt]
+          {\includegraphics[height=\paperheight]{images/cake}};
+    \node [at=(current page.center), anchor=north, text=black,
+           fill=white, opacity=0., text opacity=1.,
+           rounded corners=2mm, inner sep=1cm]{
+      \Huge{\textbf{Can we eat it too?}}
+    };
+  \end{tikzpicture}
+\end{frame}
+\setbeamercolor{normal text}{bg=black}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbeamercolor{normal text}{bg=white}
+\begin{frame}[plain]
+  \begin{tikzpicture}[remember picture, overlay]
+    \node [at=(current page.center), inner sep=0pt]
+          
{\includegraphics[width=0.7\paperwidth]{images/Guix-horizontal-print}};
+  \end{tikzpicture}
+\end{frame}
+\setbeamercolor{normal text}{fg=white,bg=black}
+
+\begin{frame}
+  \LARGE{
+    \begin{enumerate}
+    \item transactional package manager
+    \item software environment manager
+    \item APIs \& tools to customize environments
+    \item packaging tools
+    \end{enumerate}
+  }
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \begin{semiverbatim}
+\$ guix package -i gcc-toolchain openmpi hwloc
+\textrm{...}
+
+\$ eval `guix package --search-paths`
+\textrm{...}
+
+\$ guix package --manifest=my-software.scm
+\textrm{...}
+  \end{semiverbatim}
+
+  %% \begin{tikzpicture}[overlay]
+  %%   \node[rounded corners=4, text centered,
+  %%         fill=guixorange1, text width=3cm,
+  %%         inner sep=3mm, rotate=5, opacity=.75, text opacity=1,
+  %%         drop shadow={opacity=0.5}] at (5, 4) {
+  %%           \textbf{\large{demo}}
+  %%         };
+  %% \end{tikzpicture}
+\end{frame}
+
+%% \setbeamercolor{normal text}{bg=guixdarkgrey,fg=guixred3}
+%% \begin{frame}[fragile]
+%%   \Huge{Want to get started hacking on hwloc?}
+%%   \\[2cm]
+%%   \uncover<2->{\Large{A simple matter of installing the deps, right?}}
+%% \end{frame}
+
+%% \setbeamercolor{normal text}{bg=white}
+%% \begin{frame}[plain]
+%%   \begin{tikzpicture}[remember picture, overlay]
+%%     \node [at=(current page.center), inner sep=0pt]
+%%           {\includegraphics[height=\paperheight]{images/hwloc-graph}};
+%%   \end{tikzpicture}
+%% \end{frame}
+%% \setbeamercolor{normal text}{fg=white,bg=black}
+
+
+\begin{frame}[fragile]
+  %% \frametitle{Bit-Reproducible Builds$^*$}
+  %% \framesubtitle{$^*$ almost!}
+
+  \begin{semiverbatim}
+\$ guix build hello
+\uncover<2->{/gnu/store/\tikz[baseline]{\node[anchor=base](nixhash){\alert<2>{h2g4sf72\textrm{...}}};}-hwloc-1.11.2}
+
+\uncover<3->{\$ \alert<3>{guix gc --references 
/gnu/store/\textrm{...}-hwloc-1.11.2}
+/gnu/store/\textrm{...}-glibc-2.24
+/gnu/store/\textrm{...}-gcc-4.9.3-lib
+/gnu/store/\textrm{...}-hwloc-1.11.2
+}
+  \end{semiverbatim}
+
+  \begin{tikzpicture}[overlay]
+    \node<1>(labelnixhash) [fill=white, text=black, inner sep=0.5cm,
+       rounded corners] at (current page.center) {%
+      \Large{\textbf{isolated build}: chroot, separate name spaces, etc.}
+    };
+
+    \node<2>(labelnixhash) [fill=white, text=black] at (4cm, 2cm) {%
+      hash of \textbf{all} the dependencies};
+    \path[->]<2>(labelnixhash.north) edge [bend left, in=180, out=-45] 
(nixhash.south);
+
+    \draw<4-> (-10pt, 105pt) [very thick, color=guixorange2, rounded 
corners=8pt]
+      arc (10:-50:-50pt and 110pt);
+    \node<4->[fill=white, text=black, text opacity=1, opacity=.7,
+          rounded corners=2mm, inner sep=5mm]
+      at (7, 2) {\textbf{\Large{(nearly) bit-identical for everyone}}};
+  \end{tikzpicture}
+
+\end{frame}
+
+\setbeamercolor{normal text}{bg=white}
+\begin{frame}[plain]
+  \begin{tikzpicture}[remember picture, overlay]
+    \node [at=(current page.center), inner sep=0pt]
+          {\includegraphics[height=0.8\paperheight]{images/reppar-front-page}};
+    \node [at=(current page.south east), anchor=south east,
+           text=black, text opacity=1, fill=white, opacity=.6]{
+      \url{https://hal.inria.fr/hal-01161771/en}
+    };
+  \end{tikzpicture}
+\end{frame}
+\setbeamercolor{normal text}{fg=white,bg=black}
+
+\begin{frame}[plain]
+  \Huge{Creating package variants at the command line}
+\end{frame}
+
+\begin{frame}[fragile]
+  \begin{semiverbatim}
+\$ guix build hwloc \\
+    \alert<1>{--with-source}=./hwloc-42.0rc1.tar.gz
+\textrm{...}
+
+\pause
+\$ guix package -i mumps \\
+     \alert<2>{--with-input}=scotch=pt-scotch
+\textrm{...}
+
+  \end{semiverbatim}
+\end{frame}
+
+\begin{frame}[plain]
+  \Huge{Your personal packages or variants in
+    \texttt{GUIX\_PACKAGE\_PATH}!}
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\setbeamercolor{normal text}{bg=guixblue2}
+\begin{frame}
+  \Huge{\textbf{HPC \& non-root usage.}}
+\end{frame}
+\setbeamercolor{normal text}{fg=white,bg=black}
+
+\begin{frame}[fragile]{}
+  \begin{tikzpicture}[tools/.style = {
+                        text width=35mm, minimum height=4cm,
+                        text centered,
+                        rounded corners=2mm,
+                        fill=white, text=black
+                      },
+                      tool/.style = {
+                        fill=white, text=black, text width=3cm,
+                        text centered
+                      },
+                      daemon/.style = {
+                        rectangle, text width=50mm, text centered,
+                        rounded corners=2mm, minimum height=15mm,
+                        top color=guixorange1,
+                        bottom color=guixyellow,
+                        text=black
+                      },
+                      builders/.style = {
+                        draw=guixorange1, very thick, dashed,
+                        fill=black, text=white, text width=5cm,
+                        rounded corners=2mm,
+                      },
+                      builder/.style = {
+                        draw=guixred2, thick, rectangle,
+                        fill=black, text=white,
+                        rotate=90
+                      }]
+    \matrix[row sep=3mm, column sep=1cm] {
+      \node(builders)[builders, text height=5cm]{}
+          node[fill=black, text=white] at (0, 2) {\large{\textbf{build 
processes}}}
+          node[fill=black, text=white] at (0, 1.5) {chroot, separate UIDs}
+          node[builder] at (-1,-0.5) {\alert{Guile}, make, etc.}
+          node[builder] at ( 0,-0.5) {\alert{Guile}, make, etc.}
+          node[builder] at ( 1,-0.5) {\alert{Guile}, make, etc.}; &
+      \node[tools]{}
+          node[fill=white, text=black] at (0, 1) {\large{\textbf{Guile 
Scheme}}}
+          node[tool] at (0, 0) {\texttt{(guix packages)}}
+          node(client)[tool] at (0, -1) {\texttt{(guix store)}};
+      \\
+
+      \node(daemon)[daemon]{\large{\textbf{build daemon}}}; &
+      &
+      \\
+    };
+  \end{tikzpicture}
+
+  \begin{tikzpicture}[overlay]
+    \path[very thick, draw=guixorange1]
+      (client.south) edge [out=-90, in=0, ->] node[below, sloped]{RPCs} 
(daemon.east);
+    \path[->, very thick, draw=guixorange1]
+      (daemon) edge (builders);
+  \end{tikzpicture}
+\end{frame}
+
+\begin{frame}{Allowing for non-root usage}
+
+  \Large{
+    \begin{enumerate}
+      \setcounter{enumi}{-1}
+    \item {run build daemon \highlight{as non-root}
+      \begin{itemize}
+        \item<2-> not reproducible
+        \item<2-> prevents use of pre-built binaries
+    \end{itemize}}
+    \item {rely on Linux ``\highlight{user namespaces}''
+      \begin{itemize}
+        \item<3-> awesome!
+        \item<3-> ... but support is missing on some systems
+    \end{itemize}}
+    \item make binaries \highlight{relocatable}
+    \end{enumerate}
+  }
+\end{frame}
+
+\setbeamercolor{normal text}{bg=guixblue2}
+\begin{frame}
+  \Huge{\textbf{Relocatable binaries (Pjotr).}}
+\end{frame}
+\setbeamercolor{normal text}{fg=white,bg=black}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setbeamercolor{normal text}{bg=guixblue2}
+\begin{frame}[plain]
+  \Huge{\textbf{Status.}}
+\end{frame}
+\setbeamercolor{normal text}{fg=white,bg=black}
+
+\begin{frame}
+  \Large{
+  \begin{itemize}
+    \item started in 2012
+    \item \highlight{4,800+ packages}, all free software
+    \item \highlight{4 architectures}:\\
+      x86\_64, i686, ARMv7, mips64el
+    \item binaries at \url{https://hydra.gnu.org}
+    \item 0.12.0 released in December 2016
+  \end{itemize}
+  }
+\end{frame}
+
+\begin{frame}{cluster deployments}
+  \Large{
+    \begin{itemize}
+      % http://zvfak.blogspot.ch/2015/07/gnu-guix-for-easily-managing.html
+    \item \highlight{Max Delbrück Center} (DE): 250-node cluster +
+      workstations
+      % https://ubc.uu.nl/infrastructure/
+      % https://wiki.bioinformatics.umcutrecht.nl/pub/HPC/WebHome/HPC_Flyer.png
+    \item \highlight{Utrecht Bioinformatics Center} (NL): 68-node
+      cluster (1,000+ cores)
+      % 
https://www.qriscloud.org.au/support/qriscloud-documentation/75-euramoo-datasheet
+      % 
https://www.qriscloud.org.au/support/qriscloud-documentation/76-flashlite-datasheet
+    \item \highlight{University of Queensland} (AU): 20-node cluster
+      (900 cores)
+    \item<2-> \emph{more to come!}
+    \end{itemize}
+  }
+\end{frame}
+
+\setbeamercolor{normal text}{bg=white}
+\screenshot[width=.9\paperwidth]{images/openhub-activity}
+\screenshot[width=.9\paperwidth]{images/openhub-contributors}
+\setbeamercolor{normal text}{bg=black}
+
+\setbeamercolor{normal text}{bg=guixblue2}
+\begin{frame}[plain]
+  \Huge{\textbf{Wrap-up.}}
+\end{frame}
+\setbeamercolor{normal text}{fg=white,bg=black}
+
+\begin{frame}{Summary}
+  \Large{
+    \begin{itemize}
+    \item Guix supports \highlight{reproducible software environments}
+    \item ... allows for \highlight{experimentation} through customization
+    \item relocation allows unprivileged Guix usage in HPC
+    \end{itemize}
+  }
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}[plain]
+
+\vfill{
+  \vspace{2.5cm}
+  \center{\includegraphics[width=0.2\textwidth]{images/GuixSD}}\\[1.0cm]
+  address@hidden://gnu.org/software/guix/}}}
+}
+
+\end{frame}
+
+\begin{frame}{}
+
+  \begin{textblock}{12}(2, 8)
+    \tiny{
+      Copyright \copyright{} 2010, 2012--2017 Ludovic Courtès address@hidden
+      GNU GuixSD logo, CC-BY-SA 4.0, \url{http://gnu.org/s/guix/graphics}
+
+      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{http://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{http://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{http://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: "american"
+% compile-command: "rubber --pdf talk.tex"
+% End:
+
+%%  LocalWords:  Reproducibility



reply via email to

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