1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276
|
%* installation (deps, build/install procedure, making module/ml work)
%* configuration (either via ./configure at build time, or via
% $LMOD_FOO), most important configure options
%* setting up the system spider cache: configuring Lmod, updating spider
% cache, difference between system/user spider cache
%* + all (other) aspects mentioned on slide #26 in this slide deck:
% explained + example :)
%* what settarg is all about
\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}
\author{Robert McLay}
\institute{The Texas Advanced Computing Center}
\date{Nov. 11, 2015} %% 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{Lmod}
\begin{frame}{Lmod}
\begin{itemize}
\item Introduction: Remind everyone about Lmod
\item Lmod: Our Env. Module System
\end{itemize}
\end{frame}
\begin{frame}{Why invent Y.A. Module System?}
\begin{itemize}
\item Many thing right with the Original.
\item But it was designed before multi-compilers/MPI
\item Sites make it work but with herculean efforts
\item Lmod can make this work easily.
\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 Lua and 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 (a.k.a. Tmod)
\item Others can run Lmod
\item No single user can run both at the same time!
\item Transistion doc: lmod.readthedocs.org
\end{itemize}
\end{frame}
\begin{frame}{Lmod Features}
\begin{itemize}
\item Support for a Hierarchical Module layout
\item Module spider: find all modules
\item Caching system for rapid avail and spider
\item Support for Properties
\item Module collections, output to stdout, proper version sorting
\item Reads TCL modulefiles directly (Cray modules supported)
\item And so much more...
\end{itemize}
\end{frame}
\begin{frame}{Lmod Documentation}
\begin{itemize}
\item lmod.readthedocs.org
\item Beginning Topics: User, FAQ
\item Intermediate Topics: Transitioning to Lmod, Installing Lmod,
Software Hierarchy
\item Advanced Topics: Generic Modules, Deprecating Modules,
\item How to install Lmod on a Shared File system.
\item And much more.
\end{itemize}
\end{frame}
\begin{frame}{Lmod handling of Cray modules}
\begin{itemize}
\item NO DUPS: Lmod now correctly handles no duplicated in a
PATH-like variable.
\item TMOD\_RULE: if an entry is in a path do not replace it.
\item GNU4.8\_LIB: Prevent Lmod from generating variables with a
`.' in it.
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Injecting the Software Hierarchy into Cray Modules}
\begin{itemize}
\item Goal: Create the Software Hierarchy where there is none.
\item Create the following module /opt/apps/modulefiles/PrgEnv-intel/5.2.40.lua
{\small
\begin{alltt}
local name = myModuleName():gsub("PrgEnv%-","")
local mpath = pathJoin("/opt/apps",name,
myModuleVersion(),"modulefiles")
inherit()
prepend_path("MODULEPATH",mpath)
family("MPI_COMPILER")
\end{alltt}
}
\item The \texttt{inherit()} function will load /opt/cray/PrgEnv-intel/5.2.40
\item The directory /opt/apps/intel/5.2.40/modulefiles is prepend
to MODULEPATH
\end{itemize}
\end{frame}
\begin{frame}{Lmod and the Pager}
\begin{itemize}
\item Cray and Mac OS default the pager to less (not more)
\item By default you have to type ``q'' to exit less
\item Lmod now uses \texttt{LMOD\_PAGER} as \texttt{less}
\item \texttt{LMOD\_PAGER\_OPTS} as \texttt{-XqMREF}
\item This will give consistant behavior across systems.
\end{itemize}
\end{frame}
\section{Topics for Hackathon}
\begin{frame}{Possible change to Lmod: Do not reload}
\begin{itemize}
\item Tmod doesn't reload a module if it is already loaded.
\item Lmod always reloads
\item Reloads the right thing to do in hierarchies.
\item Not reloading might help sites transitioning from Tmod.
\item This might help with Kenneth's problem. (;-$>$)
\end{itemize}
\end{frame}
\begin{frame}{Invisible Modules}
\begin{itemize}
\item Tmod and Lmod have always supported hidden modules.
\item Hidden modules are module names that start with a leading
``.'' in the version.
\item Module names with dot are ignored completely.
\item They do not show up with avail or spider but can be loaded
and will be listed.
\item This is a way to provide a module for testing without making
it publicly available
\item Invisible would be new and this hackathon would be a place
to discuss what this means.
\end{itemize}
\end{frame}
\begin{frame}{Invisible Modules: Motivation}
\begin{itemize}
\item Cray have architecture modules that aren't needed:
craype-barcelona, ...
\item Sites may wish install real module names and hide them for
testing
\item But what does this mean?
\end{itemize}
\end{frame}
\begin{frame}{What are the rules?}
\begin{itemize}
\item Can users load an invisible module? Yes
\item Can you make all versions of a module invisible? Yes
\item Can you make a single version invisible? Yes
\item Can an invisible module be the default? No
\item How will sites mark modules as invisible?
\item Yet another Lua table? Combine with lmodrc.lua?
\end{itemize}
\end{frame}
\begin{frame}{Default Handling (I)}
\begin{itemize}
\item The current default handling works well but ...
\item It doesn't work with \textasciitilde/.modulerc when users set their own
default.
\item It won't work with invisible modules.
\end{itemize}
\end{frame}
\begin{frame}{Default handling (II)}
\begin{itemize}
\item Selection of what the default module is already complicated.
\item Especially when there are multiple directories in MODULEPATH.
\item Lmod Rules for picking a default:
\begin{itemize}
\item The first marked default is chosen in MODULEPATH order
\item The Highest version is chosen in MODULEPATH order.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Default handling (III)}
\begin{itemize}
\item Lmod current thinks it knows what the defaults are by
walking the directory trees.
\item The spider cache will have to be built based on walking the
tree.
\item But there will have to enough information to compute the
default in light of \textasciitilde/.modulerc and invisible modules.
\end{itemize}
\end{frame}
\begin{frame}{Conclusions}
\begin{itemize}
\item Do not reload option.
\item Invisible modules and what does this mean
\item Default Handling
\end{itemize}
\end{frame}
\end{document}
|