\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{Lmod: A Modern Environment Module System}


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

\date{November 19, 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}

\begin{frame}{My Passions}
  \begin{itemize}
    \item Make like easier for all w/o getting in the way.
    \item Automate when possible to eliminate repeat tickets.
    \item Manage TACC's Software Hierarchy.
      \begin{itemize}
        \item Match libraries and apps to compiler and MPI stacks.
        \item End the bleeding  when users swap compiler or MPI modules!!
      \end{itemize}
    \item Lmod was first installed on TACC systems in 2009.

  \end{itemize}
\end{frame}

\begin{frame}{Lmod Features (I)}
  \begin{itemize}
    \item A modern replacement for a tried and true solution.
    \item Especially useful w/ software hierarchy $\Rightarrow$ Can't
      load mismatched modules.
    \item Automatically swaps in the libraries (e.g. Boost, fftw,
      PETSc) compatible with the current compiler/MPI stack.
  \end{itemize}
\end{frame}

\begin{frame}{Lmod Features (II)}
  \begin{itemize}
    \item Allow only one module of a given``name'' at a time.
    \item Prevents loading more than one compiler or
      MPI Stack (expert can override!).
    \item Users can save default set of modules and their owned  named collections.
    \item Active development and user community.
    \item Robust regression testing allows for easy refactoring.
  \end{itemize}
\end{frame}

%\begin{frame}[fragile]
%    \frametitle {Lmod for Developers: settarg}
%    \begin{itemize}
%      \item Provide safety, flexibility and repeatability in a dynamic environment.
%      \item Encapsulates the state of the modules loaded and
%        dynamically updates the state when modules change:
%        {\small
%          \begin{alltt}
%    \$ {\color{red} env | grep '^TARG'}
%    {\color{blue}TARG_BUILD_SCENARIO=dbg
%    TARG=OBJ/_x86_64_dbg_gcc-4.6_mpich-3.0
%    TARG_MPI_FAMILY=mpich
%    TARG_MPI=mpich-3.0}
%    \${\color{red} module swap mpich openmpi; opt; env | grep '^TARG'}
%    {\color{blue}TARG_BUILD_SCENARIO=opt
%    TARG=OBJ/_x86_64_opt_gcc-4.6_openmpi-1.6
%    TARG_MPI=openmpi-1.6
%    TARG_MPI_FAMILY=openmpi}
%          \end{alltt}
%          }
%      \end{itemize}
%\end{frame}

\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}
\begin{frame}{Thanks for your attention!}
  \begin{itemize}
    \item Job Level Analytics BoF Thursday 11/21 @ 12:15 to 1:15pm
    \item Lmod BoF (TACC Booth:  Tuesday 11/18 @ 11:00 to 12:00pm)
    \item lmod.sf.net, www.tacc.utexas.edu/tacc-projects/lmod
    \item lmod-users@lists.sourceforge.net
  \end{itemize}
\end{frame}



%\section{Recent Features}
%
%\begin{frame}{Recent Features}
%  \begin{itemize}
%    \item Case-insensitive searching with ``module spider''
%    \item spider, keyword, avail and help now use \texttt{\$PAGER}
%    \item A standard way to support site packages.
%    \item \texttt{getdefault/setdefault} becoming \texttt{save/restore}
%    \item Module files can have properties: MIC, Apps/Lib, ...
%    \item module wrapper command for the typing challenged: ``ml''
%    \item Version Parsing: 5.6 is now older than 5.10
%    \item Mailing list: lmod-users@lists.sourceforge.net
%  \end{itemize}
%\end{frame}
%
%\begin{frame}{Save / Restore}
%  \begin{itemize}
%    \item \texttt{getdefault/setdefault} becoming \texttt{save/restore}
%    \item \texttt{module restore} load user's default or system
%      default when user's default doesn't exist
%    \item \texttt{reset} and \texttt{getdefault/setdefault} will be deprecated.
%  \end{itemize}
%\end{frame}
%
%\begin{frame}[fragile]
%    \frametitle{Module Properties}
%  \begin{itemize}
%    \item TACC is deploying Stampede with MIC accelerators
%    \item Some modules will be ``MIC'' aware: mkl, fftw3, phdf5, ...
%    \item Lmod will decorate these modules:
%  {\tiny
%    \begin{alltt}
%  1) unix/unix     3) ddt/ddt       5) mpich2/1.5    7) {\color{blue}phdf5/1.8.9 (m)}
%  2) intel/13.0    4) {\color{red}mkl/mkl (*)}   6) petsc/3.2     8) PrgEnv
%
%  Where:
%   {\color{blue}(m)}:  module is build natively for MIC
%   {\color{red}(*)}:  module is build natively for MIC and offload to the MIC
%
%   ------
%   add_property("arch","mic")              -- > phdf5
%   add_property("arch","mic:offload")      -- > mkl
%    \end{alltt}
%}
%  \item What properties would you like to support?
%  \end{itemize}
%\end{frame}
%
%
%\begin{frame}{For those who can't type: ``\texttt{ml}''}
%  \begin{itemize}
%    \item \texttt{ml} is a wrapper:
%      \begin{itemize}
%        \item With no argument: \texttt{ml} means \texttt{module list}
%        \item With a module name: \texttt{ml foo} means \texttt{module
%            load foo}.
%        \item With a module command: \texttt{ml spider} means
%          \texttt{module spider}.
%      \end{itemize}
%    \item See \texttt{ml --help} for more documentation.
%    \item With \texttt{ml}, you never need to spell ``\texttt{moduel, moudule, module}''
%      correctly again.
%  \end{itemize}
%\end{frame}
%
%\begin{frame}{Module version sorting}
%  \begin{itemize}
%    \item Old way lexicographically sort: 5.6 is newer that 5.10
%    \item New way 5.10 is newer than 5.6
%    \item Old to new: 2.4dev1, 2.4a1, 2.4rc2, 2.4, 2.4-1, 2.4.1
%    \item Same: 2.4-1, 2.4p1, 2.4-p1
%    \item Old to new: 3.2-shared, 3.2
%  \end{itemize}
%\end{frame}
%
%\section{Topics to Discuss}
%
%\begin{frame}{Questions for users of Lmod}
%  \begin{itemize}
%    \item How big are your system?
%    \item Any of you use a lustre based home file system?
%    \item Biggest headaches with Module Systems or Lmod:
%      \begin{itemize}
%        \item Trouble dealing with staff?
%        \item Trouble converting users?
%      \end{itemize}
%    \item Software Hierarchy vs Prereq/Conflict?
%    \item Best story/Worst Story in dealing with Modules/Lmod?
%  \end{itemize}
%\end{frame}
%
%\begin{frame}{Topics to Discuss}
%  \begin{itemize}
%    \item Getting Bash to work right.
%    \item Leveraging Lmod to know what software your users are using.
%    \item Using modulefiles and a package manager (e.g. rpm)
%    \item Using SitePackage.
%    \item Feature requests.
%  \end{itemize}
%\end{frame}
%
%\begin{frame}{Projects}
%  \begin{itemize}
%    \item Fast directory tree walker for lustre. (similar
%      functionality to luafilesystem) (Anyone interested?)
%    \item Allow users with personal modules use system caches (R. McLay)
%    \item Produce Json output of entire module system to populate
%      system software web-pages (R. McLay - just completed)
%    \item Support for options after commands:  \texttt{module keyword --prop mic}
%    \item Other support for properties: searching?,
%    \item What happens when a site wants two or more sets of properties?
%  \end{itemize}
%\end{frame}
%
%
%
%
%
%\section{Conclusion}
%
%\begin{frame}{For more information}
%  \begin{itemize}
%    \item Download source from: lmod.sourceforge.net (lmod.sf.net)
%    \item Documentation: www.tacc.utexas.edu/tacc-projects/mclay/lmod
%    \item Introduction to Lmod talk at lmod.sf.net.
%    \item Best Practices Paper from SC'11
%  \end{itemize}
%\end{frame}
%
%\section{Extra}
%
%
%\begin{frame}[fragile]
%    \frametitle{.lmodrc.lua}
%  {\tiny
%    \begin{alltt}
%propT = \{
%   arch = \{
%      validT = \{ mic = 1, offload = 1, gpu = 1, \},
%      displayT = \{
%         ["mic:offload"]     = \{ short = "(*)",  color = "red",     doc = "...",\},
%         ["mic"]             = \{ short = "(m)",  color = "blue",    doc = "...",\},
%         ["offload"]         = \{ short = "(o)",  color = "blue",    doc = "...",\},
%         ["gpu"]             = \{ short = "(g)",  color = "magenta", doc = "...",\},
%         ["gpu:mic"]         = \{ short = "(gm)", color = "magenta", doc = "...",\},
%         ["gpu:mic:offload"] = \{ short = "(@)",  color = "magenta", doc = "...",\},
%      \},
%   \},
%\}
%
%    \end{alltt}
%}
%\end{frame}
%
%\begin{frame}{Getting Bash to work right}
%  \begin{itemize}
%    \item At TACC we rebuild bash so that it reads /etc/bashrc on
%      interactive shells.
%    \item It also reads \texttt{/etc/bash\_logout} on logout.
%    \item We patch config-top.h to change bash behavior.
%    \item Ubuntu does the same, Red Hat does not.
%  \end{itemize}
%\end{frame}
%
%\begin{frame}{SitePackage}
%  \begin{itemize}
%    \item Lmod now has a standard way to include site-specific functions
%    \item See Contrib/SitePackage for details
%  \end{itemize}
%\end{frame}
%
%
%\begin{frame}{Track software usage}
%  \begin{itemize}
%    \item Track software usage via syslog or logout data.
%    \item Lmod can build a reverse map: directories to modules
%  \end{itemize}
%\end{frame}

%%\begin{frame}{Topics to Discuss}
%%  \begin{itemize}
%%    \item Getting Bash to work right.
%%    \item Leveraging Lmod to know what software your users are using.
%%    \item Best Practices w.r.t. module files
%%    \item Using modulefiles and a package manager (e.g. rpm)
%%    \item Using SitePackage.
%%    \item Feature requests.
%%  \end{itemize}
%%\end{frame}




\end{document}
