Notes for Star 15 Talk on Lmod and XALT.

* Intro
** I care about tools.

Tools that make a difference in how the our computer systems get used.
Making the lives of the people who run the system easier by making the
system easier to use. Also preventing users from making mistakes.

Using a supercomputer is not any easy thing. But here are two tools
I've worked on to make the situation just a little bit better.

** This talk is about Lmod and XALT
This talk may appear to be about two different tools that I have
worked on that have little in common.  But we use Lmod to help us
better understand what XALT tell us.
And really notions from one fed the other and back again.
** What are these tools:
Lmod is our replacement for Environment Module system.  It has the
same interface as the Env. Modules System has always had but with many
more features and can handle situation not handled by the original tool.

XALT is our census taker.  It tells us what program (and libraries)
that users ran on our system.


* Lmod

** What are modules?

Let me remind you about modules:

Env. Modules are a very clever way of providing software to our
users that I DIDN'T invent.  Different users can load the software
that they want independent of what software others are using.

As a developer of software, I get to build and test my software
against different compilers and mpi stacks easily.  I simply unload
what I don't want and load what I do.

In one sense, all the module command does is change the path and set
env. variables easily and reversably.  But it is key to how we manage
our system and provide software to our users.

** Why develop yet another module tool when the "Env. Modules System" works just fine?

Well, there are many thing right with the original tool.  But it's
design is stuck in the 90's when we had one compiler and didn't have
MPI.  Now we have multiple compilers with multiple versions and
multiple mpi stacks again with multiple versions.

Sites around the work make the original work, but without herculean
efforts, it is usually easy for users to mismatch libraries built with
the wrong compiler or mpi stack.  This can sometimes lead to very
difficult and strange errors.

Lmod is designed from the ground up to prevent users from loading
miss-matched libraries and applications.  We layout modules in a
certain way (and Lmod makes it easy to change modules


* Lmod features:

** It is a drop-in replacement for Tmod
** It reads TCL modules on the fly
** A growing community.
   Not as big as Tmod but it is growning with
   every version.  Used at ... nationally, Used at .. around the world.
** Lmod is written Lua.  A much easier language than TCL to work with.

** Spider and reverse map

* Lmod Demo
** Log on to stampede/maverick or my laptop.
** Show a module load intel, mvapich2, phdf5, pmetis, fftw2
   swap compiler or mpi
   Users CAN'T load mis-match modules
** Module spider
** Module collections.
** The One version rule
** Auto Swap: Don't swap compiler, just load it.

* XALT
** A lightweight tool to find out what programs and libraries are running on the system.
** We use the reverse map to map paths back to modules.

** It is not a performance tool:
There are plenty of tools that do that and nothing that does this
(that we know of)
** It hijacks the linker and job launcher (mpirun, etc)
** In future, (like by the end of the year) it will only hijack the linker.
** It finds out what libraries are used and who built it during linking
** It knows what programs and shared libraries at run time.

* XALT & Lmod data collection: What can you do with it?

** We track very module load.  We know what modules are used (and NOT!)
** We know what programs with what libraries are use as well
** We know who built the program
system,
same user built and ran
one user built, another ran
** We know language "main" was written in by tracking the linking program.

* XALT Demo:

** Show standard demo
** add i18n program name
**
