LaPalma3 (3a): Useful commands
Please note that all the SIEpedia's articles address specific issues or questions raised by IAC users, so they do not attempt to be rigorous or exhaustive, and may or may not be useful or applicable in different or more general contexts.
Introduction | Connecting | Useful Commands (preparations) | Useful Commands (executions) | Script files | FAQs |
IMPORTANT: This documentation is deprecated. It will not be further updated. The new documentation for LaPalma can be found here for external users or here if you are connected to IAC's internal network.
Useful commands for LaPalma3 (preparations)
We have gathered a list of useful commands when working with LaPalma3. These commands are classified in the next sections, please, let us know if you use other commands that you think we should add to this list:
- Connecting
- Transferring files
- Available software on LaPalma
- Specifying which software you want to use
- Compiling
- Profiling and debugging
Useful commands for executing your parallel application are listed at Useful Commands (executions).
Connecting
Before connecting you need an account in LaPalma3 and send us your public key (please, see this page for more details). You only need to do those previous steps once, if they are already done, simply use ssh
in a shell terminal:
[mymachine]$ ssh username@lapalma1.iac.es
Transferring files
For transferring files to LaPalma from Unix systems (Linux, MacOS,...), you can use secure copy (scp
) and secure ftp (sftp
),
both tools have the same syntax as the old and insecure tools such as rcp
(remote copy) and ftp
.
You can use remote sync (rsync
), too, as long as you use ssh
as remote shell.
As have been said before, no connections are allowed from inside LaPalma to the outside world so all scp
,
sftp
and rsync
commands have to be executed from your local machines and not inside LaPalma.
Here there are some examples of each of this tools transferring files to LaPalma:
[mymachine]$scp localfile usertest@lapalma1.iac.es:remotedir
[mymachine]$sftp usertest@lapalma1.iac.es
sftp> cd remotedir
sftp> put localfile
[mymachine]$rsync -auv localfile usertest@lapalma1.iac.es:remotedir
These are the ways to retrieve files from LaPalma to your local machine:
[mymachine]$scp usertest@lapalma1.iac.es:remotefile localdir
[mymachine]$sftp usertest@lapalma1.iac.es
sftp> cd remotedir
sftp> get remotefile
[mymachine]$rsync -auv usertest@lapalma1.iac.es:remotefile localdir
If you are not familiar with these transferring tools, please, check documentation to know
the different options they offer. For instance, with sftp
you can use mget
or mput
for multiple transfers, -r
for recursion in directories,
lcd
to change the local directory, use !
to execute some commands locally, etc.
rsync
also offers a lot of different useful options.
On a Windows system, most of the secure shell clients come with a tool to make secure copies or secure ftp's.
There are several tools that accomplishes the requirements, There are several different clients, but as previously mentioned, IAC recommends the use of putty
clients for transferring files: psftp
and pscp
. You can find it at the same web page as putty
(https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html).
Other possible tool for users requiring graphical file transfers could be:
WinSCP
: FreewareSftp
andScp
client for Windows (https://winscp.net/eng/download.php)
In order to start remote X applications you need and X-Server running in your local machine. Here is a list of most common X-servers for windows:
Cygwin/X
: https://x.cygwin.com/MobaXterm
: https://mobaxterm.mobatek.net/
Once the X-Server is running run putty
with X11 forwarding enabled
Available software on LaPalma
You will find installed on LaPalma the most common software used in scientific computation, like GNU and Intel compilers, OpenMPI and MVAPICH2 MPI compilers, scientific librarires (scalapack
, fftw
, GSL
, MKL
, hdf5
, ...), tools (cmake
, gnuplot
, python
, ...), parallel applications (VASP
, SIESTA
, ...), etc.
There are several compilers on LaPalma, and due to compatibility reasons, some software have been compiled with different compilers, so you can choose the version that best fits your needs. For instance, hdf5/gnu/openmpi/1.10.1
means that HDF5
version 1.10.1 has been compiled with gnu
compilers (sequential) and with OpenMPI
compilers (parallel). That will also give you a hint about prerequisites: to load this version of hdf5
you should first load at least gnu
and openmpi/gnu
(you can equally use gnu
or gcc
, both are the same).
The list of available software on LaPalma is continuously being updated, since we frequently install new software or upgrade existing one according to the needs of our users. If you would like to ask for time to execute on LaPalma, but you need to know first which software is available, please, contact us and inquire whether a specific software (and version) is already available or we can install it. Also you can check next list to have an idea:
List of installed software on La Palma (November 2020)
----------------------------------------------- compilers ----------------------------------------------- gcc/4.8.5 gnu/4.8.5 intel/2018.2 mvapich2/gnu/2.3rc2 openmpi/3.0.0 openmpi/gnu/3.0.0 openmpi/intel/3.0.0 gcc/7.2.0(default) gnu/7.2.0(default) jdk/1.8.0_212 mvapich2/intel/2.3rc2 openmpi/gnu(default) openmpi/gnu/3.0.1 openmpi/intel/3.0.1 ----------------------------------------------- libraries ----------------------------------------------- bzip2/1.0.7/gnu hdf5/gnu/openmpi/1.10.1 petsc/3.7.1-complex cfitsio/3.420 hdf5/intel/impi/1.10.1 petsc/3.7.1-real fftw/gnu/openmpi/2.1.5 hdf5/intel/mvapich2/1.10.1 qt/4.8.5 fftw/gnu/openmpi/2.1.5f hdf5/intel/openmpi(default) qt/5.6.1 fftw/gnu/openmpi/3.3.7 hdf5/intel/openmpi/1.10.1 qt/5.13.1/gnu/4.8.5 gmp/6.1.2/gnu/4.8.5 icu/4.8.2/gnu/4.8.5 scalapack/2.0.1 grackle/2.1/gnu icu/64.2/gnu/7.2.0 scalapack/2.0.2 grackle/3.1/gnu icu/65/gnu/7.2.0 slepc/3.6.0-complex grackle/3.1/intel impi/2018.1 slepc/3.6.0-real gsl/1.9 impi/2018.2 slepc/3.7.1-complex gsl/2.5/gcc7 lapack/3.5.0 slepc/3.7.1-real gsl/2.5/gnu mkl/2018.1 slepc/3.7.3-real hdf5/1.8.20 mkl/2018.2 szip/gnu/2.1.1 hdf5/gnu(default) mlnx_ofed/4.2-1.0.0.0 szip/intel/2.1.1 hdf5/gnu/mvapich2/1.10.1 mlnx_ofed/4.2-1.2.0.0 uv/1.33.1/gnu/7.2.0 hdf5/gnu/openmpi(default) netcdf/4.4.4-parallel-fortran xmlf90/1.5.4/intel/2018.2 hdf5/gnu/openmpi/1.8.20 netcdf/4.5.0-parallel-c ------------------------------------------------- tools ------------------------------------------------- ase/3.17.0 flex/2.6.4/gnu libtool/2.4.6/intel python/3.7.4 autoconf/2.69 flex/2.6.4/intel/2018.2 nano/4.0/gnu valgrind/3.10.1 cmake/gnu(default) gnuplot/5.0.1 paraver/4.7.1 valgrind/3.14.0/intel cmake/gnu/3.10.0 gnuplot/5.2.2(default) perl/5.24.0 cmake/gnu/3.11.1 greasy/2.2/gnu/4.8.5/openmpi/3.0.1 python/2.7.14 cmake/intel/3.10.0 greasy/2.2/gnu/7.2.0/openmpi/3.0.1 python/3.5.0 easybuild/4.1.2 greasy/2.2/intel/2018.2/openmpi/3.0.1 python/3.6.4 extrae/3.5.2 libtool/2.4.6/gnu python/3.7.3 --------------------------------------------- applications ---------------------------------------------- abinit/8.10.3/intel/2018.2 namd/2.11 siesta/spglib/intel/2018.2 cp2k/2.3 namd/2.12 vasp/5.2 cp2k/3.0 octave/4.0.0 vasp/5.3.5 cp2k/4.1 octave/4.2.1(default) vasp/5.4.1(default) fhi-aims/071914_4 openfoam/v1912/intel/2018.2 vasp/5.4.4 fhi-aims/081213 orca/4.2.1 vasp/5.4.4-vtst fhi-aims/081912 paraview/4.3.1 vasp/5.4.4-vtst-patched fhi-aims/151012 paraview/5.5.2/bin vmd/1.9.1 fhi-aims/151109 paraview/5.5.2/gnu vtk/6.2.0 fhi-aims/161219 paraview/5.6.0 vtk/7.0.0 glpk/4.65/gnu/4.8.5 pkdgrav3/2019060/gnu vtk/7.1.1 gromacs/4.6.7-plumed-2.1-hrex plumed/2.1.5 vtk/8.1.0 gromacs/5.0 plumed/2.2.3 gromacs/5.0-plumed-2.1.5 plumed/2.2.3_libmatheval gromacs/5.0.4 plumed/2.3b gromacs/5.1 plumed/2.4.3 gromacs/5.1.2 plumed/2.4.6/intel/2018.2 gromacs/5.1.3 plumed/2.5.1 gromacs/5.1.4 plumed/2.5.3/gnu/7.2.0 gromacs/2016.4 plumed/2.5.3/intel/2018.2 gromacs/2016.5-plumed qhull/2015.2 gromacs/2018 quantum-espresso/impi/6.2.1-Environ1.0 gromacs/2018.6-PLUMED-2.5.1 quantum-espresso/impi/6.3 gromacs/2018.6/plumed/2.4.6/intel/2018.2 R/3.6.0/gnu gromacs/2019.2 siesta/4.0.1 namd/2.9_plumed2.0.1 siesta/rel-MaX-1/intel/2018.2
Specifying which software you want to use
All installed software (compilers, applications, numerical and graphical libraries, tools, etc.) can be found at
/storage/apps/
or directly /apps
. There is a directory for each application (uppercase letters) and then a subdirectory with the installed versions. For better flexibility, users are allowed to choose which software packages and version want to use on their executions. By using the Environment Modules package you can dynamically load and/or unload specific modules using the commands listed below (remember to load your required modules in your submission scripts). To manage the modules, you only need to use module
command and the proper option, the most common ones are listed bellow:
- List all available modules
[lapalma1]$ module avail
- List all available versions of a specific package
[lapalma1]$module avail <package>
# For example:module avail gnu
- Load an specific module
[lapalma1]$module load <module_name>
# For example:module load gnu/7.2.0
- List all loaded modules
[lapalma1]$ module list
- Unload modules
[lapalma1]$module rm <module_name>
# Unload a specific module. For example:module rm python/2.6
[lapalma1]$module purge
# Unload all modules [lapalma1]$module switch <old_mod> <new_mod>
# Replace modules (unloadold_mod
and then loadnew_mod
)
- Show detailed info (like prerequisites and conflicts)
[lapalma1]$module show <module_name>
# Display details for a module (you can also usedisplay
) [lapalma1]$module show <module_name> | grep "prereq\|conflict"
# Show prerequisites and conflicts
NOTES:
- Some modules have prerequisites and/or conflicts, so you might need to load them following the proper order. If you have problems when loading your modules, please, check this FAQ.
- Some of the modules could be needed when executing your code, in order to properly load dynamic libraries, etc. Be careful and do not forget to add the right modules in your script file when submitting it.
Compiling
There are several available compilers in LaPalma3, remember to load their modules before using those compilers. Some modules are not compatible among them, so you may need to unload first a module to load a new one (some examples about how to load and unload modules are shown above).
Sequential
You can use the GNU or Intel(*) compilers in order to compile your sequential codes:
# C C++ Fortran Compiler [lapalma1]$gcc ...
g++
gfortran
# GNU:module load gnu
[lapalma1]$icc ...
icpc
ifort
# Intel(*):module load intel
OpenMP
The same compilers used for sequential codes can be used for OpenMP applications, adding the proper flag:
# C C++ Fortran Compiler [lapalma1]$gcc -fopenmp ...
g++
gfortran
# GNU:module load gnu
[lapalma1]$icc -qopenmp ...
icpc
ifort
# Intel(*):module load intel
MPI
If you need to compile MPI programs, you can use OpenMPI or MVAPICH2 (both compiled with gnu
and intel
(*))
# C C++ Fortran Compiler [lapalma1]$mpicc ...
mpicxx
mpifort
# OpenMPI(gnu):module load gnu openmpi/gnu
[lapalma1]$mpicc ...
mpicxx
mpifort
# OpenMPI(intel):module load intel openmpi/intel
[lapalma1]$mpicc ...
mpicxx
mpifort
# MVAPICH2(gnu):module load gnu mvapich2/gnu
[lapalma1]$mpicc ...
mpicxx
mpifort
# MVAPICH2(intel):module load intel mvapich2/intel
NOTES:
- (*): A valid license is needed to use Intel compilers. It should be available for sequential and OpenMP parallel program. Please, contact us if you have any issue related to licenses.
- The recommended commands to invoke the compilers are those listed above, but depending on the modules that have been loaded, there might be many others:
mpif90
,mpif77
,mpigcc
,mpigxx
, etc. You can use the one that best fits your needs, most times they are just wrappers or links, but check the documentation since some of them are deprecated. - Use
man
to get the complete list of options of each compiler (i.e.man gcc
orman icc
) - Optimization options: Using the proper optimizations options when compiling could considerably increase the performance of your program, but bear in mind that optimizations highly depend on each code, so you should check which options are the best ones for your application. Here we recommend some generic ones:
- GNU compilers:
-O3 -mtune=native -march=native
[-O3
: optimize for maximum speed and enable more aggressive optimizations;-mtune=native
and-march=native
: pick the current architecture (sandybridge
) and apply specific optimizations accordingly. If you want to see the detailed list of optimizations that are applied, add next flags:-Q --help=target -v
] - Intel compilers:
-O3 -ip
[-O3
: optimize for maximum speed and enable more aggressive optimizations;-ip
: allow the expansion of inline functions). It is supposed that flag-xAVX
(enable Advanced Vector Extensions) should increase the speed of applications when running on LaPalma3 cores, but we have found out that for some codes it works in the opposite way and using it will notably reduce the performance: please, run some tests to decide whether this optimization option (-xAVX
) is suitable for your code or not]
- GNU compilers:
- By default all compilers will use the 64 bit addressing
- Automatic parallelization: the GCC compiler will attempt to automatically parallelize simple loop constructs. Use the option
-ftree-parallelize-loops=N
whereN
is the number of threads you want to use - If your application needs some external libraries (like
gsl
,mkl
,hdf5
,netcdf
, etc.), use commandmodule avail <package>
to see if they are available. If so, load the one(s) you need withmodule load <module>
before compiling your application (and also remember that you might also need to load them in your submit script when running your application). Also check all available versions before loading a module, since sometimes there are specific modules depending on the compilers that you are going to use (for instance,openmpi
has different modules forgnu
orintel
. You can see all those versions using:module avail <package>
, usually dependencies are indicated after the version number). Please, contact us if you have any doubt about which version you should choose or you need any software that is not already installed.
Profiling and debugging
Next tools are available on LaPalma3:
- GNU profiler:
gprof
- GNU code coverage:
gcov
- GNU debugger:
gdb