diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 40a9a99967b52b23864354bc8dd2abcc3010914e..6369be08dbddfe782fd231ea7935b0efd217b66a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -83,12 +83,19 @@ benchmark:
   tags: ['plafrim']
   #extends: .only-main-mr
   needs: []
+  variables:
+    CI_HOSTNAME: zonda
+  cache:
+    key: "$CI_JOB_NAME_SLUG-$CI_COMMIT_REF_SLUG"
+    paths:
+      - build
   script:
     - ./scripts/plafrim_level1.sh
   artifacts:
     when: always
     paths:
-      - bench.sqlite3
+      - ./*.out
+      - ./*.sqlite3
       - ./*.csv
 
 pages:
diff --git a/scripts/plafrim_level1.sh b/scripts/plafrim_level1.sh
index 391c279fe72acac5a745349b28763b687f9437be..5a57490ed27fbbb89f20deed8ad367464c238d67 100755
--- a/scripts/plafrim_level1.sh
+++ b/scripts/plafrim_level1.sh
@@ -2,7 +2,7 @@
 set -x
 
 # Submit slurm jobs
-sbatch --wait --job-name=scalfmm --output=scalfmm.out --nodes=1 --time=01:00:00 --constraint=suroit --exclusive --ntasks-per-node=1 ./scripts/plafrim_level2.sh
+sbatch --wait --job-name=scalfmm --output=scalfmm.out --nodes=1 --time=03:00:00 --constraint=$CI_HOSTNAME --exclusive --ntasks-per-node=1 ./scripts/plafrim_level2.sh
 err=$?
 
 cat scalfmm.out
diff --git a/scripts/plafrim_level2.sh b/scripts/plafrim_level2.sh
index d8cd9781db936c99c4b7fb75575aee2638093459..4c90657eac1c6e22084953d183d6586064490a05 100755
--- a/scripts/plafrim_level2.sh
+++ b/scripts/plafrim_level2.sh
@@ -2,19 +2,20 @@
 set -x
 
 # to avoid a lock during fetching git branches in parallel
-export XDG_CACHE_HOME=/tmp/guix-$$
+#export XDG_CACHE_HOME=/tmp/guix-$$
 
 # save guix commits
+#guix describe --format=json > guix.json
 guix time-machine -C .guix/scalfmm-channels.scm -- describe --format=json > guix.json
 
-exec guix time-machine -C .guix/scalfmm-channels.scm -- shell \
-       --pure --preserve="^CI|proxy$|^SLURM" \
-       -m .guix/scalfmm-manifest-gcc-mkl-bench.scm \
-       -- /bin/bash --norc ./scripts/plafrim_level3.sh
+#exec guix shell --pure --preserve="^CI|proxy$|^SLURM" \
+exec guix time-machine -C .guix/scalfmm-channels.scm -- shell --pure --preserve="^CI|proxy$|^SLURM" \
+  -m .guix/scalfmm-manifest-gcc-mkl-bench.scm \
+  -- /bin/bash --norc ./scripts/plafrim_level3.sh
 err=$?
 
 # clean tmp
-rm -rf /tmp/guix-$$
+#rm -rf /tmp/guix-$$
 
 # exit with error code from the guix command
 exit $err
diff --git a/scripts/plafrim_level3.sh b/scripts/plafrim_level3.sh
index c4179019e10660b16b326413f74e315cb9371b46..c03be9767eaac9f3df53d89bd16b3fb179cd7d42 100755
--- a/scripts/plafrim_level3.sh
+++ b/scripts/plafrim_level3.sh
@@ -19,12 +19,10 @@ if [[ -z "${CI_HOSTNAME}" ]]; then
 fi
 
 # configuration and compilation
-#if [ -d build ]; then
-#  rm build -r
-#fi
 cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -march=native" -Dscalfmm_BUILD_BENCH=ON -Dscalfmm_USE_MKL=ON
-cmake --build build --target fmm-computation-seq
-cmake --build build --target fmm-computation-omp
+cmake --build build --target fmm-computation-seq &
+cmake --build build --target fmm-computation-omp &
+wait
 export SCALFMM_EXE_DIR=$PWD/build/bench/Release
 
 # clean old benchmarks