diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6369be08dbddfe782fd231ea7935b0efd217b66a..a88ac03cd0c68592607f6600563ea4577f7b8a7a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -89,6 +89,9 @@ benchmark:
     key: "$CI_JOB_NAME_SLUG-$CI_COMMIT_REF_SLUG"
     paths:
       - build
+  parallel:
+    matrix:
+      - CI_BENCHMARK: ['accuracy', 'timeseq', 'timeomp']
   script:
     - ./scripts/plafrim_level1.sh
   artifacts:
diff --git a/scripts/plafrim_level3.sh b/scripts/plafrim_level3.sh
index c03be9767eaac9f3df53d89bd16b3fb179cd7d42..00b034b841f5f49710fdbc9dc3c1945e293fb1f2 100755
--- a/scripts/plafrim_level3.sh
+++ b/scripts/plafrim_level3.sh
@@ -18,34 +18,12 @@ if [[ -z "${CI_HOSTNAME}" ]]; then
   export CI_HOSTNAME=`hostname`
 fi
 
-# configuration and compilation
-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 &
-wait
 export SCALFMM_EXE_DIR=$PWD/build/bench/Release
 
 # clean old benchmarks
 if [ -d scripts/results ]; then
   rm scripts/results -r
 fi
-# Execute benchmark commands
-jube run scripts/scalfmm-accuracy.xml --id 1
-jube run scripts/scalfmm-time-seq.xml --id 2
-jube run scripts/scalfmm-time-omp.xml --id 3
-
-# parse log files
-jube analyse scripts/results --id 1
-jube analyse scripts/results --id 2
-jube analyse scripts/results --id 3
-
-# reports in csv
-jube result scripts/results --id 1 -o accuracy_csv > scalfmm_accuracy.csv
-jube result scripts/results --id 2 -o timeseq_csv > scalfmm_timeseq.csv
-jube result scripts/results --id 3 -o timeomp_csv > scalfmm_timeomp.csv
-cat scalfmm_accuracy.csv
-cat scalfmm_timeseq.csv
-cat scalfmm_timeomp.csv
 
 # get current database file scalfmm.sqlite3 stored on gitlab
 if [[ ! -z "${CI_JOB_TOKEN}" ]]; then
@@ -58,10 +36,48 @@ if [[ ! -z "${CI_JOB_TOKEN}" ]]; then
   fi
 fi
 
-# update scalfmm.sqlite3 database
-jube result scripts/results --id 1 -o accuracy
-jube result scripts/results --id 2 -o timeseq
-jube result scripts/results --id 3 -o timeomp
+# configuration
+cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -march=native" -Dscalfmm_BUILD_BENCH=ON -Dscalfmm_USE_MKL=ON
+
+# compilation and run benchmarks
+case "${CI_BENCHMARK}" in
+  accuracy)
+    echo "CI_BENCHMARK is set to accuracy."
+    # compilation
+    cmake --build build --target fmm-computation-seq
+    # run benchmarks
+    jube run scripts/scalfmm-accuracy.xml --id 1
+    # parse result log files
+    jube analyse scripts/results --id 1
+    # generate csv file
+    jube result scripts/results --id 1 -o accuracy_csv > scalfmm_accuracy.csv
+    cat scalfmm_accuracy.csv
+    # update scalfmm.sqlite3 database, table accuracy
+    jube result scripts/results --id 1 -o accuracy
+    ;;
+  timeseq)
+    echo "CI_BENCHMARK is set to timeseq."
+    cmake --build build --target fmm-computation-seq
+    jube run scripts/scalfmm-time-seq.xml --id 2
+    jube analyse scripts/results --id 2
+    jube result scripts/results --id 2 -o timeseq_csv > scalfmm_timeseq.csv
+    cat scalfmm_timeseq.csv
+    jube result scripts/results --id 2 -o timeseq
+    ;;
+  timeomp)
+    echo "CI_BENCHMARK is set to timeomp."
+    cmake --build build --target fmm-computation-omp
+    jube run scripts/scalfmm-time-omp.xml --id 3
+    jube analyse scripts/results --id 3
+    jube result scripts/results --id 3 -o timeomp_csv > scalfmm_timeomp.csv
+    cat scalfmm_timeomp.csv
+    jube result scripts/results --id 3 -o timeomp
+    ;;
+  *)
+    echo "CI_BENCHMARK is set to an unknown value."
+    exit 1
+    ;;
+esac
 
 # upload updated scalfmm.sqlite3 on gitlab
 if [[ ! -z "${CI_JOB_TOKEN}" ]]; then
diff --git a/scripts/scalfmm-accuracy.xml b/scripts/scalfmm-accuracy.xml
index af35c89931d29d86393af73f7402fe09793b1132..a56f340246ac2e8fdbe57a4aa101691d4e602bd1 100644
--- a/scripts/scalfmm-accuracy.xml
+++ b/scripts/scalfmm-accuracy.xml
@@ -5,12 +5,12 @@
 
         <!-- Cartesian product of input parameters -->
         <parameterset name="param">
-            <parameter name="ndim"               type="int"   >1, 2, 3</parameter>
-            <!-- <parameter name="ndim"               type="int"   >2, 3</parameter> -->
-            <parameter name="kernel_type"        type="int"   >0, 6, 7</parameter>
-            <!-- <parameter name="kernel_type"        type="int"   >0, 7</parameter> -->
-            <parameter name="interp_type"        type="int"   >0, 1, 2, 3, 4</parameter>
-            <!-- <parameter name="interp_type"        type="int"   >2, 3</parameter> -->
+            <!-- <parameter name="ndim"               type="int"   >1, 2, 3</parameter> -->
+            <parameter name="ndim"               type="int"   >2, 3</parameter>
+            <!-- <parameter name="kernel_type"        type="int"   >0, 6, 7</parameter> -->
+            <parameter name="kernel_type"        type="int"   >0</parameter>
+            <!-- <parameter name="interp_type"        type="int"   >0, 1, 2, 3, 4</parameter> -->
+            <parameter name="interp_type"        type="int"   >3</parameter>
             <parameter name="nrun"               type="int"   >1</parameter>
             <parameter name="nthread"            type="int"   >4</parameter>
             <parameter name="groupsize"          type="int"   >1</parameter>
diff --git a/scripts/scalfmm-time-omp.xml b/scripts/scalfmm-time-omp.xml
index 9395523ee8a2f8128f5bf53e09ea67c8f07bcd9e..287a7310ca12a05406e6f45a4484b680e428ecf2 100644
--- a/scripts/scalfmm-time-omp.xml
+++ b/scripts/scalfmm-time-omp.xml
@@ -16,8 +16,8 @@
             <parameter name="size"               type="int"   >100000</parameter>
             <parameter name="nthread"            type="int"   >1, 2, 4, 8, 16</parameter>
             <!-- <parameter name="nthread"            type="int"   >1, 2, 4</parameter> -->
-            <parameter name="groupsize"          type="int"   >1, 5, 10, 100, 1000</parameter>
-            <!-- <parameter name="groupsize"          type="int"   >1, 5, 10, 100</parameter> -->
+            <!-- <parameter name="groupsize"          type="int"   >1, 5, 10, 100, 1000</parameter> -->
+            <parameter name="groupsize"          type="int"   >10, 100</parameter>
             <parameter name="command"            type="string">$SCALFMM_EXE_DIR/fmm-computation-omp --fmm-computation --dimension ${ndim} --group-size ${groupsize} --interp-settings ${interp_type} --kernel ${kernel_type} --order ${interp_order} --nb-runs ${nrun} --threads ${nthread} --size ${size} --tree-height ${tree_height}</parameter>
         </parameterset>
 
diff --git a/scripts/scalfmm-time-seq.xml b/scripts/scalfmm-time-seq.xml
index 43092c6f1eb3ce69096319a60465df5b068e6eed..7a3febcbb6c5dc9724ad0c395aa952a2fec27cdc 100644
--- a/scripts/scalfmm-time-seq.xml
+++ b/scripts/scalfmm-time-seq.xml
@@ -8,16 +8,16 @@
             <parameter name="ndim"               type="int"   >1, 2, 3</parameter>
             <!-- <parameter name="ndim"               type="int"   >2</parameter> -->
             <parameter name="kernel_type"        type="int"   >0</parameter>
-            <parameter name="interp_type"        type="int"   >1, 2, 4</parameter>
-            <!-- <parameter name="interp_type"        type="int"   >1</parameter> -->
+            <!-- <parameter name="interp_type"        type="int"   >1, 2, 4</parameter> -->
+            <parameter name="interp_type"        type="int"   >1</parameter>
             <parameter name="nrun"               type="int"   >1</parameter>
             <parameter name="nthread"            type="int"   >1</parameter>
             <parameter name="groupsize"          type="int"   >1</parameter>
-            <parameter name="tree_height"        type="int"   >3, 4, 5</parameter>
-            <!-- <parameter name="tree_height"        type="int"   >3</parameter> -->
+            <!-- <parameter name="tree_height"        type="int"   >3, 4, 5</parameter> -->
+            <parameter name="tree_height"        type="int"   >3</parameter>
             <parameter name="interp_order"       type="int"   >5</parameter>
-            <parameter name="size"               type="int"   >1000, 5000, 10000, 50000, 100000, 500000, 1000000</parameter>
-            <!-- <parameter name="size"               type="int"   >1000, 5000, 10000</parameter> -->
+            <!-- <parameter name="size"               type="int"   >1000, 5000, 10000, 50000, 100000, 500000, 1000000</parameter> -->
+            <parameter name="size"               type="int"   >1000, 5000, 10000, 50000</parameter>
             <parameter name="command"            type="string">$SCALFMM_EXE_DIR/fmm-computation-seq --fmm-computation --dimension ${ndim} --group-size ${groupsize} --interp-settings ${interp_type} --kernel ${kernel_type} --order ${interp_order} --nb-runs ${nrun} --threads ${nthread} --size ${size} --tree-height ${tree_height}</parameter>
         </parameterset>