Actions

Difference between revisions of "Load modules"

From ALICE Documentation

(Load modules)
Line 2: Line 2:
 
To load a software module, use <code>module load</code>. In the example below, we will use Python 3.
 
To load a software module, use <code>module load</code>. In the example below, we will use Python 3.
  
<br />Initially, Python 3 is not loaded. We can test this by using the command <code>which</code> that looks for programs the same way that Bash does. We can use it to tell us where a particular piece of software is stored.
+
Initially, Python 3 is not loaded. We can test this by using the command <code>which</code> that looks for programs the same way that Bash does. We can use it to tell us where a particular piece of software is stored.
 
   [me@nodelogin01~]$ which python3
 
   [me@nodelogin01~]$ which python3
 
   /usr/bin/which: no python3 in    (/cm/shared/apps/slurm/18.08.4/sbin:/cm/shared/apps/slurm/18.08.4/bin:/cm/local/apps/gcc/8.2.0/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/me/.local/bin:/home/me/bin)
 
   /usr/bin/which: no python3 in    (/cm/shared/apps/slurm/18.08.4/sbin:/cm/shared/apps/slurm/18.08.4/bin:/cm/local/apps/gcc/8.2.0/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/me/.local/bin:/home/me/bin)
Line 9: Line 9:
 
   [me@nodelogin01 ~]$ module load Python/3.7.2-GCCcore-8.2.0
 
   [me@nodelogin01 ~]$ module load Python/3.7.2-GCCcore-8.2.0
 
   [me@nodelogin01 ~]$ which python3
 
   [me@nodelogin01 ~]$ which python3
   /cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin/python3
+
   /cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin/python3  
  
<br />So what just happened? To understand the output, first we need to understand the nature of the <code>$PATH</code> environment variable. <code>$PATH</code> is a special environment variable that controls where a Linux ''operating system'' (OS) looks for software. Specifically <code>$PATH</code> is a list of directories (separated by <code>:</code>) that the OS searches through for a command. As with all environment variables, we can print it using <code>echo</code>.  
+
So what just happened? To understand the output, first we need to understand the nature of the <code>$PATH</code> environment variable. <code>$PATH</code> is a special environment variable that controls where a Linux ''operating system'' (OS) looks for software. Specifically <code>$PATH</code> is a list of directories (separated by <code>:</code>) that the OS searches through for a command. As with all environment variables, we can print it using <code>echo</code>.  
  
 
   [me@nodelogin01 ~]$ echo $PATH
 
   [me@nodelogin01 ~]$ echo $PATH
 
   /cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/XZ/5.2.4-GCCcore-  8.2.0/bin:/cm/shared/easybuild/software/SQLite/3.27.2-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/Tcl/8.6.9-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/libreadline/8.0-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/ncurses/6.1-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/bzip2/1.0.6- GCCcore-8.2.0/bin:/cm/shared/easybuild/software/GCCcore/8.2.0/bin:/cm/shared/apps/slurm/19.05.1/sbin:/cm/shared/apps/slurm/19.05.1/bin:/cm/local/apps/gcc/8.2.0/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/me/.local/bin:/home/me/bin
 
   /cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/XZ/5.2.4-GCCcore-  8.2.0/bin:/cm/shared/easybuild/software/SQLite/3.27.2-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/Tcl/8.6.9-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/libreadline/8.0-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/ncurses/6.1-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/bzip2/1.0.6- GCCcore-8.2.0/bin:/cm/shared/easybuild/software/GCCcore/8.2.0/bin:/cm/shared/apps/slurm/19.05.1/sbin:/cm/shared/apps/slurm/19.05.1/bin:/cm/local/apps/gcc/8.2.0/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/me/.local/bin:/home/me/bin
You’ll notice a similarity to the output of the <code>which</code> command. In this case, there’s only one difference: the  <code>/cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin</code> directory at the beginning. When we used <code>module load Python/3.7.2-GCCcore-8.2.0</code>, it added this directory to the beginning of our <code>$PATH</code>. Let’s examine what is there:
+
 
 +
You’ll notice a similarity to the output of the <code>which</code> command. In this case, there’s only one difference: the  <code>/cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin</code> directory at the beginning.  
 +
 
 +
When we used <code>module load Python/3.7.2-GCCcore-8.2.0</code>, it added this directory to the beginning of our <code>$PATH</code>. Let’s examine what is there:
 
    
 
    
 
     [me@nodelogin01 ~]$ \ls /cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin
 
     [me@nodelogin01 ~]$ \ls /cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin
Line 21: Line 24:
 
     2to3-3.7   idle3 pip3       py.test pyvenv rst2odt.py sphinx-autogen
 
     2to3-3.7   idle3 pip3       py.test pyvenv rst2odt.py sphinx-autogen
 
     chardetect   idle3.7 pip3.7      python pyvenv-3.7 rst2pseudoxml.py sphinx-build
 
     chardetect   idle3.7 pip3.7      python pyvenv-3.7 rst2pseudoxml.py sphinx-build
     cygdb   netaddr pybabel      python3 rst2html4.py rst2s5.py sphinx-quickstart
+
     cygdb   netaddr pybabel      python3 rst2html4.py rst2s5.py sphinx-quickstart
     cython   nosetests __pycache__  python3.7 rst2html5.py rst2xetex.py tabulate
+
     cython   nosetests __pycache__  python3.7 rst2html5.py rst2xetex.py tabulate
 
     cythonize   nosetests-3.7  pydoc3      python3.7-config rst2html.py rst2xml.py virtualenv
 
     cythonize   nosetests-3.7  pydoc3      python3.7-config rst2html.py rst2xml.py virtualenv
 
     easy_install   pasteurize pydoc3.7    python3.7m rst2latex.py rstpep2html.py wheel
 
     easy_install   pasteurize pydoc3.7    python3.7m rst2latex.py rstpep2html.py wheel
     easy_install-3.7  pbr pygmentize  python3.7m-config  rst2man.py runxlrd.py
+
     easy_install-3.7  pbr pygmentize  python3.7m-config  rst2man.py runxlrd.py
  
 
<br />Taking this to its conclusion, <code>module load</code> adds software to your <code>$PATH</code>. It “loads” software. A special note on this, depending on which version of the <code>module</code> program that is installed at your site, <code>module load</code> may also load required software dependencies.
 
<br />Taking this to its conclusion, <code>module load</code> adds software to your <code>$PATH</code>. It “loads” software. A special note on this, depending on which version of the <code>module</code> program that is installed at your site, <code>module load</code> may also load required software dependencies.

Revision as of 09:00, 9 April 2020

Load modules

To load a software module, use module load. In the example below, we will use Python 3.

Initially, Python 3 is not loaded. We can test this by using the command which that looks for programs the same way that Bash does. We can use it to tell us where a particular piece of software is stored.

  [me@nodelogin01~]$ which python3
  /usr/bin/which: no python3 in     (/cm/shared/apps/slurm/18.08.4/sbin:/cm/shared/apps/slurm/18.08.4/bin:/cm/local/apps/gcc/8.2.0/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/me/.local/bin:/home/me/bin)


We can load the python3 command with module load:

  [me@nodelogin01 ~]$ module load Python/3.7.2-GCCcore-8.2.0
  [me@nodelogin01 ~]$ which python3
  /cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin/python3 

So what just happened? To understand the output, first we need to understand the nature of the $PATH environment variable. $PATH is a special environment variable that controls where a Linux operating system (OS) looks for software. Specifically $PATH is a list of directories (separated by :) that the OS searches through for a command. As with all environment variables, we can print it using echo.

  [me@nodelogin01 ~]$ echo $PATH
  /cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/XZ/5.2.4-GCCcore-  8.2.0/bin:/cm/shared/easybuild/software/SQLite/3.27.2-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/Tcl/8.6.9-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/libreadline/8.0-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/ncurses/6.1-GCCcore-8.2.0/bin:/cm/shared/easybuild/software/bzip2/1.0.6- GCCcore-8.2.0/bin:/cm/shared/easybuild/software/GCCcore/8.2.0/bin:/cm/shared/apps/slurm/19.05.1/sbin:/cm/shared/apps/slurm/19.05.1/bin:/cm/local/apps/gcc/8.2.0/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/me/.local/bin:/home/me/bin

You’ll notice a similarity to the output of the which command. In this case, there’s only one difference: the /cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin directory at the beginning.

When we used module load Python/3.7.2-GCCcore-8.2.0, it added this directory to the beginning of our $PATH. Let’s examine what is there:

   [me@nodelogin01 ~]$ \ls /cm/shared/easybuild/software/Python/3.7.2-GCCcore-8.2.0/bin
   2to3		  futurize	 pip	      pytest		 python3-config  rst2odt_prepstyles.py	sphinx-apidoc
   2to3-3.7	  idle3		 pip3	      py.test		 pyvenv		 rst2odt.py		sphinx-autogen
   chardetect	  idle3.7	 pip3.7       python		 pyvenv-3.7	 rst2pseudoxml.py	sphinx-build
   cygdb	  netaddr	 pybabel      python3		 rst2html4.py	 rst2s5.py		sphinx-quickstart
   cython	  nosetests	 __pycache__  python3.7		 rst2html5.py	 rst2xetex.py		tabulate
   cythonize	  nosetests-3.7  pydoc3       python3.7-config	 rst2html.py	 rst2xml.py		virtualenv
   easy_install	  pasteurize	 pydoc3.7     python3.7m	 rst2latex.py	 rstpep2html.py		wheel
   easy_install-3.7  pbr	 pygmentize   python3.7m-config  rst2man.py	 runxlrd.py


Taking this to its conclusion, module load adds software to your $PATH. It “loads” software. A special note on this, depending on which version of the module program that is installed at your site, module load may also load required software dependencies.

   [me@nodelogin01 ~]$ module list
   Currently Loaded Modules:
     1) shared           5) GCCcore/8.2.0               9) libreadline/8.0-GCCcore-8.2.0  13) GMP/6.1.2-GCCcore-8.2.0
     2) DefaultModules   6) bzip2/1.0.6-GCCcore-8.2.0  10) Tcl/8.6.9-GCCcore-8.2.0        14) libffi/3.2.1-GCCcore-8.2.0
     3) gcc/8.2.0        7) zlib/1.2.11-GCCcore-8.2.0  11) SQLite/3.27.2-GCCcore-8.2.0    15) Python/3.7.2-GCCcore-8.2.0
     4) slurm/19.05.1    8) ncurses/6.1-GCCcore-8.2.0  12) XZ/5.2.4-GCCcore-8.2.0