Logo

HPC @ Uni.lu

High Performance Computing in Luxembourg

Introduction

Your workflow may include compiling your own applications and libraries or third party software. This page contains the resources you will need to get started.

Generally speaking, we favor an user attitude that strikes a good balance of optimum code & good maintainability. YOU are the user of the software, so YOU should ensure its quality aspects (and YOU will get the credit for it, too).

Remember also to NEVER_COMPILE_YOUR_CODE_ON_THE_FRONTEND.

Compiling on the UL HPC platform

We already provide a broad list of software on our clusters, however you may need to compile others or recompile with different parameters, in which case the packages under the following sections will help you:

Kindly note that you should never compile on a cluster’s frontend, always reserve (some cores on) a compute node for this task.

When compiling MPI-parallelized software you may find the MPI section of the Use Cases page useful.

Autotools

Many software applications take advantage of the GNU build system (Autotools), for which the building procedure is comprised of three main steps:

  1. configuration (command: ./configure)
  2. compilation (command: make)
  3. installation (command: make install)

If the documentation for the software you are trying to build contains these commands, then it is probably using Autotools. While respecting the building procedure described in the documentation, you will certainly need to use the --prefix parameter on the configuration step, in order to set the target directory for the software you are compiling, as follows:

(node)$> cd /path/to/source
(node)$> ./configure --prefix=/path/to/destination [...]
(node)$> make
(node)$> make install

If the compilation is successful, the built application will be found under the /path/to/destination directory, which in general should be (see also the User environment page):

  • a directory under your $HOME or $WORK
  • if pertaining to a project, a directory under that project’s directory

External references you may wish to consult:

Generic compilation steps

  1. Reserve some resources on the cluster oarsub -I (default is 1 core for 2h)
  2. Go to the directory with the code sources. We recommend temporarily placing your sources and compiling under the /dev/shm or the $SCRATCH directory as you will get a performance boost and it will not negatively impact other users of the platform.
  3. Compile your code
  4. If applicable - place the corresponding binaries under a directory referenced in your environment’s $PATH variable or update this variable (e.g. by editing ~/.bashrc) to reflect the binaries’ location.
  5. Test the newly compiled software

Using EasyBuild to automate your work

Delivering software can become quickly a complex task on a shared HPC platform, since one user’s feature is another user’s bug.

In order to automate your activity around building software (and related Modules ), we have standardized on using EasyBuild, which helps greatly with a multitude of related challenges.

An example of how it works, follows:

$ module load EasyBuild
$ eb easybuild/easyconfigs/f/FCM/FCM-2.3.1.eb  # you may need to provide an easyconfig and/or an easyblock file
== temporary log file in case of crash /tmp/3L/3LkVBznPF7WgIo752F4GjE+++TI/-Tmp-/easybuild-A2VKzN.log
== resolving dependencies ...
== processing EasyBuild easyconfig /Users/fotis/Desktop/arena/uni.lu/easybuild-easyconfigs/easybuild/easyconfigs/f/FCM/FCM-2.3.1.eb
== building and installing FCM-2.3.1...
== fetching files...
== creating build dir, resetting environment...
== unpacking...
== patching...
== preparing...
== configuring...
== building...
== testing...
== installing...
== taking care of extensions...
== packaging...
== postprocessing...
== sanity checking...
== cleaning up...
== creating module...
== COMPLETED: Installation ended successfully
== Results of the build can be found in the log file /tmp/3L/3LkVBznPF7WgIo752F4GjE+++TI/-Tmp-/easybuild-FCM-2.3.1-20130915.104258.log
== Build succeeded for 1 out of 1
== temporary log file /tmp/3L/3LkVBznPF7WgIo752F4GjE+++TI/-Tmp-/easybuild-A2VKzN.log has been removed.

real	0m9.831s
user	0m0.719s
sys	0m0.834s

For more information, print and use the related one-page reference card for EasyBuild and HPCBIOS.

Troubleshooting

Debugging / Performance analysis