Difference between revisions of "Instructions to run Trajectum at Nikhef"
Line 208: | Line 208: | ||
'''TIP:''' First test your executable on the interactive nodes to debug any issues, if it runs without problems submit it to the cluster! | '''TIP:''' First test your executable on the interactive nodes to debug any issues, if it runs without problems submit it to the cluster! | ||
+ | |||
+ | == Re-compiling from scratch == | ||
+ | These are the steps we followed on 26/09/2025, recompiling all packages with <code>gcc12</code>. | ||
+ | |||
+ | The packages are now all located in <code>/project/alice/trajectum_packages_new</code>. To set up Trajectum in your own directory using these packages, follow these steps. | ||
+ | |||
+ | First: | ||
+ | source /cvmfs/alice.cern.ch/etc/login.sh | ||
+ | source /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_104 x86_64-el9-gcc12-opt | ||
+ | export PKG_CONFIG=/usr/bin/pkg-config | ||
+ | Then (similar to the "setting up Trajectum" section above, with the new paths), go to <code>/data/alice/<yourNikhefusername></code> (or any other preferred directory) | ||
+ | |||
+ | Clone the Trajectum source code: | ||
+ | git clone https://codeberg.org/Trajectum/Trajectum.git | ||
+ | This will create a Trajectum directory. In this directory execute: | ||
+ | autoreconf --install -I /project/alice/trajectum_packages_new/autoconf-archive-2024.10.16/m4/ | ||
+ | which will create the configure executable with which you can run | ||
+ | ./configure --with-lhapdf-prefix=/project/alice/trajectum_packages_new/LHAPDF-6.5.4/build --with-fastjet-prefix=/project/alice/trajectum_packages_new/fastjet-3.4.2/build --with-pythia-prefix=/project/alice/trajectum_packages_new/pythia8309 --with-gemini-prefix=/project/alice/trajectum_packages_new/gemini_2024.8.8/build | ||
+ | Then execute (still in the Trajectum directory) | ||
+ | make | ||
+ | Next (again, with the new paths): | ||
+ | export LD_LIBRARY_PATH=/project/alice/trajectum_packages_new/LHAPDF-6.5.4/build/lib/:/project/alice/trajectum_packages_new/pythia8309/lib/:/project/alice/trajectum_packages_new/gemini_2024.8.8/build/lib/:/project/alice/trajectum_packages_new/fastjet-3.4.2/build/lib/:$LD_LIBRARY_PATH | ||
+ | export GINPUT=/project/alice/trajectum_packages_new/gemini_2024.8.8/build/share/gemini/ | ||
+ | Going into <code>/data/alice/<yourNikhefusername>/Trajectum/src</code>, you should be able to run the <code>collide</code> executable as such | ||
+ | ./collide ../parfiles/collisionpp.par | ||
+ | where <code>collisionpp.par</code> is an example file with parameter setting for a pp collision. This should take about 6 minutes and should output 5 files starting with <code>pp</code> in the directory you are in (a 6th file is produced if there are errors). | ||
+ | |||
+ | === The Problem === | ||
+ | Next is to run SMASH, but we encounter errors when cmake/make install it in <code>/project/alice/trajectum_packages_new/smash/build</code>. Here is what we did so far. | ||
+ | |||
+ | First we ran | ||
+ | export CMAKE_PREFIX_PATH=/project/alice/trajectum_packages_new/pythia8309 | ||
+ | source /cvmfs/sft.cern.ch/lcg/releases/MCGenerators/rivet/3.1.8-79cbb/x86_64-el9-gcc12-opt/rivetenv.sh | ||
+ | AND copied 5 header files from Panos' directory into my own, like this: | ||
+ | cp /data/alice/pchrist/Hydro/Trajectum/smash/CMakeLists.txt /project/alice/trajectum_packages_new/smash | ||
+ | cp /data/alice/pchrist/Hydro/Trajectum/smash/src/include/smash/particletype.h /project/alice/trajectum_packages_new/smash/src/include/smash | ||
+ | cp /data/alice/pchrist/Hydro/Trajectum/smash/src/include/smash/pdgcode.h /project/alice/trajectum_packages_new/smash/src/include/smash | ||
+ | cp /data/alice/pchrist/Hydro/Trajectum/smash/src/include/smash/pdgcode_constants.h /project/alice/trajectum_packages_new/smash/src/include/smash | ||
+ | cp /data/alice/pchrist/Hydro/Trajectum/smash/src/include/smash/stringfunctions.h /project/alice/trajectum_packages_new/smash/src/include/smash | ||
+ | Now going to <code>/project/alice/trajectum_packages_new/smash/build</code> we ran | ||
+ | cmake -DPythia_CONFIG_EXECUTABLE=/project/alice/trajectum_packages_new/pythia8309/bin/pythia8-config -DPYTHIA8_DIR=/project/alice/trajectum_packages_new/pythia8309 -DTRY_USE_ROOT=OFF -DBUILD_TESTING=OFF -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=/project/alice/trajectum_packages_new/smash -S ../ -B /project/alice/trajectum_packages_new/smash/build | ||
+ | which works fine. However when executing <code>make install</code> or <code>make</code> the process reaches 97% before crashing when trying to "Linking CXX executable ../smash". Seems like it has to do with CMakeFiles. I remember we had it before and it seems like sourcing the rivet and copying the header files soved it last time. Maybe source rivet before compiling all packages?? |
Latest revision as of 15:32, 26 September 2025
NOTE: This page is still work in progress!
Before you start running your jobs at Nikhef, please make sure you join the stbc-mattermost channel using the following link.
Pre-installed packages
The packages needed to configure trajectum are stored at: /project/alice/trajectum_packages
In this directory you find:
LHAPDF-6.5.4
fastjet-3.4.2
gemini_2024.8.8
pythia8309
smash
autoconf-archive
All users read and execute.
Access to Trajectum source code
In order to work on Trajectum you need to be part of the trajectum repository at codeberg.org
If you want you can request acces by creating an account, with your usename including: FirstnameLastname
Then send an email to ... including your username to get access.
Setting up Trajectum
The following steps can be used alongside the description of setting up Trajectum in the README file of the source code.
Set up the environment in bash with the following function:
setup_trajectum() { source /cvmfs/alice.cern.ch/etc/login.sh source /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_107 x86_64-el9-gcc14-opt export PKG_CONFIG=/usr/bin/pkg-config export LD_LIBRARY_PATH=/project/alice/trajectum_packages/pythia8309/lib/:/project/alice/trajectum_packages/lib/:$LD_LIBRARY_PATH export GINPUT=/project/alice/trajectum_packages/share/gemini/ }
Alternatively, one can execute the commands inside the function.
Go to /data/alice/<yourNikhefusername>
(or any other preferred directory)
Clone the Trajectum source code:
git clone https://codeberg.org/Trajectum/Trajectum.git
This will create a Trajectum directory. In this directory execute:
autoreconf --install -I /project/alice/trajectum_packages/autoconf-archive/m4/
which will create the configure executable with which you can run
./configure --with-lhapdf-prefix=/project/alice/trajectum_packages --with-fastjet-prefix=/project/alice/trajectum_packages --with-pythia-prefix=/project/alice/trajectum_packages/pythia8309 --with-gemini-prefix=/project/alice/trajectum_packages
Then execute (still in the Trajectum directory)
make
Executing collide
The executable collide
uses a parameter file to generate events until the produced particles reach the freeze-out surface.
In order to run collide
you need to set: (no need to do this if you set up your environment with setup_trajectum
)
export LD_LIBRARY_PATH=/project/alice/trajectum_packages/pythia8309/lib/:/project/alice/trajectum_packages/lib/:$LD_LIBRARY_PATH export GINPUT=/project/alice/trajectum_packages/share/gemini/
Within the Trajectum directory change to src/
.
To run collide
, execute the following command (still in the src
directory):
./collide ../parfiles/collisionpp.par
where collisionpp.par
is an example file with parameter setting for a pp collision. You can use other example parameter files in parfiles/
or have your own parameter file (in that case, make sure to modify the path in the above command).
This command should output 5 files starting with pp
in the directory you are in (a 6th file is produced if there are errors).
Here is a short description of what each file contains:
pp.input
: summary of input parameters, can be viewed in Mathematicapp.main
: particle positions, momenta, identities, to be fed toSMASH
executable (see next section)pp.bypass
: same as filename. main but for particles that bypass hadron cascade (e.g. heavy quark hadrons)pp.geometry
: geometrical properties of plasmapp.extra
: initial state parameters, and event weights (needed foranalyze
executable)pp.error
: only produced if error!
Compiling smash (next section more detailed)
To compile smash one first needs to setup the environment by selecting the proper gcc and rivet versions (note that everything i.e. pythia, collisions, needs to be compiled again):
source /cvmfs/alice.cern.ch/etc/login.sh source /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_104 x86_64-el9-gcc12-opt source /cvmfs/sft.cern.ch/lcg/releases/MCGenerators/rivet/3.1.8-79cbb/x86_64-el9-gcc12-opt/rivetenv.sh export PKG_CONFIG=/usr/bin/pkg-config export LD_LIBRARY_PATH=/data/alice/pchrist/Hydro/pythia8309/lib/:/project/alice/trajectum_packages/lib/:$LD_LIBRARY_PATH export GINPUT=/project/alice/trajectum_packages/share/gemini/ unset CMAKE_PREFIX_PATH export CMAKE_PREFIX_PATH=/data/alice/pchrist/Hydro/pythia8309
You then have to configure and compile pythia:
cd pythia8309 ./configure make
Go to the directory where smash is cloned, create the build directory and go inside:
cd smash mkdir build cd build
Then make and install:
cmake -DPythia_CONFIG_EXECUTABLE=/data/alice/pchrist/Hydro/pythia8309/bin/pythia8-config -DPYTHIA8_DIR=/data/alice/pchrist/Hydro/pythia8309 -DTRY_USE_ROOT=OFF -DBUILD_TESTING=OFF -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=/data/alice/pchrist/Hydro/smash -S ../ -B /data/alice/pchrist/Hydro/Trajectum/smash/build
make install
Executing SMASH
The executable smash
uses the output of collide
(the pp.main
file) to generate a hadron cascade. It's called the afterburner.
I first used setup_trajectum
to setup the environment.
First, inside your own directory in /data/alice
, run:
mkdir smash git clone https://github.com/smash-transport/smash.git cd smash git checkout SMASH-3.0 mkdir build cd build
Now you are in the build directory inside the smash directory of your own directory.
We need to copy 5 header files that have been modified, from Panos' directory into your own, as such:
cp CMakeLists.txt /data/alice/<yourname>/smash cp src/include/smash/particletype.h /data/alice/<yourname>/smash/src/include/smash cp src/include/smash/pdgcode.h /data/alice/<yourname>/smash/src/include/smash cp src/include/smash/pdgcode_constants.h /data/alice/<yourname>/smash/src/include/smash cp src/include/smash/stringfunctions.h /data/alice/<yourname>/smash/src/include/smash
You can check if this worked by running git status
which should output a list of the 5 header files that were modified.
Still in the smash/build
directory, run
cmake -DPythia_CONFIG_EXECUTABLE=/data/alice/pchrist/Hydro/pythia8309/bin/pythia8-config -DPYTHIA8_DIR=/data/alice/pchrist/Hydro/pythia8309 -DTRY_USE_ROOT=OFF -DBUILD_TESTING=OFF -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=/data/Alice/<yourname>/smash -S /data/Alice/<yourname>/smash -B /data/alice/<yourname>/smash/build
Then run
make install
No more error! (I hope)
Then we can use the output of the collide
executable, which should be a set of 5 files (description above): pp.main, pp.bypass, pp.extra, pp.geometry,
and pp.input
by first
cd /data/alice/<yourname>/trajectum/src
Note: make sure the output file, specifically pp.main, are located in that directory
Then rename pp.main
and run smash
mv pp.main filename0 /data/alice/<yourname>/smash/build/smash -i /data/alice/<yourname>/Trajectum/parfiles/smash.yaml
This should feed smash with the right particle list file (filename0
)
Note: make sure that the environment is set up, as indicated above (in the setup_trajectum
function).
Known issues
If you already (before following the steps above) executed make
in your Trajectum directory within a slightly different environment as setup in "Setting up Trajectum".
./collide ../parfiles/collisionpp.par
can crash with a segmentation fault giving multiple errors containing: ./collide: Symbol `<name>' has different size in shared object, consider re-linking
If you get these errors, before executing make
, execute make clean
before following the rest of the remaining steps.
Run your Trajectum jobs on the Stoomboot cluster
For general information about the CPU Batch system at Nikhef and general guidelines on how to submit jobs, visit CT wiki and the HTCondor manual.
To submit your jobs to the Nikhef cluster you need a submission script <filename>.sub
and an executable <filename>.sh
that contains the code you want to execute.
An example submission script:
executable = testJob.sh log = test.log output = outfile.txt error = errors.txt +UseOS = "el9" +JobCategory = "short" request_cpus = 4 request_memory = 8G max_idle = 50 queue
If you need to pass arguments to your executable you can add them by adding the following line to your submission script:
arguments = "var1 var2 var3"
The workflow in your testJob.sh
could contain the following
#!/bin/bash source /cvmfs/alice.cern.ch/etc/login.sh source /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_107 x86_64-el9-gcc14-opt outdir=/path/to/directory/where/you/want/to/store/your/output/files export TRAJECTUM_DIR=/path/to/Trajectum/directory export PKG_CONFIG=/usr/bin/pkg-config export LD_LIBRARY_PATH=/project/alice/trajectum_packages/pythia8309/lib/:/project/alice/trajectum_packages/lib/:$LD_LIBRARY_PATH export GINPUT=/project/alice/trajectum_packages/share/gemini #create output directory if it does not exist yet if [! -d ${outdir} ] then mkdir -p ${outdir} fi cd ${TMPDIR} pwd ${TRAJECTUM_DIR}/src/collide ${TRAJECTUM_DIR}/parfiles/collisionpp.par ls mv pp.* ${outdir} echo "Anything left?" ls
Make sure you point outdir
and TRAJECTUM_DIR
to the right directories.
Before submitting the submission file make sure that you make your shell script an executable by running chmod +x testJob.sh
otherwise the system considers it to be just a text file and it will not run. If you submit the script like this, the log, output and error files will be created in the same directory as the submission file, add a different path if you'd like to save it elsewhere. Make sure you’ve completed all the steps on this wiki up to and including the “Executing Collide” section — specifically, up to successfully running make
in your cloned Trajectum directory.
To submit your workflow run:
condor_submit <filename>.sub
You can check the status of your job using condor_q
for more advanced commands please check the HTCondor manual.
And check your output, error & log files to see if everything works.
TIP: First test your executable on the interactive nodes to debug any issues, if it runs without problems submit it to the cluster!
Re-compiling from scratch
These are the steps we followed on 26/09/2025, recompiling all packages with gcc12
.
The packages are now all located in /project/alice/trajectum_packages_new
. To set up Trajectum in your own directory using these packages, follow these steps.
First:
source /cvmfs/alice.cern.ch/etc/login.sh source /cvmfs/sft.cern.ch/lcg/views/setupViews.sh LCG_104 x86_64-el9-gcc12-opt export PKG_CONFIG=/usr/bin/pkg-config
Then (similar to the "setting up Trajectum" section above, with the new paths), go to /data/alice/<yourNikhefusername>
(or any other preferred directory)
Clone the Trajectum source code:
git clone https://codeberg.org/Trajectum/Trajectum.git
This will create a Trajectum directory. In this directory execute:
autoreconf --install -I /project/alice/trajectum_packages_new/autoconf-archive-2024.10.16/m4/
which will create the configure executable with which you can run
./configure --with-lhapdf-prefix=/project/alice/trajectum_packages_new/LHAPDF-6.5.4/build --with-fastjet-prefix=/project/alice/trajectum_packages_new/fastjet-3.4.2/build --with-pythia-prefix=/project/alice/trajectum_packages_new/pythia8309 --with-gemini-prefix=/project/alice/trajectum_packages_new/gemini_2024.8.8/build
Then execute (still in the Trajectum directory)
make
Next (again, with the new paths):
export LD_LIBRARY_PATH=/project/alice/trajectum_packages_new/LHAPDF-6.5.4/build/lib/:/project/alice/trajectum_packages_new/pythia8309/lib/:/project/alice/trajectum_packages_new/gemini_2024.8.8/build/lib/:/project/alice/trajectum_packages_new/fastjet-3.4.2/build/lib/:$LD_LIBRARY_PATH export GINPUT=/project/alice/trajectum_packages_new/gemini_2024.8.8/build/share/gemini/
Going into /data/alice/<yourNikhefusername>/Trajectum/src
, you should be able to run the collide
executable as such
./collide ../parfiles/collisionpp.par
where collisionpp.par
is an example file with parameter setting for a pp collision. This should take about 6 minutes and should output 5 files starting with pp
in the directory you are in (a 6th file is produced if there are errors).
The Problem
Next is to run SMASH, but we encounter errors when cmake/make install it in /project/alice/trajectum_packages_new/smash/build
. Here is what we did so far.
First we ran
export CMAKE_PREFIX_PATH=/project/alice/trajectum_packages_new/pythia8309 source /cvmfs/sft.cern.ch/lcg/releases/MCGenerators/rivet/3.1.8-79cbb/x86_64-el9-gcc12-opt/rivetenv.sh
AND copied 5 header files from Panos' directory into my own, like this:
cp /data/alice/pchrist/Hydro/Trajectum/smash/CMakeLists.txt /project/alice/trajectum_packages_new/smash cp /data/alice/pchrist/Hydro/Trajectum/smash/src/include/smash/particletype.h /project/alice/trajectum_packages_new/smash/src/include/smash cp /data/alice/pchrist/Hydro/Trajectum/smash/src/include/smash/pdgcode.h /project/alice/trajectum_packages_new/smash/src/include/smash cp /data/alice/pchrist/Hydro/Trajectum/smash/src/include/smash/pdgcode_constants.h /project/alice/trajectum_packages_new/smash/src/include/smash cp /data/alice/pchrist/Hydro/Trajectum/smash/src/include/smash/stringfunctions.h /project/alice/trajectum_packages_new/smash/src/include/smash
Now going to /project/alice/trajectum_packages_new/smash/build
we ran
cmake -DPythia_CONFIG_EXECUTABLE=/project/alice/trajectum_packages_new/pythia8309/bin/pythia8-config -DPYTHIA8_DIR=/project/alice/trajectum_packages_new/pythia8309 -DTRY_USE_ROOT=OFF -DBUILD_TESTING=OFF -DCMAKE_CXX_STANDARD=17 -DCMAKE_INSTALL_PREFIX=/project/alice/trajectum_packages_new/smash -S ../ -B /project/alice/trajectum_packages_new/smash/build
which works fine. However when executing make install
or make
the process reaches 97% before crashing when trying to "Linking CXX executable ../smash". Seems like it has to do with CMakeFiles. I remember we had it before and it seems like sourcing the rivet and copying the header files soved it last time. Maybe source rivet before compiling all packages??