Software ======== There are a number of software packages installed. To make a particular package available to use we are using the Environment Modules system. There are several implementations of Modules, BlueCrystal Phase 4 has `Lmod `_ which has several newer features over the `TCL version `_ (which was used on Phase 3). Using Modules ------------- To see the basic usage message run the command with no arguments: .. code:: bash module To see all the modules that are available use ``module avail`` (example output elided for brevity) .. code:: bash [ce16990@bc4login5 ~]$ module avail -------------------------- /mnt/storage/easybuild/modules/local -------------------------- apps/amber16/tools17-mpi-intel apps/blast/gnu/2.7.1 apps/chimera/1.12rc apps/cp2k/5.1 apps/crystal/17v1.0.1-mpi-intel apps/ctffind4/4.1.8 apps/gromacs/5.1.4-plumed-mpi-intel apps/gromacs/5.1.4-mpi-intel (D) apps/iqtree/omp-1.5.5 apps/ls-dyna/971R7.1.2 apps/mafft/gnu/7.313-with-ext apps/motioncor2/2-1.0.2 [ ... ] tools/cmake/3.8.2 tools/subversion/1.9 tools/sunstudio/12.6 --------------------------- /mnt/storage/easybuild/modules/all --------------------------- APR/1.5.2-foss-2016b APR-util/1.5.4-foss-2016b ATLAS/3.10.2-GCC-5.4.0-2.26-LAPACK-3.6.1 Autoconf/2.69-foss-2016a Autoconf/2.69-foss-2016b [ ... ] zlib/1.2.8 zlib/1.2.11-GCCcore-6.3.0 (D) .. NOTE:: The recommended modules on BC 4 are in the top section of ``module avail`` headed ``/mnt/storage/easybuild/modules/local``. Modules in the section below this can lead to dependency issue and should be avoided if possible. To find out more about a particular module use ``module whatis`` and the name of the module, e.g.: .. code:: bash [ce16990@bc4login1 ~]$ module whatis hwloc hwloc/1.11.4-gcccuda-2016.10 : Description: The Portable Hardware Locality (hwloc) software package prov ides a portable abstraction (across OS, versions, architectures, ...) of the hierarchical topology of modern architectures, including NUMA memory nodes, sockets, shared caches, cores and simultaneous multithreading. It also gathers various system attributes such as cache and memory information as well as the locality of I/O devices such as network interfaces, InfiniBand HCAs or GPUs. It primarily aims at helping applications with gathering information about modern computing hardware so as to exploit it accordingly and efficiently. - Homepage: http://www.open-mpi.org/projects/hwloc/ To list the modules you currently have loaded use ``module list`` e.g.: .. code:: bash [ce16990@bc4login1 ~]$ module list Currently Loaded Modules: 1) zlib/1.2.8 To load a module use ``module load`` and the name of the module, you can use the full name or a shorter version if it is unique. Afterwards your ``$PATH`` and some other variables will have been changed and you will be able to use the software: .. code:: bash [ce16990@bc4login1 ~]$ which java /usr/bin/which: no java in (/mnt/storage/home/chzcjw/local/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/lpp/mmfs/bin:/mnt/storage/home/ce16990/.local/bin:/mnt/storage/home/ce16990/bin) [ce16990@bc4login1 ~]$ module load Java/1.8.0_92 [ce16990@bc4login1 ~]$ module list Currently Loaded Modules: 1) zlib/1.2.8 2) Java/1.8.0_92 [ce16990@bc4login1 ~]$ which java /mnt/storage/easybuild/software/Java/1.8.0_92/bin/java To unload use ``module unload`` and the name of the module: .. code:: bash [ce16990@bc4login1 ~]$ module unload Java [ce16990@bc4login1 ~]$ module list Currently Loaded Modules: 1) zlib/1.2.8 To unload all modules at once use ``module purge`` .. code:: bash [ce16990@bc4login1 ~]$ module purge [ce16990@bc4login1 ~]$ module list No modules loaded Module Dependencies ------------------- If a module depends on another one for correct operation, Lmod loads the dependent modules for you as well. E.g. .. code:: bash [ce16990@bc4mgmt1 docs]$ module list # before No modules loaded [ce16990@bc4mgmt1 docs]$ module load languages/intel/2017.01 [ce16990@bc4mgmt1 docs]$ module list # after Currently Loaded Modules: 1) GCCcore/5.4.0 5) impi/2017.1.132-GCC-5.4.0-2.26 2) binutils/2.26-GCCcore-5.4.0 6) vtune/2017.1.132-GCC-5.4.0-2.26 3) icc/2017.1.132-GCC-5.4.0-2.26 7) languages/intel/2017.01 4) ifort/2017.1.132-GCC-5.4.0-2.26 .. NOTE:: Lmod does not unload dependent modules on module unload. E.g. .. code:: bash [ce16990@bc4login1 ~]$ module load hwloc [ce16990@bc4login1 ~]$ module list Currently Loaded Modules: 1) GCCcore/5.4.0 5) gcccuda/2016.10 2) binutils/2.26-GCCcore-5.4.0 6) numactl/2.0.11-gcccuda-2016.10 3) GCC/5.4.0-2.26 7) hwloc/1.11.4-gcccuda-2016.10 4) CUDA/8.0.44-GCC-5.4.0-2.26 [ce16990@bc4login1 ~]$ module unload hwloc [ce16990@bc4login1 ~]$ module list Currently Loaded Modules: 1) GCCcore/5.4.0 4) CUDA/8.0.44-GCC-5.4.0-2.26 2) binutils/2.26-GCCcore-5.4.0 5) gcccuda/2016.10 3) GCC/5.4.0-2.26 6) numactl/2.0.11-gcccuda-2016.10 .. NOTE:: It is recommended that the required modules are loaded in your job submission script rather than in your .bashrc file.