Skip to content

Conference notes for 2022 10 06

Robert McLay edited this page Oct 17, 2022 · 1 revision

Agenda for Lmod Zoom Mtg Oct. 6th 2022 at 9:30 Central (14:30 UTC)

Attendees

  • Robert McLay (TACC)
  • Matthew Cawood (TACC)
  • Kenneth Hoste (HPC-UGent)
  • Raj Ayyampalayam (University of Georgia)
  • Sebastien Moretti (SIB, Switzerland)
  • Kaylea Nelson (Yale Univ.)
  • Dan Green (NC State Univ.)

Agenda

  • Q/A
  • Quick Demo of git worktree
  • Presentation on How Lmod loads modulefiles (part 2)
  • Next Meeting Tue Nov. 8th at 9:30 US Central (15:30 UTC)

Notes

Demo on git worktree

  • see https://git-scm.com/docs/git-worktree
  • Why use git worktree commands when branching:
    • A replacement for git stash and git stash pop
    • Or git clone and check out a different branch somewhere in your account
    • git worktree is much faster than git clone (and branches do not get lost in your account)
    • Branches can be left in an incomplete state. You can come back to them later
  • Important commands
    • git worktree add directory -> create or open a branch
      • git worktree add ../testing -> switch or open testing branch
    • git worktree list -> list checked out branches
    • git worktree remove directory -> remove branch and files
  • Doesn't work with git submodules
  • Uses hard paths: do not rename directory layout
  • alias gw="git worktree"
  • Example of three different directory layouts
    • Have worktrees at the same level as bare repo (type A)
    • Have layout like ~/w/lmod/{bare,master,testing} (type B)
    • Checkout main branch then place worktrees in ~/w/lmod/.worktree (type C)
      • cd w/lmod; git worktree add .worktree/testing
    • (Add .worktrees in .gitignore)
  • Youtube links

How Lmod loads modulefiles (part 2)

  • presentation available at https://github.com/TACC/Lmod/blob/master/my_docs/22/lmod_zoom_mtg_2022_10_04/presentation.pdf
  • Part 1 was presented on 7 June 2022
  • once loading of module is done:
    • module is marked as "active"
    • framestack is popped
  • Tcl module files are basically converted to Lua on the fly
    • but that's the subject of a whole separate talk (next meeting?)
  • sandbox restricts which functions can be called in a module file
    • sites can add additional functions that can be called in sandbox
  • Lmod doesn't actually evaluate the module file, Lua does!
    • Lmod code is only called when executing setenv(), etc. functions
  • Lmod will not print any environment changes until all modules being loaded have been processed
    • all environment changes by modules being loaded are kept in the 'varT' table
    • a break statement in a module file being loaded may cancel the whole process!

Q&A

  • How big is the Lmod codebase?

    • ~30k LoC (~25k in src/, ~5k in tools/)
    • bulk is in MasterControl.lua, Spider.lua, Master.lua
  • NC State Univ. recently started using Lmod on their workstations too

    • mix of CentOS 7, RHEL8, Ubuntu
    • all using same Lmod deployment
    • some apps don't run on some OS's
    • can an OS restriction be set in a module file?
      • so output of "module avail" can indicate whether a module is compatible with a particular OS
    • could separate module files in separate trees (one per OS)
      • won't work, since module files should always be visible
    • module files could set a property that specifies where those modules are supported
      • environment variable could be set via /etc/profile script that specifies type of OS
      • each module file could call a "central" function that determines whether the module file is compatible
    • VUB does similar things w.r.t. dynamically hiding module files
    • good question for Lmod mailing list
  • How to subscribe to Lmod mailing list

  • Ubuntu version of Lmod is quite old?

Next meeting

Clone this wiki locally