diff --git a/leonardo_booster.sh b/leonardo_booster.sh
new file mode 100644
index 0000000000000000000000000000000000000000..87c7a0ed5dba6714480badb24b5e9a1e721c0127
--- /dev/null
+++ b/leonardo_booster.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+#SBATCH --nodes 1
+#SBATCH --ntasks-per-node 1
+#SBATCH --cpus-per-task 32
+#SBATCH --gres=gpu:1
+#SBATCH --partition=boost_usr_prod
+
+set -xev #exit on error
+
+export DEBUG=1
+
+PPL=(1 64) #vary particle per leaf
+THREADS=(1 2 4 8 16 32 64 128) #vary branching (thread) count
+MODE=(cpu gpu) #vary gpu/cpu switch
+#N=(1000 10000 100000 1000000 10000000)
+N=(50000000) #scaling will use 5e7 particles
+
+#
+# run tree build tests on GPU
+#
+CC='nvc++' HW_FLAGS='-mp=gpu -gpu=rdc,managed -gpu=cc80  -Minfo=mp,accel -Minline=1000 -O3 -DTARGET=1 -DOPENMP_RECURSION_TRICK -DOPENMP_TARGET_HILBERTCOPY' srun -n 1 python -m hotwheels_core.wrap hotwheels_octree/test_target.cpp
+
+rm -f report.csv
+#
+# loop over tree build configurations PPL, THREADS, MODE, N
+#
+for ppl in "${PPL[@]}" ; do
+    for n in "${N[@]}" ; do
+        for mode in "${MODE[@]}" ; do
+            for threads in "${THREADS[@]}" ; do
+                if [[ "$mode" == "cpu"  ]]; then
+                    export CC=gcc
+                    export HW_FLAGS='-O3 -fopenmp'
+                    export OMP_NUM_THREADS=$threads
+                else
+                    if [[ $threads -lt 16 ]]; then
+                       continue
+                    fi
+                    export CC=nvc++
+                    export HW_FLAGS='-mp=gpu -gpu=rdc,managed -gpu=cc80  -Minfo=mp,accel -Minline=1000 -O3'
+                    export OMP_NUM_THREADS=4
+                fi
+                # rnu the test
+                srun -n 1 python hotwheels_octree/testgpu.py -ppl $ppl -n $n -mode $mode -threads $threads 1>run.out 2>run.err
+                t=$(grep time: run.out | sed s/time://)
+                echo $ppl,$n,$mode,$threads,$t >> report.csv # store the report
+            done
+        done
+    done
+done
\ No newline at end of file