\documentclass{beamer}

\usetheme[headernav]{TACC} %%Drop the 'headernav' if you don't like
                           %%the stuff at the top of your slide

\usepackage{amsmath,amssymb,amsthm}
\usepackage{alltt}
\usepackage{graphicx}

\title{TACC Booth BoF SC14: Transitioning to Lmod}


\author{Robert McLay}
\institute{The Texas Advanced Computing Center}

\date{November 18, 2014}  %% Use this if you want to fix the date in
                        %% stone rather than use \today

\newcommand{\bfnabla}{\mbox{\boldmath$\nabla$}}
\newcommand{\laplacian}[1]{\bfnabla^2 #1}
\newcommand{\grad}[1]{\bfnabla #1}
\newcommand{\tgrad}[1]{\bfnabla^T #1}
\newcommand{\dvg}[1]{\bfnabla \cdot #1}
\newcommand{\curl}[1]{\bfnabla \times #1}
\newcommand{\lap}[1]{\bfnabla^2 #1}

\begin{document}

\begin{frame}
  \titlepage
\end{frame}

\section{Introduction}

\begin{frame}{Transitioning to Lmod}
  \begin{itemize}
    \item What does Lmod offer?
    \item A transition strategy
    \item New features
  \end{itemize}
\end{frame}


\begin{frame}{Why You Might Want To Switch}
  \begin{itemize}
    \item Active Development;  Frequent Releases; Bug fixes.
    \item Vibrant Community
    \item It is used from Norway to Isreal to New Zealand from Stanford to MIT to NASA
    \item Enjoy many capabilities w/o changing a single module file
    \item Debian and Fedora packages available
    \item Many more advantages when you're ready
  \end{itemize}
\end{frame}

\begin{frame}{Features requiring no changes to modulefiles}
  \begin{itemize}
    \item Reads TCL modulefiles directly (Cray modules supported)
    \item User default and named collections of modules
    \item Module cache system: Faster avail, spider, etc
    \item Tracking module usage
    \item A few edge cases where Env. Modules and Lmod differ
  \end{itemize}
\end{frame}

\begin{frame}{Features of Lmod with small changes to modulefiles}
  \begin{itemize}
    \item Family function: Prevent users from loading two compilers at
      the same time (experts can override)
    \item Properties: (MIC-aware, Beta, etc)
    \item Sticky modules
    \item ...
  \end{itemize}
\end{frame}

\begin{frame}{Lmod supports a software hierarchy}
  \begin{itemize}
    \item Lmod supports flat layout of modules
    \item Some really cool features if you have a software hierarchy
      \begin{itemize}
        \item Protecting users from mismatched modules
        \item Auto Swapping of Compiler and MPI dependent modules
      \end{itemize}
    \item When you are ready, it will be there
  \end{itemize}
\end{frame}

\section{A Transition Strategy}

\begin{frame}{A Transition Strategy}
  \begin{itemize}
    \item Install Lmod in your account
    \item Staff \& Friendly Opt-in Testing
    \item Deploy to your users with an Opt-out choice
    \item Some users can run TCL/C modules
    \item Others can run Lmod
  \end{itemize}
\end{frame}

\begin{frame}{Personal Testing of Lmod}
  \begin{itemize}
    \item Install it in your account
      \begin{itemize}
        \item Figure out the list of modules you normal load
        \item \texttt{\bf \$ module purge;}
        \item Redefine module command to use Lmod
        \item \texttt{\bf \$ module load} \emph{mod1 mod2 ...}\texttt{\bf ;}
      \end{itemize}
    \item I normally run a personal copy of Lmod in all my accounts
      (including \texttt{\bf darter}, a Cray XC-30)
    \item Test, build a spider cache, module avail
    \item Module collections, ...
  \end{itemize}
\end{frame}

\begin{frame}{Staff \& Friendly User Testing}
  \begin{itemize}
    \item Install Lmod in system location.
    \item Install \emph{/etc/profile.d/z00\_lmod.sh} to redefine the
      \texttt{\bf module} cmd.
    \item Load system  default modules (if any) after previous step
    \item Users who have a directory \texttt{$\sim$/.lmod.d} use lmod
    \item At TACC we did this for 6 months
  \end{itemize}
\end{frame}

\begin{frame}{Deploy}
  \begin{itemize}
    \item When you are ready, change \emph{/etc/profile.d/z00\_lmod.sh}
    \item Users can opt-out
    \item We supported this for another 6 months
    \item We broke Env. Module support when we added the family function
    \item Both transitions generated very few tickets (2 + 2)
  \end{itemize}
\end{frame}


\section{A Site Story}

\begin{frame}{Maxime Boissonneault from Calcul Qu\'{e}bec}
  \begin{itemize}
      \item Maxime will talk about his experiences with Lmod
  \end{itemize}
\end{frame}


\section{What's new in Lmod}

\begin{frame}{What's new in Lmod}
  \begin{itemize}
      \item Full support for reading Cray module files.
      \item Better support for running Lmod on shared home file systems.
      \item Priority Path: Some paths are more equal than others.
      \item \texttt{\bf sh\_to\_modulefile} converts shell scripts into modulefiles.
      \item Support for \texttt{\bf load(atleast("gcc","4.8"))}
  \end{itemize}
\end{frame}

\begin{frame}{Auto swap}
  \begin{itemize}
      \item An improvement suggested by Maxime Boissonneault.
      \item Replace \texttt{\bf module load gcc; module swap gcc intel}
      \item With \texttt{\bf module load gcc; module load intel}
      \item Let Lmod figure out that a swap is required and do it for you!
  \end{itemize}
\end{frame}

\end{document}
