Using LUMI

Login

There are 8 login nodes and 3 gateway that redirect to any of the login nodes in a load-balanced way:

Hostname

Node type

lumi.csc.fi

login to one of the login nodes

Host key fingerprint:

Algorithm

Fingerprint (SHA256)

RSA

SHA256:ypbqdMWtk9ZdXEROkeEpv+3PCEXWjPLGI79IXGHe9ac

ECDSA

SHA256:hY4mnRCYb8bRchTnVcFo7SqoHHHEsUh9Ym38F4sHN1Y

ED25519

SHA256:qCFZThjRw8nf0CiZ9rU7b6Zirjq8slAIl5r0xWaVoD0

More details can be found in the wiki page LUMI / Logging in.

Building software

ESPResSo

Release 4.2:

# last update: February 2026
module load LUMI/25.03 \
            cpeCray/25.03 \
            Boost/1.88.0-cpeCray-25.03 \
            cray-fftw/3.3.10.10 \
            cray-mpich/8.1.32 \
            cray-python/3.11.7 \
            cray-hdf5-parallel/1.14.3.5 \
            buildtools/25.03 \
            systools/25.03 \
            cURL/8.11.1-cpeCray-25.03 \
            GSL/2.8-cpeCray-25.03-OpenMP
git clone --recursive --branch 4.2 --origin upstream \
    https://github.com/espressomd/espresso.git espresso-4.2
cd espresso-4.2
python -m venv --system-site-packages venv
source venv/bin/activate
python3 -m pip install "cython>3.0.8" "numpy>2.0" scipy h5py
mkdir build
cd build
cp ../maintainer/configs/maxset.hpp myconfig.hpp
sed -i "/ADDITIONAL_CHECKS/d" myconfig.hpp
CC=cc CXX=CC cmake .. \
    -D CMAKE_BUILD_TYPE=Release \
    -D ESPRESSO_BUILD_WITH_CCACHE=OFF \
    -D ESPRESSO_BUILD_WITH_CUDA=OFF \
    -D ESPRESSO_BUILD_WITH_FFTW=ON \
    -D ESPRESSO_BUILD_WITH_HDF5=ON \
    -D ESPRESSO_BUILD_WITH_WALBERLA=ON \
    -D ESPRESSO_BUILD_WITH_WALBERLA_AVX=ON \
    -D ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM=ON \
    -D ESPRESSO_BUILD_WITH_GSL=ON
make -j 4
deactivate
module purge

Release 5.0:

# last update: November 2025
module load LUMI/24.03 \
            cpeCray/24.03 \
            Boost/1.83.0-cpeCray-24.03 \
            cray-fftw/3.3.10.7 \
            cray-mpich/8.1.29 \
            cray-python/3.11.7 \
            cray-hdf5-parallel/1.12.2.11 \
            buildtools/24.03 \
            systools/24.03 \
            cURL/8.3.0-cpeCray-24.03 \
            GSL/2.7.1-cpeCray-24.03-OpenMP
git clone --branch python --origin upstream \
    https://github.com/espressomd/espresso.git espresso-5.0
cd espresso-5.0
python3 -m venv venv
source venv/bin/activate
python3 -m pip install -c requirements.txt "numpy<2.0" scipy h5py cython==3.0.8 packaging
mkdir build
cd build
cp ../maintainer/configs/maxset.hpp myconfig.hpp
sed -i "/ADDITIONAL_CHECKS/d" myconfig.hpp
CC=cc CXX=CC cmake .. \
    -D CMAKE_BUILD_TYPE=Release \
    -D ESPRESSO_BUILD_WITH_CCACHE=OFF \
    -D ESPRESSO_BUILD_WITH_CUDA=OFF \
    -D ESPRESSO_BUILD_WITH_FFTW=ON \
    -D ESPRESSO_BUILD_WITH_HDF5=ON \
    -D ESPRESSO_BUILD_WITH_WALBERLA=ON \
    -D ESPRESSO_BUILD_WITH_WALBERLA_AVX=ON \
    -D ESPRESSO_BUILD_WITH_SHARED_MEMORY_PARALLELISM=ON \
    -D ESPRESSO_BUILD_WITH_GSL=ON
make -j 4
deactivate
module purge

During dynamic linking, libcraymp.so must be loaded before dependent libraries like libsci_cray_mpi_mp.so. Yet, the CMake target OpenMP::OpenMP_CXX sets libcraymp.so after the libraries that depend on it. As a workaround, one can hardcode libcraymp.so.2 to appear before OpenMP::OpenMP_CXX using variable OpenMP_craymp_LIBRARY, like so:

if(DEFINED OpenMP_craymp_LIBRARY AND EXISTS ${OpenMP_craymp_LIBRARY})
  target_link_libraries(${target} PRIVATE ${OpenMP_craymp_LIBRARY} OpenMP::OpenMP_CXX)
endif()

Alternatively, one can set the environment variable LD_PRELOAD like so:

$> ./pypresso script.py
Traceback (most recent call last):
  File "/pfs/lustrep3/scratch/project_465000000/username/espresso-5.0/build/../testsuite/python/particle.py", line 20, in <module>
    import unittest_decorators as utx
  File "/pfs/lustrep3/scratch/project_465000000/username/espresso-5.0/testsuite/python/unittest_decorators.py", line 25, in <module>
    import espressomd
  File "/scratch/project_465000000/username/espresso-5.0/build/src/python/espressomd/__init__.py", line 22, in <module>
    from . import _init
ImportError: /opt/cray/pe/lib64/libsci_cray_mp.so.6: cannot allocate memory in static TLS block
$> LD_PRELOAD=/opt/cray/pe/lib64/cce/libcraymp.so.2 OMP_BIND_PROC=true OMP_NUM_THREADS=1 ./pypresso script.py
Ran 47 tests in 0.767s