From be367426a9b5801ce6b9d879281dd986a55119c9 Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Tue, 11 Feb 2025 19:12:40 +0100 Subject: [PATCH 01/14] [BMK-1590] update install.sh procedure --- common/install.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common/install.sh b/common/install.sh index 79d2c3fb..dafc6f57 100755 --- a/common/install.sh +++ b/common/install.sh @@ -26,10 +26,16 @@ function install_prmon(){ # do not for slc6 because of BMK-671 +yum makecache --refresh + yum repolist if [ `grep -c "Scientific Linux CERN" /etc/redhat-release` -ne 1 ]; then yum install -y centos-release epel-release ; - yum install -y unzip bzip2 which man file util-linux gcc wget tar freetype perl jq python-pip && + the_python_pip=python3-pip + if [ `grep -c "CentOS Linux" /etc/redhat-release` -eq 1 ]; then + the_python_pip=python-pip + fi + yum install -y unzip bzip2 which man file util-linux gcc wget tar freetype perl jq ${the_python_pip} && yum clean all; fi -- GitLab From 37faa867608be1b875ba6d1c11f2bc7ca9905bf3 Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Tue, 11 Feb 2025 19:18:29 +0100 Subject: [PATCH 02/14] [BMK-1590] first commit of a pepper build --- gen/pepper-ma/CHANGELOG.md | 5 ++ gen/pepper-ma/Dockerfile.append | 23 +++++++++ gen/pepper-ma/gen-pepper-ma.spec | 10 ++++ gen/pepper-ma/gen-pepper-ma/DESCRIPTION | 1 + .../gen-pepper-ma/gen-pepper-ma-bmk.sh | 51 +++++++++++++++++++ gen/pepper-ma/gen-pepper-ma/parseResults.sh | 43 ++++++++++++++++ 6 files changed, 133 insertions(+) create mode 100644 gen/pepper-ma/CHANGELOG.md create mode 100644 gen/pepper-ma/Dockerfile.append create mode 100644 gen/pepper-ma/gen-pepper-ma.spec create mode 100644 gen/pepper-ma/gen-pepper-ma/DESCRIPTION create mode 100755 gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh create mode 100644 gen/pepper-ma/gen-pepper-ma/parseResults.sh diff --git a/gen/pepper-ma/CHANGELOG.md b/gen/pepper-ma/CHANGELOG.md new file mode 100644 index 00000000..2ae90db1 --- /dev/null +++ b/gen/pepper-ma/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog for Monte Carlo Generator Pepper + +## [Unreleased] + + diff --git a/gen/pepper-ma/Dockerfile.append b/gen/pepper-ma/Dockerfile.append new file mode 100644 index 00000000..45ea48c4 --- /dev/null +++ b/gen/pepper-ma/Dockerfile.append @@ -0,0 +1,23 @@ +# Add here any workload-specific Dockerfile instructions. +# They will be appended to the Dockerfile generated from a common template. + +# Pepper dependencies +RUN dnf install -y gcc-c++ git cmake openmpi openmpi-devel \ + lhapdf-devel python3-lhapdf hdf5 hdf5-openmpi hdf5-openmpi-devel python3-h5py + +RUN dnf clean all + +RUN lhapdf install NNPDF30_nlo_as_0118 + +RUN git clone --branch native --depth 1 https://gitlab.com/spice-mc/pepper.git pepper-native +RUN <<EOF +export PATH=/usr/lib64/openmpi/bin:$PATH +export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH + +cd pepper-native +cmake -S . -B build \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX="/usr/local" \ + -DPEPPER_VCL_DISABLED=1 +cmake --build build -j --target install +EOF \ No newline at end of file diff --git a/gen/pepper-ma/gen-pepper-ma.spec b/gen/pepper-ma/gen-pepper-ma.spec new file mode 100644 index 00000000..49aa8a43 --- /dev/null +++ b/gen/pepper-ma/gen-pepper-ma.spec @@ -0,0 +1,10 @@ +HEPWL_BMKEXE=gen-pepper-ma-bmk.sh +HEPWL_BMKOPTS="-c2 -t 2 -m none" +HEPWL_BMKDIR=gen-pepper-ma +HEPWL_BMKDESCRIPTION="Monte Carlo Generator Pepper" +HEPWL_DOCKERIMAGENAME=gen-pepper-ma-bmk +HEPWL_DOCKERIMAGETAG=ci-v1.0 +HEPWL_CVMFSREPOS=NONE +HEPWL_EXTEND_SFT_SPEC="" +HEPWL_BMKOS="gitlab-registry.cern.ch/linuxsupport/alma9-base:20250108-1.x86_64" +HEPWL_BUILDARCH="x86_64,aarch64" diff --git a/gen/pepper-ma/gen-pepper-ma/DESCRIPTION b/gen/pepper-ma/gen-pepper-ma/DESCRIPTION new file mode 100644 index 00000000..09dd595b --- /dev/null +++ b/gen/pepper-ma/gen-pepper-ma/DESCRIPTION @@ -0,0 +1 @@ +DESCRIBE ME \ No newline at end of file diff --git a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh new file mode 100755 index 00000000..e78c5158 --- /dev/null +++ b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# Copyright 2019-2020 CERN. See the COPYRIGHT file at the top-level +# directory of this distribution. For licensing information, see the +# COPYING file at the top-level directory of this distribution. + +#set -x # enable debug printouts + +#set -e # immediate exit on error + +# Function doOne must be defined in each benchmark +# Input argument $1: process index (between 1 and $NCOPIES) +# Return value: please return 0 if this workload copy was successful, 1 otherwise +# The following variables are guaranteed to be defined and exported: NCOPIES, NTHREADS, NEVENTS_THREAD, BMKDIR, DEBUG +# The function is started in process-specific working directory <basewdir>/proc_$1: +# please store here the individual log files for each of the NCOPIES processes +function doOne(){ + if [ "$1" == "" ] || [ "$2" != "" ]; then echo "[doOne] ERROR! Invalid arguments '$@' to doOne"; return 1; fi + echo "[doOne ($1)] $(date) starting in $(pwd)" + mpiexec --version + + COPY=$1 + let RANK=${COPY}-1 + let LOWERCPU=${RANK}*${NTHREADS} + let UPPERCPU=${COPY}*${NTHREADS}-1 + # --bind-to core:${LOWERCPU}-${UPPERCPU} #FIXME + mpiexec -n $NTHREADS /usr/local/bin/pepper -p "g g -> g g" -b $(( $NEVENTS_THREAD * $NTHREADS)) -n 4 > out_$1.log 2>&1 + status=${?} + echo "[doOne ($1)] $(date) completed (status=$status)" + # Return 0 if this workload copy was successful, 1 otherwise + return $status +} + +export PATH=/usr/lib64/openmpi/bin:$PATH +export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH + +# FixME: need to define the validation of the input parameters +# when clear what to use + +# Default values for NCOPIES, NTHREADS, NEVENTS_THREAD must be set in each benchmark +NEVENTS_THREAD=1000 +NTHREADS=4 +NCOPIES=1 + + +# Source the common benchmark driver +if [ -f $(dirname $0)/bmk-driver.sh ]; then + . $(dirname $0)/bmk-driver.sh +else + . $(dirname $0)/../../../common/bmk-driver.sh +fi diff --git a/gen/pepper-ma/gen-pepper-ma/parseResults.sh b/gen/pepper-ma/gen-pepper-ma/parseResults.sh new file mode 100644 index 00000000..4d3877b0 --- /dev/null +++ b/gen/pepper-ma/gen-pepper-ma/parseResults.sh @@ -0,0 +1,43 @@ +# Copyright 2019-2020 CERN. See the COPYRIGHT file at the top-level +# directory of this distribution. For licensing information, see the +# COPYING file at the top-level directory of this distribution. + +parseResultsDir=$(cd $(dirname ${BASH_SOURCE}); pwd) # needed to locate parseResults.py + +# Function parseResults must be defined in each benchmark (or in a separate file parseResults.sh) +# The following variables are guaranteed to be defined and exported: NCOPIES, NTHREADS, NEVENTS_THREAD, BMKDIR, DEBUG, APP +# Logfiles have been stored in process-specific working directories <basewdir>/proc_<1...NCOPIES> +# The function is started in the base working directory <basewdir>: +# please store here the overall json summary file for all NCOPIES processes combined +function parseResults(){ + echo "[parseResults] current directory: $(pwd)" + # #----------------------- + # Parse results (bash) + #----------------------- + echo "[parseResults] bash parser starting" + # Parsing Event Throughput: xxxx ev/s + + grep_string="Time per event:" + sed_string="s@[^:]*: -> Time per event: [0-9\.]*e[0-9\-]*s (\([0-9\.]*e[0-9\-\+]*\) events per hour.*@\1@" + + res_score=`grep -H "${grep_string}" proc_*/out_*.log | sed -e "${sed_string}" | awk 'BEGIN{sum=0;} { val=$1/3600.; sum+=val; } END{printf "{\"gen\": %.4f}", sum}' || (echo "{}"; return 1)` + STATUS_1=$? + + res_stat=`grep -H "${grep_string}" proc_*/out_*.log | sed -e "${sed_string}" | awk 'BEGIN{amin=1000000;amax=0;count=0;sum=0;} { val=$1/3600.; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} END{n = asort(a); if (n % 2) { median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0;}; printf "{\"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f, \"count\": %d}", sum/count, median, amin, amax, count}' || (echo "{}"; return 1)` + STATUS_2=$? + + [[ "$STATUS_1" == "0" ]] && [[ "$STATUS_2" == "0" ]] + STATUS=$? + echo "[parseResults] parsing completed (status=$STATUS)" + [[ "$STATUS" != "0" ]] && return $STATUS + #----------------------- + # Generate summary + #----------------------- + echo "[parseResults] generate report" + resJSON="{\"wl-scores\": $res_score, \"wl-stats\": $res_stat }" + echo "$resJSON" > $baseWDir/parser_output.json + #----------------------- + # Return status + #----------------------- + return $shstatus +} -- GitLab From 9819863670358f3e72fd151c17e718546d992286 Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Wed, 12 Feb 2025 12:40:43 +0100 Subject: [PATCH 03/14] [BMK-1590] cover also arm arch --- gen/pepper-ma/gen-pepper-ma.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/pepper-ma/gen-pepper-ma.spec b/gen/pepper-ma/gen-pepper-ma.spec index 49aa8a43..7e019650 100644 --- a/gen/pepper-ma/gen-pepper-ma.spec +++ b/gen/pepper-ma/gen-pepper-ma.spec @@ -6,5 +6,5 @@ HEPWL_DOCKERIMAGENAME=gen-pepper-ma-bmk HEPWL_DOCKERIMAGETAG=ci-v1.0 HEPWL_CVMFSREPOS=NONE HEPWL_EXTEND_SFT_SPEC="" -HEPWL_BMKOS="gitlab-registry.cern.ch/linuxsupport/alma9-base:20250108-1.x86_64" +HEPWL_BMKOS="gitlab-registry.cern.ch/linuxsupport/alma9-base:20250108-1" HEPWL_BUILDARCH="x86_64,aarch64" -- GitLab From 93e7cb6fd0592d7e974a67f5ec047560c824b011 Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Wed, 12 Feb 2025 16:39:09 +0100 Subject: [PATCH 04/14] impose to run apptainer without priviledges --- build-executor/utility.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build-executor/utility.sh b/build-executor/utility.sh index 4bf5508a..c0cdbea4 100644 --- a/build-executor/utility.sh +++ b/build-executor/utility.sh @@ -483,14 +483,14 @@ function test_singularity_from_registry(){ theimage=oras://${CIENV_SINGULARITYREGISTRY}/${HEPWL_DOCKERIMAGENAME}:${thetag} echo -e "\n[test_singularity_from_registry] Run WL in singularity to test the image ${theimage}" [ ! -e ${CIENV_JOBDIR}/results ] && mkdir -p ${CIENV_JOBDIR}/results && chmod a+rw ${CIENV_JOBDIR}/results - execute_command_retry singularity run -e -C $USEGPU -B ${CIENV_JOBDIR}/results:/results ${theimage} $HEPWL_BMKOPTS -d + execute_command_retry singularity run --no-privs -e -C $USEGPU -B ${CIENV_JOBDIR}/results:/results ${theimage} $HEPWL_BMKOPTS -d status=$? echo -e "\n[test_singularity_from_registry] Run WL in singularity (to test the image) via execute_command_retry - completed (status=$status)" if [ $status -ne 0 ]; then rm -f ${theimage}.sif; fail "[test_singularity_from_registry] Run WL in singularity"; fi - execute_command_retry singularity run -e -C $USEGPU -B ${CIENV_JOBDIR}/results:/results ${theimage} $HEPWL_BMKOPTS -h > x86_image_folder_dump.txt + execute_command_retry singularity run --no-privs -e -C $USEGPU -B ${CIENV_JOBDIR}/results:/results ${theimage} $HEPWL_BMKOPTS -h > x86_image_folder_dump.txt echo "[test_singularity_from_registry] finished at $(date)" echo -e "\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" echo -e "\n[utility.sh] ${FUNCNAME[0]} finished at $(date)\n" -- GitLab From 99a303803369eff95fc4cdba504de18d964c0bf3 Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Wed, 12 Feb 2025 16:39:45 +0100 Subject: [PATCH 05/14] use taskset to force threads --- .../gen-pepper-ma/gen-pepper-ma-bmk.sh | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh index e78c5158..18269e29 100755 --- a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh +++ b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh @@ -23,14 +23,53 @@ function doOne(){ let RANK=${COPY}-1 let LOWERCPU=${RANK}*${NTHREADS} let UPPERCPU=${COPY}*${NTHREADS}-1 - # --bind-to core:${LOWERCPU}-${UPPERCPU} #FIXME - mpiexec -n $NTHREADS /usr/local/bin/pepper -p "g g -> g g" -b $(( $NEVENTS_THREAD * $NTHREADS)) -n 4 > out_$1.log 2>&1 + COMMAND="mpiexec -n $NTHREADS /usr/local/bin/pepper -p "g g -> g g" -b $(( $NEVENTS_THREAD * $NTHREADS)) -n 4 > out_$1.log 2>&1" + # optionally use taskset to constrain to physical CPU cores (only relevant when not using the full machine) + [[ "${USETASKSET}" == "1" ]] && COMMAND="taskset -c ${LOWERCPU}-${UPPERCPU} ${COMMAND}" + echo "${COMMAND}" + eval ${COMMAND} status=${?} echo "[doOne ($1)] $(date) completed (status=$status)" # Return 0 if this workload copy was successful, 1 otherwise return $status } + +# Optional function validateInputArguments may be defined in each benchmark +# If it exists, it is expected to set NCOPIES, NTHREADS, NEVENTS_THREAD +# (based on previous defaults and on user inputs USER_NCOPIES, USER_NTHREADS, USER_NEVENTS_THREADS) +# Input arguments: none +# Return value: please return 0 if input arguments are valid, 1 otherwise +# The following variables are guaranteed to be defined: NCOPIES, NTHREADS, NEVENTS_THREAD +# (benchmark defaults) and USER_NCOPIES, USER_NTHREADS, USER_NEVENTS_THREADS (user inputs) +function validateInputArguments(){ + if [ "$1" != "" ]; then echo "[validateInputArguments] ERROR! Invalid arguments '$@' to validateInputArguments"; return 1; fi + echo "[validateInputArguments] validate input arguments" + # Number of copies and number of threads per copy + if [ "$USER_NTHREADS" != "" ] && [ "$USER_NCOPIES" != "" ]; then + NCOPIES=$USER_NCOPIES + NTHREADS=$USER_NTHREADS + elif [ "$USER_NTHREADS" != "" ]; then + NTHREADS=$USER_NTHREADS + NCOPIES=$((`nproc`/$NTHREADS)) + elif [ "$USER_NCOPIES" != "" ]; then + NCOPIES=$USER_NCOPIES + NTHREADS=$((`nproc`/$NCOPIES)) + fi + # Number of events per thread + if [ "$USER_NEVENTS_THREAD" != "" ]; then NEVENTS_THREAD=$USER_NEVENTS_THREAD; fi + + USETASKSET=0 + for arg in $EXTRA_ARGS; do + [ "${arg}" == "--taskset" ] && USETASKSET=1 + done + + echo "[validateInputArguments] USETASKSET=${USETASKSET}" + + # Return 0 if input arguments are valid, 1 otherwise + return 0 # no checks +} + export PATH=/usr/lib64/openmpi/bin:$PATH export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH -- GitLab From 16dad401fc7cadf0b63de22198f87df1e998d1d0 Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Wed, 12 Feb 2025 16:44:51 +0100 Subject: [PATCH 06/14] enable taskset --- gen/pepper-ma/gen-pepper-ma.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/pepper-ma/gen-pepper-ma.spec b/gen/pepper-ma/gen-pepper-ma.spec index 7e019650..ec3569e3 100644 --- a/gen/pepper-ma/gen-pepper-ma.spec +++ b/gen/pepper-ma/gen-pepper-ma.spec @@ -1,5 +1,5 @@ HEPWL_BMKEXE=gen-pepper-ma-bmk.sh -HEPWL_BMKOPTS="-c2 -t 2 -m none" +HEPWL_BMKOPTS="-c2 -t 2 -m none --extra-args '--taskset'" HEPWL_BMKDIR=gen-pepper-ma HEPWL_BMKDESCRIPTION="Monte Carlo Generator Pepper" HEPWL_DOCKERIMAGENAME=gen-pepper-ma-bmk -- GitLab From b942b1a34a4a713e7050d6365326e5824268588e Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Thu, 13 Feb 2025 11:55:40 +0100 Subject: [PATCH 07/14] fix quotes --- gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh index 18269e29..29a72f54 100755 --- a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh +++ b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh @@ -23,7 +23,7 @@ function doOne(){ let RANK=${COPY}-1 let LOWERCPU=${RANK}*${NTHREADS} let UPPERCPU=${COPY}*${NTHREADS}-1 - COMMAND="mpiexec -n $NTHREADS /usr/local/bin/pepper -p "g g -> g g" -b $(( $NEVENTS_THREAD * $NTHREADS)) -n 4 > out_$1.log 2>&1" + COMMAND="mpiexec -n $NTHREADS /usr/local/bin/pepper -p 'g g -> g g' -b $(( $NEVENTS_THREAD * $NTHREADS)) -n 4 > out_$1.log 2>&1" # optionally use taskset to constrain to physical CPU cores (only relevant when not using the full machine) [[ "${USETASKSET}" == "1" ]] && COMMAND="taskset -c ${LOWERCPU}-${UPPERCPU} ${COMMAND}" echo "${COMMAND}" -- GitLab From d81a8eb614a307b6659959e42894646018c120e0 Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Thu, 13 Feb 2025 15:43:45 +0100 Subject: [PATCH 08/14] allow run as root to avoid mpiexec to fail --- gen/pepper-ma/gen-pepper-ma/DESCRIPTION | 2 +- gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/gen/pepper-ma/gen-pepper-ma/DESCRIPTION b/gen/pepper-ma/gen-pepper-ma/DESCRIPTION index 09dd595b..f5265691 100644 --- a/gen/pepper-ma/gen-pepper-ma/DESCRIPTION +++ b/gen/pepper-ma/gen-pepper-ma/DESCRIPTION @@ -1 +1 @@ -DESCRIBE ME \ No newline at end of file +#FIXME DESCRIBE ME \ No newline at end of file diff --git a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh index 29a72f54..a70e7dc6 100755 --- a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh +++ b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh @@ -23,7 +23,10 @@ function doOne(){ let RANK=${COPY}-1 let LOWERCPU=${RANK}*${NTHREADS} let UPPERCPU=${COPY}*${NTHREADS}-1 - COMMAND="mpiexec -n $NTHREADS /usr/local/bin/pepper -p 'g g -> g g' -b $(( $NEVENTS_THREAD * $NTHREADS)) -n 4 > out_$1.log 2>&1" + # NB + # --allow-run-as-root is needed because in singularity the user seen inside the container + # is not the container's user (bmkuser) but the host user, that could be root + COMMAND="mpiexec --allow-run-as-root -n $NTHREADS /usr/local/bin/pepper -p 'g g -> g g' -b $(( $NEVENTS_THREAD * $NTHREADS)) -n 4 > out_$1.log 2>&1" # optionally use taskset to constrain to physical CPU cores (only relevant when not using the full machine) [[ "${USETASKSET}" == "1" ]] && COMMAND="taskset -c ${LOWERCPU}-${UPPERCPU} ${COMMAND}" echo "${COMMAND}" -- GitLab From b899286089956b79332bae900a2cbc13fc0a6c08 Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Fri, 14 Feb 2025 15:30:28 +0100 Subject: [PATCH 09/14] revert order taskset mpiexec to make them working --- .../gen-pepper-ma/gen-pepper-ma-bmk.sh | 58 ++++++------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh index a70e7dc6..0694ae56 100755 --- a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh +++ b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh @@ -23,13 +23,25 @@ function doOne(){ let RANK=${COPY}-1 let LOWERCPU=${RANK}*${NTHREADS} let UPPERCPU=${COPY}*${NTHREADS}-1 + + USETASKSET=0 + for arg in $EXTRA_ARGS; do + [ "${arg}" == "--taskset" ] && USETASKSET=1 + done + + echo "[doOne ($1)] $(date) [validateInputArguments] USETASKSET=${USETASKSET}" + + # NB # --allow-run-as-root is needed because in singularity the user seen inside the container # is not the container's user (bmkuser) but the host user, that could be root - COMMAND="mpiexec --allow-run-as-root -n $NTHREADS /usr/local/bin/pepper -p 'g g -> g g' -b $(( $NEVENTS_THREAD * $NTHREADS)) -n 4 > out_$1.log 2>&1" + PEPPER_COMMAND="/usr/local/bin/pepper -p 'g g -> g g' -b $(( $NEVENTS_THREAD * $NTHREADS)) -n 4 > out_$1.log 2>&1" + COMMAND="mpiexec --allow-run-as-root -n $NTHREADS ${PEPPER_COMMAND}" # optionally use taskset to constrain to physical CPU cores (only relevant when not using the full machine) - [[ "${USETASKSET}" == "1" ]] && COMMAND="taskset -c ${LOWERCPU}-${UPPERCPU} ${COMMAND}" - echo "${COMMAND}" + if [[ "${USETASKSET}" == "1" ]]; then + COMMAND="mpiexec --allow-run-as-root -n $NTHREADS taskset -c ${LOWERCPU}-${UPPERCPU} ${PEPPER_COMMAND}" + fi + echo "[doOne ($1)] $(date) going to execute command: ${COMMAND}" eval ${COMMAND} status=${?} echo "[doOne ($1)] $(date) completed (status=$status)" @@ -38,41 +50,6 @@ function doOne(){ } -# Optional function validateInputArguments may be defined in each benchmark -# If it exists, it is expected to set NCOPIES, NTHREADS, NEVENTS_THREAD -# (based on previous defaults and on user inputs USER_NCOPIES, USER_NTHREADS, USER_NEVENTS_THREADS) -# Input arguments: none -# Return value: please return 0 if input arguments are valid, 1 otherwise -# The following variables are guaranteed to be defined: NCOPIES, NTHREADS, NEVENTS_THREAD -# (benchmark defaults) and USER_NCOPIES, USER_NTHREADS, USER_NEVENTS_THREADS (user inputs) -function validateInputArguments(){ - if [ "$1" != "" ]; then echo "[validateInputArguments] ERROR! Invalid arguments '$@' to validateInputArguments"; return 1; fi - echo "[validateInputArguments] validate input arguments" - # Number of copies and number of threads per copy - if [ "$USER_NTHREADS" != "" ] && [ "$USER_NCOPIES" != "" ]; then - NCOPIES=$USER_NCOPIES - NTHREADS=$USER_NTHREADS - elif [ "$USER_NTHREADS" != "" ]; then - NTHREADS=$USER_NTHREADS - NCOPIES=$((`nproc`/$NTHREADS)) - elif [ "$USER_NCOPIES" != "" ]; then - NCOPIES=$USER_NCOPIES - NTHREADS=$((`nproc`/$NCOPIES)) - fi - # Number of events per thread - if [ "$USER_NEVENTS_THREAD" != "" ]; then NEVENTS_THREAD=$USER_NEVENTS_THREAD; fi - - USETASKSET=0 - for arg in $EXTRA_ARGS; do - [ "${arg}" == "--taskset" ] && USETASKSET=1 - done - - echo "[validateInputArguments] USETASKSET=${USETASKSET}" - - # Return 0 if input arguments are valid, 1 otherwise - return 0 # no checks -} - export PATH=/usr/lib64/openmpi/bin:$PATH export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH @@ -80,10 +57,9 @@ export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH # when clear what to use # Default values for NCOPIES, NTHREADS, NEVENTS_THREAD must be set in each benchmark -NEVENTS_THREAD=1000 +NEVENTS_THREAD=100000 NTHREADS=4 -NCOPIES=1 - +NCOPIES=$(( `nproc` / $NTHREADS )) # Source the common benchmark driver if [ -f $(dirname $0)/bmk-driver.sh ]; then -- GitLab From 4f76d80a5fbbe898a5ac01bb142e05d6cafa032c Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Mon, 17 Feb 2025 14:29:04 +0100 Subject: [PATCH 10/14] add doc --- gen/pepper-ma/gen-pepper-ma/DESCRIPTION | 31 ++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/gen/pepper-ma/gen-pepper-ma/DESCRIPTION b/gen/pepper-ma/gen-pepper-ma/DESCRIPTION index f5265691..2119a41a 100644 --- a/gen/pepper-ma/gen-pepper-ma/DESCRIPTION +++ b/gen/pepper-ma/gen-pepper-ma/DESCRIPTION @@ -1 +1,30 @@ -#FIXME DESCRIBE ME \ No newline at end of file +Runs the Pepper program with MPI (mpiexec) and optional CPU core binding (taskset). +Pepper: https://gitlab.com/spice-mc/pepper + +**PEPPER (Portable Engine for the Production of Parton-level Event Records)** +is a highly efficient parton-level event generator used to simulate high-energy physics processes at colliders such as the LHC. + +### Configuration via EXTRA_ARGS +In addition to standard commands, Pepper can be customized using the `EXTRA_ARGS` environment variable. + +#### Available Options (via EXTRA_ARGS): + --taskset Enable CPU core binding using 'taskset' to restrict execution to specific cores. + --process <name> (-p) Define the process type for Pepper. Default: "g_g__g_g". + --gpus <N> (-g) Specify the number of GPUs (currently unused). + --batches <N> (-b) Specify the number of batches for the simulation. + +#### Examples: + `EXTRA_ARGS="--taskset"` + Enables CPU core binding. + + `EXTRA_ARGS="--process 'special_case'"` + Runs Pepper with a custom process type. + + `EXTRA_ARGS="--taskset --process 'custom_proc'"` + Uses `taskset` and a custom process. + + `EXTRA_ARGS="--gpus 2"` + Specifies 2 GPUs (not yet implemented). + + `EXTRA_ARGS="--batches 100"` + Sets the number of batches for the simulation to 100. \ No newline at end of file -- GitLab From 3b58072a0c2a38f65652f2a344bf5a3935dede97 Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Mon, 17 Feb 2025 14:29:29 +0100 Subject: [PATCH 11/14] add extra_args config --- .../gen-pepper-ma/gen-pepper-ma-bmk.sh | 62 +++++++++++++------ 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh index 0694ae56..b779986a 100755 --- a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh +++ b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh @@ -16,35 +16,62 @@ # please store here the individual log files for each of the NCOPIES processes function doOne(){ if [ "$1" == "" ] || [ "$2" != "" ]; then echo "[doOne] ERROR! Invalid arguments '$@' to doOne"; return 1; fi - echo "[doOne ($1)] $(date) starting in $(pwd)" - mpiexec --version + VAR_DOONE_1=$1 + VAR_DOONE_2=$2 - COPY=$1 - let RANK=${COPY}-1 - let LOWERCPU=${RANK}*${NTHREADS} - let UPPERCPU=${COPY}*${NTHREADS}-1 + echo "[doOne (${VAR_DOONE_1})] $(date) starting in $(pwd)" - USETASKSET=0 - for arg in $EXTRA_ARGS; do - [ "${arg}" == "--taskset" ] && USETASKSET=1 - done + NGPUS=0 + USE_TASKSET=0 + PEPPER_PROCESS="g_g__g_g" - echo "[doOne ($1)] $(date) [validateInputArguments] USETASKSET=${USETASKSET}" + if [[ "EXTRA_ARGS" != "" ]]; then + echo "[doOne (${VAR_DOONE_1})] EXTRA_ARGS=$EXTRA_ARGS" + # parse extra args if any + options=$(getopt -a -n gen-pepper-ma-bmk -o g:p:b: --long taskset,process:,gpus:,batches: -- $EXTRA_ARGS) + echo "options $options" + eval set -- "$options" + while [[ $# -gt 0 ]]; do + case "$1" in + --taskset ) USE_TASKSET=1; shift;; + --process | -p ) PEPPER_PROCESS="$2"; shift 2;; + --gpus | -g ) NGPUS="$2"; shift 2;; + --batches | -b ) NUMBER_OF_BATCHES="$2"; shift 2;; # New batches parameter + -- ) shift; break;; + * ) break ;; # Handle unexpected arguments safely + esac + done + echo "[doOne (${VAR_DOONE_1})] USE_TASKSET=${USE_TASKSET}" + echo "[doOne (${VAR_DOONE_1})] PEPPER_PROCESS=${PEPPER_PROCESS}" + echo "[doOne (${VAR_DOONE_1})] NGPUS=${NGPUS}" + echo "[doOne (${VAR_DOONE_1})] number_of_batches=${NUMBER_OF_BATCHES}" + fi + + # Here start the process of grouping the cores from 0 to nproc-1 + # in groups of NTHREADS cores, in case the TASKSET option is used + COPY=${VAR_DOONE_1} + RANK=$((COPY - 1)) + LOWERCPU=$((RANK * NTHREADS)) + UPPERCPU=$((COPY * NTHREADS - 1)) + + PEPPER_COMMAND="/usr/local/bin/pepper -p ${PEPPER_PROCESS} -b $(( $NEVENTS_THREAD * $NTHREADS)) -n ${NUMBER_OF_BATCHES} > out_${VAR_DOONE_1}.log 2>&1" + # NB # --allow-run-as-root is needed because in singularity the user seen inside the container # is not the container's user (bmkuser) but the host user, that could be root - PEPPER_COMMAND="/usr/local/bin/pepper -p 'g g -> g g' -b $(( $NEVENTS_THREAD * $NTHREADS)) -n 4 > out_$1.log 2>&1" COMMAND="mpiexec --allow-run-as-root -n $NTHREADS ${PEPPER_COMMAND}" + # optionally use taskset to constrain to physical CPU cores (only relevant when not using the full machine) - if [[ "${USETASKSET}" == "1" ]]; then + if [[ "${USE_TASKSET}" == "1" ]]; then COMMAND="mpiexec --allow-run-as-root -n $NTHREADS taskset -c ${LOWERCPU}-${UPPERCPU} ${PEPPER_COMMAND}" fi - echo "[doOne ($1)] $(date) going to execute command: ${COMMAND}" + + echo "[doOne (${VAR_DOONE_1})] $(date) going to execute command: ${COMMAND}" eval ${COMMAND} status=${?} - echo "[doOne ($1)] $(date) completed (status=$status)" + echo "[doOne (${VAR_DOONE_1})] $(date) completed (status=$status)" # Return 0 if this workload copy was successful, 1 otherwise return $status } @@ -53,11 +80,8 @@ function doOne(){ export PATH=/usr/lib64/openmpi/bin:$PATH export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH -# FixME: need to define the validation of the input parameters -# when clear what to use - # Default values for NCOPIES, NTHREADS, NEVENTS_THREAD must be set in each benchmark -NEVENTS_THREAD=100000 +NEVENTS_THREAD=10000 NTHREADS=4 NCOPIES=$(( `nproc` / $NTHREADS )) -- GitLab From c47d669aa1aee0fb649e3f2213ef230aa6b5e431 Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Mon, 17 Feb 2025 14:29:56 +0100 Subject: [PATCH 12/14] modify spec --- gen/pepper-ma/Dockerfile.append | 2 +- gen/pepper-ma/gen-pepper-ma.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gen/pepper-ma/Dockerfile.append b/gen/pepper-ma/Dockerfile.append index 45ea48c4..c0c3ed2c 100644 --- a/gen/pepper-ma/Dockerfile.append +++ b/gen/pepper-ma/Dockerfile.append @@ -9,7 +9,7 @@ RUN dnf clean all RUN lhapdf install NNPDF30_nlo_as_0118 -RUN git clone --branch native --depth 1 https://gitlab.com/spice-mc/pepper.git pepper-native +RUN git clone --branch native --depth 2 https://gitlab.com/spice-mc/pepper.git pepper-native RUN <<EOF export PATH=/usr/lib64/openmpi/bin:$PATH export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH diff --git a/gen/pepper-ma/gen-pepper-ma.spec b/gen/pepper-ma/gen-pepper-ma.spec index ec3569e3..cb67c612 100644 --- a/gen/pepper-ma/gen-pepper-ma.spec +++ b/gen/pepper-ma/gen-pepper-ma.spec @@ -1,5 +1,5 @@ HEPWL_BMKEXE=gen-pepper-ma-bmk.sh -HEPWL_BMKOPTS="-c2 -t 2 -m none --extra-args '--taskset'" +HEPWL_BMKOPTS="-c 2 -t 2 -m none --extra-args '--process=g_g__g_g --taskset -b 4'" HEPWL_BMKDIR=gen-pepper-ma HEPWL_BMKDESCRIPTION="Monte Carlo Generator Pepper" HEPWL_DOCKERIMAGENAME=gen-pepper-ma-bmk -- GitLab From 9361e3774752682febe680a64a8ccdb1b7341fba Mon Sep 17 00:00:00 2001 From: domenico <domenico.giordano@cern.ch> Date: Mon, 17 Feb 2025 15:25:49 +0100 Subject: [PATCH 13/14] fix default number of batches --- gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh index b779986a..a32ca259 100755 --- a/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh +++ b/gen/pepper-ma/gen-pepper-ma/gen-pepper-ma-bmk.sh @@ -24,6 +24,7 @@ function doOne(){ NGPUS=0 USE_TASKSET=0 PEPPER_PROCESS="g_g__g_g" + NUMBER_OF_BATCHES=4 if [[ "EXTRA_ARGS" != "" ]]; then echo "[doOne (${VAR_DOONE_1})] EXTRA_ARGS=$EXTRA_ARGS" -- GitLab From d231a4d2ab3bdf81322fb920b8b1685c96e77a5d Mon Sep 17 00:00:00 2001 From: hep-wl-merge-request <project_60276_bot_a657ddd3683a1a32409e6efb4de82f12@noreply.gitlab.cern.ch> Date: Mon, 17 Feb 2025 14:44:36 +0000 Subject: [PATCH 14/14] update WL list --- WL_list.md | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/WL_list.md b/WL_list.md index bb8de385..22f849b9 100644 --- a/WL_list.md +++ b/WL_list.md @@ -21,23 +21,24 @@ where: | Experiment | WL repo | SIF image registry | Docker image registry| Latest Built Version | Latest Pipeline status | Unpacked container size | | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -| alice | [digi-reco-core-run3-ma][alice_digi-reco-core-run3-ma_code] | [click for link][alice_digi-reco-core-run3-ma_sif] | [click for link][alice_digi-reco-core-run3-ma_img] | [v3.0][alice_digi-reco-core-run3-ma_pipelink] | ![ci][alice_digi-reco-core-run3-ma_pipeline]| 16G | -| atlas | [gen_sherpa-ma][atlas_gen_sherpa-ma_code] | [click for link][atlas_gen_sherpa-ma_sif] | [click for link][atlas_gen_sherpa-ma_img] | [v2.2][atlas_gen_sherpa-ma_pipelink] | ![ci][atlas_gen_sherpa-ma_pipeline]| 22G | -| atlas | [reco_mt-ma][atlas_reco_mt-ma_code] | [click for link][atlas_reco_mt-ma_sif] | [click for link][atlas_reco_mt-ma_img] | [v2.3][atlas_reco_mt-ma_pipelink] | ![ci][atlas_reco_mt-ma_pipeline]| 22G | -| atlas | [sim_mt-ma][atlas_sim_mt-ma_code] | [click for link][atlas_sim_mt-ma_sif] | [click for link][atlas_sim_mt-ma_img] | [v2.1][atlas_sim_mt-ma_pipelink] | ![ci][atlas_sim_mt-ma_pipeline]| 20G | -| belle2 | [gen-sim-reco-ma][belle2_gen-sim-reco-ma_code] | [click for link][belle2_gen-sim-reco-ma_sif] | [click for link][belle2_gen-sim-reco-ma_img] | [v2.2][belle2_gen-sim-reco-ma_pipelink] | ![ci][belle2_gen-sim-reco-ma_pipeline]| 3.4G | -| cms | [digi-run3-ma][cms_digi-run3-ma_code] | [click for link][cms_digi-run3-ma_sif] | [click for link][cms_digi-run3-ma_img] | [v1.1][cms_digi-run3-ma_pipelink] | ![ci][cms_digi-run3-ma_pipeline]| 5.8G | -| cms | [flowsim][cms_flowsim_code] | [click for link][cms_flowsim_sif] | [click for link][cms_flowsim_img] | [ci-v0.1][cms_flowsim_pipelink] | ![ci][cms_flowsim_pipeline]| 8.4G | -| cms | [gen-sim-run3-ma][cms_gen-sim-run3-ma_code] | [click for link][cms_gen-sim-run3-ma_sif] | [click for link][cms_gen-sim-run3-ma_img] | [v1.1][cms_gen-sim-run3-ma_pipelink] | ![ci][cms_gen-sim-run3-ma_pipeline]| 6.2G | -| cms | [hlt-ma][cms_hlt-ma_code] | [click for link][cms_hlt-ma_sif] | [click for link][cms_hlt-ma_img] | [v0.2][cms_hlt-ma_pipelink] | ![ci][cms_hlt-ma_pipeline]| 19G | -| cms | [mlpf][cms_mlpf_code] | [click for link][cms_mlpf_sif] | [click for link][cms_mlpf_img] | [ci-v0.4][cms_mlpf_pipelink] | ![ci][cms_mlpf_pipeline]| 7.6G | -| cms | [reco-run3-ma][cms_reco-run3-ma_code] | [click for link][cms_reco-run3-ma_sif] | [click for link][cms_reco-run3-ma_img] | [v1.2][cms_reco-run3-ma_pipelink] | ![ci][cms_reco-run3-ma_pipeline]| 6.5G | -| hello | [world-c7-ma][hello_world-c7-ma_code] | [click for link][hello_world-c7-ma_sif] | [click for link][hello_world-c7-ma_img] | [v1.0][hello_world-c7-ma_pipelink] | ![ci][hello_world-c7-ma_pipeline]| 759M | -| hello | [world-cs8-ma][hello_world-cs8-ma_code] | [click for link][hello_world-cs8-ma_sif] | [click for link][hello_world-cs8-ma_img] | [ci-v1.0][hello_world-cs8-ma_pipelink] | ![ci][hello_world-cs8-ma_pipeline]| 518M | -| igwn | [pe][igwn_pe_code] | [click for link][igwn_pe_sif] | [click for link][igwn_pe_img] | [v0.5][igwn_pe_pipelink] | ![ci][igwn_pe_pipeline]| 2.9G | -| juno | [gen-sim-reco][juno_gen-sim-reco_code] | [click for link][juno_gen-sim-reco_sif] | [click for link][juno_gen-sim-reco_img] | [v3.1][juno_gen-sim-reco_pipelink] | ![ci][juno_gen-sim-reco_pipeline]| 3.3G | -| lhcb | [sim-run3-ma][lhcb_sim-run3-ma_code] | [click for link][lhcb_sim-run3-ma_sif] | [click for link][lhcb_sim-run3-ma_img] | [v1.1][lhcb_sim-run3-ma_pipelink] | ![ci][lhcb_sim-run3-ma_pipeline]| 5.4G | -| mg5amc | [madgraph4gpu-2022][mg5amc_madgraph4gpu-2022_code] | [click for link][mg5amc_madgraph4gpu-2022_sif] | [click for link][mg5amc_madgraph4gpu-2022_img] | [ci-v0.10][mg5amc_madgraph4gpu-2022_pipelink] | ![ci][mg5amc_madgraph4gpu-2022_pipeline]| 11G | +| alice | [digi-reco-core-run3-ma][alice_digi-reco-core-run3-ma_code] | [click for link][alice_digi-reco-core-run3-ma_sif] | [click for link][alice_digi-reco-core-run3-ma_img] | [v3.0][alice_digi-reco-core-run3-ma_pipelink] | ![ci][alice_digi-reco-core-run3-ma_pipeline]| 16G | +| atlas | [gen_sherpa-ma][atlas_gen_sherpa-ma_code] | [click for link][atlas_gen_sherpa-ma_sif] | [click for link][atlas_gen_sherpa-ma_img] | [v2.2][atlas_gen_sherpa-ma_pipelink] | ![ci][atlas_gen_sherpa-ma_pipeline]| 22G | +| atlas | [reco_mt-ma][atlas_reco_mt-ma_code] | [click for link][atlas_reco_mt-ma_sif] | [click for link][atlas_reco_mt-ma_img] | [v2.3][atlas_reco_mt-ma_pipelink] | ![ci][atlas_reco_mt-ma_pipeline]| 22G | +| atlas | [sim_mt-ma][atlas_sim_mt-ma_code] | [click for link][atlas_sim_mt-ma_sif] | [click for link][atlas_sim_mt-ma_img] | [v2.1][atlas_sim_mt-ma_pipelink] | ![ci][atlas_sim_mt-ma_pipeline]| 20G | +| belle2 | [gen-sim-reco-ma][belle2_gen-sim-reco-ma_code] | [click for link][belle2_gen-sim-reco-ma_sif] | [click for link][belle2_gen-sim-reco-ma_img] | [v2.2][belle2_gen-sim-reco-ma_pipelink] | ![ci][belle2_gen-sim-reco-ma_pipeline]| 3.4G | +| cms | [digi-run3-ma][cms_digi-run3-ma_code] | [click for link][cms_digi-run3-ma_sif] | [click for link][cms_digi-run3-ma_img] | [v1.1][cms_digi-run3-ma_pipelink] | ![ci][cms_digi-run3-ma_pipeline]| 5.8G | +| cms | [flowsim][cms_flowsim_code] | [click for link][cms_flowsim_sif] | [click for link][cms_flowsim_img] | [ci-v0.1][cms_flowsim_pipelink] | ![ci][cms_flowsim_pipeline]| 8.4G | +| cms | [gen-sim-run3-ma][cms_gen-sim-run3-ma_code] | [click for link][cms_gen-sim-run3-ma_sif] | [click for link][cms_gen-sim-run3-ma_img] | [v1.1][cms_gen-sim-run3-ma_pipelink] | ![ci][cms_gen-sim-run3-ma_pipeline]| 6.2G | +| cms | [hlt-ma][cms_hlt-ma_code] | [click for link][cms_hlt-ma_sif] | [click for link][cms_hlt-ma_img] | [v0.2][cms_hlt-ma_pipelink] | ![ci][cms_hlt-ma_pipeline]| 19G | +| cms | [mlpf][cms_mlpf_code] | [click for link][cms_mlpf_sif] | [click for link][cms_mlpf_img] | [ci-v0.4][cms_mlpf_pipelink] | ![ci][cms_mlpf_pipeline]| 7.6G | +| cms | [reco-run3-ma][cms_reco-run3-ma_code] | [click for link][cms_reco-run3-ma_sif] | [click for link][cms_reco-run3-ma_img] | [v1.2][cms_reco-run3-ma_pipelink] | ![ci][cms_reco-run3-ma_pipeline]| 6.5G | +| gen | [pepper-ma][gen_pepper-ma_code] | [click for link][gen_pepper-ma_sif] | [click for link][gen_pepper-ma_img] | [ci-v1.0][gen_pepper-ma_pipelink] | ![ci][gen_pepper-ma_pipeline]| 1.1G | +| hello | [world-c7-ma][hello_world-c7-ma_code] | [click for link][hello_world-c7-ma_sif] | [click for link][hello_world-c7-ma_img] | [v1.0][hello_world-c7-ma_pipelink] | ![ci][hello_world-c7-ma_pipeline]| 759M | +| hello | [world-cs8-ma][hello_world-cs8-ma_code] | [click for link][hello_world-cs8-ma_sif] | [click for link][hello_world-cs8-ma_img] | [ci-v1.0][hello_world-cs8-ma_pipelink] | ![ci][hello_world-cs8-ma_pipeline]| 518M | +| igwn | [pe][igwn_pe_code] | [click for link][igwn_pe_sif] | [click for link][igwn_pe_img] | [v0.5][igwn_pe_pipelink] | ![ci][igwn_pe_pipeline]| 2.9G | +| juno | [gen-sim-reco][juno_gen-sim-reco_code] | [click for link][juno_gen-sim-reco_sif] | [click for link][juno_gen-sim-reco_img] | [v3.1][juno_gen-sim-reco_pipelink] | ![ci][juno_gen-sim-reco_pipeline]| 3.3G | +| lhcb | [sim-run3-ma][lhcb_sim-run3-ma_code] | [click for link][lhcb_sim-run3-ma_sif] | [click for link][lhcb_sim-run3-ma_img] | [v1.1][lhcb_sim-run3-ma_pipelink] | ![ci][lhcb_sim-run3-ma_pipeline]| 5.4G | +| mg5amc | [madgraph4gpu-2022][mg5amc_madgraph4gpu-2022_code] | [click for link][mg5amc_madgraph4gpu-2022_sif] | [click for link][mg5amc_madgraph4gpu-2022_img] | [ci-v0.10][mg5amc_madgraph4gpu-2022_pipelink] | ![ci][mg5amc_madgraph4gpu-2022_pipeline]| 11G | [alice_digi-reco-core-run3-ma_code]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads/-/blob/master/alice/digi-reco-core-run3-ma/alice-digi-reco-core-run3-ma [alice_digi-reco-core-run3-ma_sif]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads-sif/container_registry/?search%5B%5D=alice-digi-reco-core-run3-ma-bmk @@ -105,6 +106,12 @@ where: [cms_reco-run3-ma_pipelink]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads/-/pipelines/6452700 [cms_reco-run3-ma_pipeline]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads/badges/qa-build-cms-reco-run3-ma/pipeline.svg +[gen_pepper-ma_code]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads/-/blob/master/gen/pepper-ma/gen-pepper-ma +[gen_pepper-ma_sif]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads-sif/container_registry/?search%5B%5D=gen-pepper-ma-bmk +[gen_pepper-ma_img]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads/container_registry/?search%5B%5D=gen-pepper-ma-bmk +[gen_pepper-ma_pipelink]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads/-/pipelines/10405484 +[gen_pepper-ma_pipeline]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads/badges/qa-build-gen-pepper-ma/pipeline.svg + [hello_world-c7-ma_code]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads/-/blob/master/hello/world-c7-ma/hello-world-c7-ma [hello_world-c7-ma_sif]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads-sif/container_registry/?search%5B%5D=hello-world-c7-ma-bmk [hello_world-c7-ma_img]: https://gitlab.cern.ch/hep-benchmarks/hep-workloads/container_registry/?search%5B%5D=hello-world-c7-ma-bmk -- GitLab