From 56eb9c61ce38a0f0ffcf6dd95615717115e401d1 Mon Sep 17 00:00:00 2001
From: Florent Pruvost <florent.pruvost@inria.fr>
Date: Thu, 13 Apr 2023 15:07:50 +0200
Subject: [PATCH] Fix plafrim benchmarks with nmad: use hwloc-bind for CPU
 binding

---
 tools/bench/plafrim/parameters/bora/parameters.xml    | 6 +++---
 tools/bench/plafrim/parameters/sirocco/parameters.xml | 6 +++---
 tools/bench/plafrim/run.sh                            | 6 +++---
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/tools/bench/plafrim/parameters/bora/parameters.xml b/tools/bench/plafrim/parameters/bora/parameters.xml
index 8ad5c261e..67e444eb8 100644
--- a/tools/bench/plafrim/parameters/bora/parameters.xml
+++ b/tools/bench/plafrim/parameters/bora/parameters.xml
@@ -15,7 +15,7 @@
         <parameter name="m" mode="python"    type="int"   >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}, ${nmpi}*48*${b}][$i_mn]</parameter>
         <parameter name="k" mode="python"    type="int"   >${m}</parameter>
         <parameter name="n" mode="python"    type="int"   >${m}</parameter>
-        <parameter name="command"            type="string">mpiexec $MPI_OPTIONS -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
+        <parameter name="command"            type="string">mpiexec -np $nmpi $MPI_OPTIONS $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
     </parameterset>
     <parameterset name="param_potrf">
         <parameter name="hostname"           type="string">bora</parameter>
@@ -32,7 +32,7 @@
         <parameter name="m" mode="python"    type="int"   >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}, ${nmpi}*48*${b}][$i_mn]</parameter>
         <parameter name="n" mode="python"    type="int"   >${m}</parameter>
         <parameter name="k"                  type="int"   >1</parameter>
-        <parameter name="command"            type="string">mpiexec $MPI_OPTIONS -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
+        <parameter name="command"            type="string">mpiexec -np $nmpi $MPI_OPTIONS $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
     </parameterset>
     <parameterset name="param_geqrf">
         <parameter name="hostname"           type="string">bora</parameter>
@@ -49,6 +49,6 @@
         <parameter name="m" mode="python"    type="int"   >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}, ${nmpi}*48*${b}][$i_mn]</parameter>
         <parameter name="n" mode="python"    type="int"   >${m}</parameter>
         <parameter name="k"                  type="int"   >1</parameter>
-        <parameter name="command"            type="string">mpiexec $MPI_OPTIONS -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
+        <parameter name="command"            type="string">mpiexec -np $nmpi $MPI_OPTIONS $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
     </parameterset>
 </jube>
diff --git a/tools/bench/plafrim/parameters/sirocco/parameters.xml b/tools/bench/plafrim/parameters/sirocco/parameters.xml
index 3f04ebc61..23d63e53c 100644
--- a/tools/bench/plafrim/parameters/sirocco/parameters.xml
+++ b/tools/bench/plafrim/parameters/sirocco/parameters.xml
@@ -15,7 +15,7 @@
         <parameter name="m" mode="python"    type="int"   >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}][$i_mn]</parameter>
         <parameter name="k" mode="python"    type="int"   >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}][$i_mn]</parameter>
         <parameter name="n" mode="python"    type="int"   >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}][$i_mn]</parameter>
-        <parameter name="command"            type="string">mpiexec $MPI_OPTIONS -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
+        <parameter name="command"            type="string">mpiexec -np $nmpi $MPI_OPTIONS $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
     </parameterset>
     <parameterset name="param_potrf">
         <parameter name="hostname"           type="string">sirocco</parameter>
@@ -32,7 +32,7 @@
         <parameter name="m" mode="python"    type="int"   >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}][$i_mn]</parameter>
         <parameter name="n" mode="python"    type="int"   >${m}</parameter>
         <parameter name="k"                  type="int"   >1</parameter>
-        <parameter name="command"            type="string">mpiexec $MPI_OPTIONS -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
+        <parameter name="command"            type="string">mpiexec -np $nmpi $MPI_OPTIONS $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
     </parameterset>
     <parameterset name="param_geqrf">
         <parameter name="hostname"           type="string">sirocco</parameter>
@@ -49,6 +49,6 @@
         <parameter name="m" mode="python"    type="int"   >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}][$i_mn]</parameter>
         <parameter name="n" mode="python"    type="int"   >${m}</parameter>
         <parameter name="k"                  type="int"   >1</parameter>
-        <parameter name="command"            type="string">mpiexec $MPI_OPTIONS -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
+        <parameter name="command"            type="string">mpiexec -np $nmpi $MPI_OPTIONS $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter>
     </parameterset>
 </jube>
diff --git a/tools/bench/plafrim/run.sh b/tools/bench/plafrim/run.sh
index 567a8cfad..08603b7ee 100755
--- a/tools/bench/plafrim/run.sh
+++ b/tools/bench/plafrim/run.sh
@@ -34,7 +34,7 @@ then
   export SLURM_CONSTRAINTS="sirocco,omnipath,v100"
   export CHAMELEON_BUILD_OPTIONS="-DCHAMELEON_USE_MPI=ON -DCHAMELEON_USE_CUDA=ON -DCMAKE_BUILD_TYPE=Release"
   export STARPU_HOSTNAME="sirocco"
-  export LD_PRELOAD="/usr/lib64/libcuda.so /usr/lib64/libnvidia-fatbinaryloader.so.440.33.01"
+  export LD_PRELOAD="/usr/lib64/libcuda.so"
 else
   echo "$0: Please set the NODE environnement variable to bora or sirocco."
   exit -1
@@ -57,14 +57,14 @@ then
   GUIX_ADHOC_MPI="openssh openmpi"
 elif [ $MPI = "nmad" ]
 then
-  export MPI_OPTIONS="-DPIOM_DEDICATED=1 -DPIOM_DEDICATED_WAIT=1"
+  export MPI_OPTIONS="-DPIOM_DEDICATED=1 -DPIOM_DEDICATED_WAIT=1 hwloc-bind --cpubind machine:0"
   GUIX_ENV_MPI="--with-input=openmpi=nmad --with-branch=starpu=starpu-1.3"
   GUIX_ADHOC_MPI="which gzip zlib tar inetutils util-linux procps openssh nmad"
 else
   echo "$0: Please set the MPI environnement variable to openmpi or nmad."
   exit -1
 fi
-GUIX_ADHOC="coreutils gawk grep jube perl python python-click python-certifi python-elasticsearch python-gitpython python-matplotlib python-pandas python-seaborn r-ggplot2 r-plyr r-reshape2 sed slurm mkl"
+GUIX_ADHOC="coreutils gawk grep hwloc jube perl python python-click python-certifi python-elasticsearch python-gitpython python-matplotlib python-pandas python-seaborn r-ggplot2 r-plyr r-reshape2 sed slurm mkl"
 GUIX_RULE="-D $GUIX_ENV $GUIX_ENV_MPI $GUIX_ADHOC $GUIX_ADHOC_MPI"
 
 # Submit jobs
-- 
GitLab