Installation of PandaRoot on the Virgo cluster at GSI

Please refer to https://hpc.gsi.de/virgo on how to access and operate on the Cluster.

Log in to Virgo

The default entry point is on a CentOS7 container:

ssh virgo-centos7.hpc.gsi.de

Alternatively, you may use Debian8, which used to be the default system on the old cluster.

ssh virgo-debian8.hpc.gsi.de

The drawback is that Debian8 will be phased out in mid 2021.

The entry point will be a submit node, which is not designed to run any larger job. In fact your processes may get killed automatically if they occupy too many resources.

The cluster at GSI has a special place for mass storage of data, the lustre file system. You can store your large files at /lustre/panda/<username>. This file system can be mounted via sshfs (see here), which you can use to copy data to a local machine for further analysis.

The lustre file system is not the place to compile code. It has trouble managing many small files. However, the user home /u/<username> is not mounted on the cluster nodes. So it is best to store the source code on the user home directory, build on /tmp/ on the local machine for speed and install the libraries then on lustre.

PandaRoot on Virgo

Set up the environment for CentOS7

You will receive a shell within a container. The default FairSoft and FairRoot versions will be already installed on the CVMFS. It is strongly advised to use the same compiler that was used for FairSoft and FairRoot.

source scl_source enable devtoolset-8
spack load cmake%gcc arch=x86_64
ls /cvmfs/fairsoft.gsi.de
export SIMPATH=/cvmfs/fairsoft.gsi.de/centos7/gcc8/fairsoft/apr21
export FAIRROOTPATH=/cvmfs/fairsoft.gsi.de/centos7/gcc8/fairroot/v18.6.3_fs_apr21
export PATH=$SIMPATH/bin:$PATH

Set up the environment for Debian 8

You will receive a shell within a container. The default FairSoft and FairRoot versions will be already installed on the CVMFS. It is strongly advised to use the same compiler that was used for FairSoft and FairRoot.

export PATH=/cvmfs/vae.gsi.de/debian8/opt/linux-debian8-x86_64/gcc-8.1.0/cmake-3.17.3-szubqxkqi5zheszujgkq4d4xx7nrm5om/bin:$PATH
export PATH=/cvmfs/vae.gsi.de/debian8/opt/linux-debian8-x86_64/gcc-4.9.2/gcc-8.1.0-rqvu3k7qemjclnoxrymtq5wuhrep6pbe/bin:$PATH
export CC=gcc
export CXX=g++
ls /cvmfs/fairsoft.gsi.de
export SIMPATH=/cvmfs/fairsoft.gsi.de/debian8/fairsoft/nov20/
export FAIRROOTPATH=/cvmfs/fairsoft.gsi.de/debian8/fairroot/v18.6.1_fairsoft-nov20/
export PATH=$SIMPATH/bin:$PATH

Get PandaRoot code

For example if you want the latest release, just do

cd /u/<username>
git clone https://git.panda.gsi.de/PandaRootGroup/PandaRoot.git <source-folder>
cd <source-folder>

If you want the dev branch, do also

git checkout dev

Sometimes it may be necessary to use a specific release. For that we have Tags. Those can be listed and then you may choose to switch to a tagged version branch.

git tag
git checkout -b <yourtag> <yourtag>

Build

This follows the general build and Installation process.

mkdir /tmp/<build-folder>
cd /tmp/<build-folder>
cmake -DCMAKE_INSTALL_PREFIX=/lustre/panda/<username>/<install-folder> /u/<username>/<source-folder>
make -j16
make install

Now you could safely remove the sources (if necessary) and build artifacts (recommended):

rm -rf /u/<username>/<source-folder>
rm -rf /tmp/<build-folder>

Load PandaRoot

. /lustre/panda/<username>/<install-folder>/bin/config.sh -p

Here it is important to use the -p flag. Otherwise the environment would be missing important parts on the batch nodes.

Compatibility to Kronos

If you have to have full compatibility to the discontinued Kronos cluster, you have to choose Debian8. The production script examples can be found in macro/production.

Good practice with disk access

If possible, use the /tmp folder on the nodes for your simulation/reconstruction job output. The local disks are fast and meant to be used in this manner. Copy the finalized files to your space in /lustre/panda/ at the end of each job. Minimizing massive file access to lustre will greatly improve the performance.