{"id":1522,"date":"2017-11-21T15:06:52","date_gmt":"2017-11-21T15:06:52","guid":{"rendered":"http:\/\/35.198.183.193\/?page_id=1522"},"modified":"2019-06-03T11:02:09","modified_gmt":"2019-06-03T11:02:09","slug":"modules","status":"publish","type":"page","link":"http:\/\/escience.sdu.dk\/index.php\/modules\/","title":{"rendered":"Modules"},"content":{"rendered":"<h4 id=\"what-is-modules\">What are modules?<\/h4>\n<p>It is often desirable to have multiple versions of the same software installed and usable at the same time. The<span>\u00a0<\/span><a href=\"https:\/\/www.tacc.utexas.edu\/research-development\/tacc-projects\/lmod\">lmod modules system<\/a> makes it very easy to specify which version you want to use and keeps everything consistent. There are also circumstances, where one software program will have some environment setting or file that conflicts with a different program, and also has modules that help solve this problem.<\/p>\n<h4 id=\"which-modules-are-available\">Which modules are available?<\/h4>\n<p>Most software packages available on ABACUS2.0 can be found as a module. To see a list of available software run the command<span>\u00a0<\/span><code>module spider<\/code>.<\/p>\n<p>Note that the list below is<span>\u00a0<\/span><em>not<\/em><span>\u00a0<\/span>updated automatically. To get an updated list, rerun the command on the frontend node. You can also look at our<span>\u00a0<\/span><a href=\"\/index.php\/supported-applications\/\">software page<\/a>.<\/p>\n<pre><code>testuser@fe1:~$ module spider\n\n----------------------------------------------------------------------------\nThe following is a list of the modules currently available:\n----------------------------------------------------------------------------\n  amber: amber\/14-2015.04\n\n  cmake: cmake\/3.2.2\n    CMake is a cross-platform, open-source build system\n\n  gcc: gcc\/4.8-c7\n    GCC 4.8 as provided by Centos7\n\n  gromacs: gromacs\/4.6.7, gromacs\/5.0.4-openmpi, gromacs\/5.0.4\n\n  intel: intel\/2015.02\n    Intel Compiler Collection\n\n  intelmpi: intelmpi\/2015.02\n    Intel MPI\n\n  lmod: lmod\/5.7.5\n    Lmod: An Environment Module System\n\n  namd: namd\/2.10\n\n  openmpi: openmpi\/1.8.4\n    OpenMPI\n\n  settarg: settarg\/5.7.5\n\n----------------------------------------------------------------------------\nTo learn more about a package enter:\n\n   $ module spider Foo\n\nwhere \"Foo\" is the name of a module\n\nTo find detailed information about a particular package you\nmust enter the version if there is more than one version:\n\n   $ module spider Foo\/11.1\n----------------------------------------------------------------------------\n<\/code><\/pre>\n<p>You can optionally specify a package name, and it will show you all available versions of that package. For example, here is what it could look like for GROMACS (<span>GROningen MAchine for Chemical Simulations (<\/span><b>GROMACS<\/b><span>)\u00a0<\/span><b>is<\/b><span> a molecular dynamics package mainly designed for simulations of proteins, lipids, and nucleic acids).<\/span><\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"gp\">testuser@fe1:~$<\/span> module spider gromacs\n\n<span class=\"go\">----------------------------------------------------------------------------<\/span>\n<span class=\"go\">  gromacs:<\/span>\n<span class=\"go\">----------------------------------------------------------------------------<\/span>\n<span class=\"go\">     Versions:<\/span>\n<span class=\"go\">        gromacs\/4.6.7<\/span>\n<span class=\"go\">        gromacs\/5.0.4-openmpi<\/span>\n<span class=\"go\">        gromacs\/5.0.4<\/span>\n\n<span class=\"go\">----------------------------------------------------------------------------<\/span>\n<span class=\"go\">  To find detailed information about gromacs please enter the full name.<\/span>\n<span class=\"go\">  For example:<\/span>\n\n<span class=\"go\">     $ module spider gromacs\/5.0.4<\/span>\n<span class=\"go\">----------------------------------------------------------------------------<\/span>\n\n<span class=\"gp\">testuser@fe1:~$<\/span> module spider gromacs\/5.0.4\n\n<span class=\"go\">----------------------------------------------------------------------------<\/span>\n<span class=\"go\">  gromacs: gromacs\/5.0.4<\/span>\n<span class=\"go\">----------------------------------------------------------------------------<\/span>\n\n<span class=\"go\">    This module can be loaded directly: module load gromacs\/5.0.4<\/span>\n\n<span class=\"go\">    Help:<\/span>\n<span class=\"go\">            GROMACS is a collection of molecular dynamics simulation programs.<\/span>\n<span class=\"go\">            http:\/\/www.gromacs.org\/<\/span>\n<\/code><\/pre>\n<\/div>\n<p>The default version is shown last. In general, the default version is always the newest installed version. If you want a specific version, you should always specify it as shown in the later examples.<\/p>\n<h4 id=\"load-a-module\">Load a module<\/h4>\n<p>To load a module, use the command<span>\u00a0<\/span><code>module load modulename<\/code>. The default version will get loaded. If you want a particular version, use<span>\u00a0<\/span><code>module load modulename\/version<\/code>, e.g.:<\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"gp\">testuser@fe1:~$<\/span> module list\n<span class=\"go\">No modules loaded<\/span>\n\n<span class=\"gp\">testuser@fe1:~$<\/span> module load gromacs\n<span class=\"gp\">testuser@fe1:~$<\/span> module list\n<span class=\"go\">Currently Loaded Modules:<\/span>\n<span class=\"go\">  1) intel\/2015.02   2) intelmpi\/2015.02   3) gromacs\/5.0.4<\/span>\n<\/code><\/pre>\n<\/div>\n<p>Note that<span>\u00a0<\/span><code>module load<\/code><span>\u00a0<\/span>automatically loads dependencies. In this case GROMACS (<span>GROningen MAchine for Chemical Simulations (<\/span><b>GROMACS<\/b><span>)\u00a0<\/span><b>is<\/b><span>\u00a0a molecular dynamics package mainly designed for simulations of proteins, lipids, and nucleic acids)<\/span> on a specific version of the Intel compiler and Intel MPI (Message Passing Interface &#8211; definition: <b>is<\/b><span>\u00a0a standardized\u00a0<\/span><b>means<\/b><span>\u00a0of exchanging messages between multiple\u00a0<\/span><b>computers<\/b><span>\u00a0running a parallel program across distributed memory).<\/span><\/p>\n<p>Multiple modules can be loaded in a single command e.g.<\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"gp\">testuser@fe1:~$<\/span> module load cmake gromacs\n<span class=\"gp\">testuser@fe1:~$<\/span> module list\n\n<span class=\"go\">Currently Loaded Modules:<\/span>\n<span class=\"go\">  1) cmake\/3.2.2   2) intel\/2015.02   3) intelmpi\/2015.02   4) gromacs\/5.0.4<\/span>\n<\/code><\/pre>\n<\/div>\n<h4 id=\"unload-a-module\">Unload a module<\/h4>\n<p>To unload a module, use the command<span>\u00a0<\/span><code>module unload modulename<\/code>. To unload everything, use<span>\u00a0<\/span><code>module purge<\/code><\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"gp\">testuser@fe1:~$<\/span> module list\n\n<span class=\"go\">Currently Loaded Modules:<\/span>\n<span class=\"go\">  1) cmake\/3.2.2   2) intel\/2015.02   3) intelmpi\/2015.02   4) gromacs\/5.0.4<\/span>\n\n<span class=\"gp\">testuser@fe1:~$<\/span> module unload gromacs\n<span class=\"gp\">testuser@fe1:~$<\/span> module list\n\n<span class=\"go\">Currently Loaded Modules:<\/span>\n<span class=\"go\">  1) cmake\/3.2.2<\/span>\n\n<span class=\"gp\">testuser@fe1:~$<\/span> module purge\n<span class=\"gp\">testuser@fe1:~$<\/span> module list\n<span class=\"go\">No modules loaded<\/span>\n<\/code><\/pre>\n<\/div>\n<p>Note that<span>\u00a0<\/span><code>module unload<\/code><span>\u00a0<\/span>automatically unloads dependencies.<\/p>\n<h4 id=\"see-what-modules-have-been-loaded\">See what modules have been loaded<\/h4>\n<p>The command<span>\u00a0<\/span><code>module list<\/code><span>\u00a0<\/span>shows which modules have been loaded.<\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"gp\">testuser@fe1:~$<\/span> module list\n\n<span class=\"go\">Currently Loaded Modules:<\/span>\n<span class=\"go\">  1) cmake\/3.2.2   2) intel\/2015.02   3) intelmpi\/2015.02   4) gromacs\/5.0.4<\/span>\n<\/code><\/pre>\n<\/div>\n<h4 id=\"switch-to-a-different-version-of-a-module\">Switch to a different version of a module<\/h4>\n<p>The command<span>\u00a0<\/span><code>module switch modulename modulename\/version<\/code><span>\u00a0<\/span>switches from one version of a module to another.<\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"gp\">testuser@fe1:~$<\/span> module list\n\n<span class=\"go\">Currently Loaded Modules:<\/span>\n<span class=\"go\">  1) intel\/2015.02   2) intelmpi\/2015.02   3) gromacs\/5.0.4<\/span>\n\n<span class=\"gp\">testuser@fe1:~$<\/span> module switch gromacs gromacs\/4.6.7\n<span class=\"gp\">testuser@fe1:~$<\/span> module list\n\n<span class=\"go\">Currently Loaded Modules:<\/span>\n<span class=\"go\">  1) intel\/2015.02   2) intelmpi\/2015.02   3) gromacs\/4.6.7<\/span>\n<\/code><\/pre>\n<\/div>\n<h4 id=\"examine-a-modulefile\">Examine a module file<\/h4>\n<p>If you want to see what the<span>\u00a0<\/span><code>module<\/code><span>\u00a0<\/span>command is doing to your environment, you can run:<\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"gp\">testuser@fe1:~$<\/span> module show amber\/14-2015.04\n<span class=\"go\">------------------------------------------------------------------------------<\/span>\n<span class=\"go\">   \/opt\/sys\/modulefiles\/Apps\/amber\/14-2015.04.lua:<\/span>\n<span class=\"go\">------------------------------------------------------------------------------<\/span>\n<span class=\"go\">help([[       AMBER is a collection of molecular dynamics simulation programs.<\/span>\n<span class=\"go\">        Amber is ONLY available for SDU users.<\/span>\n<span class=\"go\">        http:\/\/ambermd.org\/<\/span>\n<span class=\"go\">]])<\/span>\n<span class=\"go\">whatis(\"AMBER is a collection of molecular dynamics simulation programs\")<\/span>\n<span class=\"go\">conflict(\"amber\")<\/span>\n<span class=\"go\">load(\"intel\",\"openmpi\")<\/span>\n<span class=\"go\">setenv(\"AMBERHOME\",\"\/opt\/sys\/apps\/amber\/14-2015.04\")<\/span>\n<span class=\"go\">setenv(\"AMBER_DAT\",\"\/opt\/sys\/apps\/amber\/14-2015.04\/dat\")<\/span>\n<span class=\"go\">prepend_path(\"PATH\",\"\/opt\/sys\/apps\/amber\/14-2015.04\/bin\")<\/span>\n<span class=\"go\">prepend_path(\"LD_LIBRARY_PATH\",\"\/opt\/sys\/apps\/amber\/14-2015.04\/lib\")<\/span>\n<span class=\"go\">prepend_path(\"LD_RUN_PATH\",\"\/opt\/sys\/apps\/amber\/14-2015.04\/lib\")<\/span>\n<span class=\"go\">prepend_path(\"MANPATH\",\"\/opt\/sys\/apps\/amber\/14-2015.04\/share\/man\")<\/span>\n<span class=\"go\">prepend_path(\"PKG_CONFIG_PATH\",\"\/opt\/sys\/apps\/amber\/14-2015.04\/lib\/pkgconfig\")<\/span>\n<\/code><\/pre>\n<\/div>\n<h4 id=\"module-dependencies\">Module dependencies<\/h4>\n<p>Some modules depend on other modules to work e.g. Gromacs requires the<span>\u00a0<\/span><code>intel<\/code><span>\u00a0<\/span>and<span>\u00a0<\/span><code>intelmpi<\/code><span>\u00a0<\/span>packages. In general dependencies are auto-loaded but in some cases this is not possible e.g. if you want to use two packages that depend on two different MPI implementations:<\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"gp\">testuser@fe1:~$<\/span> module purge\n<span class=\"gp\">testuser@fe1:~$<\/span> module load amber\n<span class=\"gp\">testuser@fe1:~$<\/span> module load gromacs\n\n<span class=\"go\">Lmod has detected the following error: You can only have one mpi module loaded at a time.<\/span>\n<span class=\"go\">You already have openmpi loaded.<\/span>\n<span class=\"go\">To correct the situation, please enter the following command:<\/span>\n\n<span class=\"go\">  module swap openmpi intelmpi\/2015.02<\/span>\n\n<span class=\"go\">Please submit a consulting ticket if you require additional assistance.<\/span>\n<span class=\"go\">...<\/span>\n<\/code><\/pre>\n<\/div>\n<p>In general, the safest option is to<span>\u00a0<\/span><code>module purge<\/code><span>\u00a0<\/span>all modules before loading new modules:<\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"gp\">testuser@fe1:~$<\/span> module purge\n<span class=\"gp\">testuser@fe1:~$<\/span> module load amber\n<span class=\"gp\">testuser@fe1:~$<\/span> <span class=\"c\"># ... use amber ...<\/span>\n<span class=\"gp\">testuser@fe1:~$<\/span> module purge\n<span class=\"gp\">testuser@fe1:~$<\/span> module load gromacs\n<\/code><\/pre>\n<\/div>\n<p>A similar problem occurs for the different available MPI implementations which have been compiled\/optimized for each by the compilers in our system. You should first select the compiler you want to use and then select the MPI implementation:<\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"gp\">testuser@fe1:~$<\/span> module load openmpi\/1.8.4\n\n<span class=\"go\">Lmod has detected the following error:<\/span>\n<span class=\"go\">These module(s) exist but cannot be loaded as requested: \"openmpi\/1.8.4\"<\/span>\n\n<span class=\"go\">   Try: \"module spider openmpi\/1.8.4\" to see how to load the module(s).<\/span>\n\n<span class=\"gp\">testuser@fe1:~$<\/span> module spider openmpi\/1.8.4\n\n<span class=\"go\">------------------------------------------------------------------------------<\/span>\n<span class=\"go\">  openmpi: openmpi\/1.8.4<\/span>\n<span class=\"go\">------------------------------------------------------------------------------<\/span>\n<span class=\"go\">    Description:<\/span>\n<span class=\"go\">      OpenMPI<\/span>\n\n<span class=\"go\">    This module can only be loaded through the following modules:<\/span>\n\n<span class=\"go\">      gcc\/4.8-c7<\/span>\n<span class=\"go\">      intel\/2015.02<\/span>\n\n<span class=\"go\">    Help:<\/span>\n<span class=\"go\">        This module loads the OpenMPI compiler path and environment variables<\/span>\n<span class=\"go\">        http:\/\/www.open-mpi.org\/<\/span>\n\n<span class=\"gp\">testuser@fe1:~$<\/span> module load gcc\/4.8-c7 openmpi\/1.8.4\n<\/code><\/pre>\n<\/div>\n<h4 id=\"using-modules-in-scripts\">Using modules in scripts<\/h4>\n<p>The<span>\u00a0<\/span><code>module<\/code><span>\u00a0<\/span>command can be used in scripts e.g.<span>\u00a0<\/span><a href=\"https:\/\/abacus.deic.dk\/documentation\/slurm\">slurm batch scripts<\/a>:<\/p>\n<div class=\"codehilite\">\n<pre><code><span class=\"c\">#! \/bin\/bash<\/span>\n<span class=\"c\">#SBATCH options<\/span>\n<span class=\"c\">#...<\/span>\n\nmodule purge\nmodule load somemodule\n...\nsome-command-depending-on-some-module\n<\/code><\/pre>\n<\/div>\n<h4 id=\"further-reading\">Further reading<\/h4>\n<ul>\n<li><a href=\"\/index.php\/supported-applications\/\">Software available at Abacus<\/a><\/li>\n<li><a href=\"https:\/\/www.tacc.utexas.edu\/research-development\/tacc-projects\/lmod\">Lmod: Environmental modules system<\/a><span>\u00a0<\/span>main home page.<\/li>\n<li><a href=\"https:\/\/www.tacc.utexas.edu\/research-development\/tacc-projects\/lmod\/user-guide\">Lmod: User guide<\/a>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>What are modules? It is often desirable to have multiple versions of the same software installed and usable at the same time. The\u00a0lmod modules system makes it very easy to specify which version you want<a class=\"moretag\" href=\"http:\/\/escience.sdu.dk\/index.php\/modules\/\"> Read more&hellip;<\/a><\/p>\n","protected":false},"author":1,"featured_media":3986,"parent":0,"menu_order":29,"comment_status":"closed","ping_status":"closed","template":"page-templates\/template-fullwidth.php","meta":[],"_links":{"self":[{"href":"http:\/\/escience.sdu.dk\/index.php\/wp-json\/wp\/v2\/pages\/1522"}],"collection":[{"href":"http:\/\/escience.sdu.dk\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/escience.sdu.dk\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/escience.sdu.dk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/escience.sdu.dk\/index.php\/wp-json\/wp\/v2\/comments?post=1522"}],"version-history":[{"count":9,"href":"http:\/\/escience.sdu.dk\/index.php\/wp-json\/wp\/v2\/pages\/1522\/revisions"}],"predecessor-version":[{"id":6377,"href":"http:\/\/escience.sdu.dk\/index.php\/wp-json\/wp\/v2\/pages\/1522\/revisions\/6377"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/escience.sdu.dk\/index.php\/wp-json\/wp\/v2\/media\/3986"}],"wp:attachment":[{"href":"http:\/\/escience.sdu.dk\/index.php\/wp-json\/wp\/v2\/media?parent=1522"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}