Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Assuming MY_DAOS_INSTALL_PATH is set, you can run:

( Note: for the SC22 version of IO500, line 9 of this patch has been changed to the new SC22 version)

Code Block
languagebash
cat << EOF > io500_prepare.patch
diff --git a/prepare.sh b/prepare.sh
index e38cae6..54dbba5 100755
--- a/prepare.sh
+++ b/prepare.sh
@@ -8,7 +8,7 @@ echo It will output OK at the end if builds succeed
 echo

 IOR_HASH=bbfea005e2c05726da07171dfe3dfdd6c6011e14
-PFIND_HASH=778dca8
+PFIND_HASH=dfs_find

 INSTALL_DIR=\$PWD
 BIN=\$INSTALL_DIR/bin
@@ -59,7 +59,7 @@ function get_ior {

 function get_pfind {
   echo "Preparing parallel find"
-  git_co https://github.com/VI4IO/pfind.git pfind \$PFIND_HASH
+  git_co https://github.com/mchaarawi/pfind pfind \$PFIND_HASH
 }

 function get_schema_tools {
@@ -73,7 +73,7 @@ function build_ior {
   pushd "\$BUILD"/ior
   ./bootstrap
   # Add here extra flags
-  ./configure --prefix="\$INSTALL_DIR"
+  ./configure --prefix="\$INSTALL_DIR" --with-daos=\${MY_DAOS_INSTALL_PATH}
   cd src
   \$MAKE clean
   \$MAKE install
EOF

git apply io500_prepare.patch

...

Code Block
languagebash
cat << EOF > io500_Makefile.patch
diff --git a/Makefile b/Makefile
index ee5cee9..d8fc0e4 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,12 @@
 CC = mpicc
 CFLAGS += -std=gnu99 -Wall -Wempty-body -Werror -Wstrict-prototypes -Werror=maybe-uninitialized -Warray-bounds
+CFLAGS += -I\${MY_DAOS_INSTALL_PATH}/include

 IORCFLAGS = \$(shell grep CFLAGS ./build/ior/src/build.conf | cut -d "=" -f 2-)
 CFLAGS += -g3 -lefence -I./include/ -I./src/ -I./build/pfind/src/ -I./build/ior/src/
 IORLIBS = \$(shell grep LDFLAGS ./build/ior/src/build.conf | cut -d "=" -f 2-)
 LDFLAGS += -lm \$(IORCFLAGS) \$(IORLIBS) # -lgpfs # may need some additional flags as provided to IOR
+LDFLAGS += -L\${MY_DAOS_INSTALL_PATH}/lib64 -ldaos -ldaos_common -ldfs -lgurt -luuid
-lirc
 
 VERSION_GIT=\$(shell git describe --always --abbrev=12)
 VERSION_TREE=\$(shell git diff src | wc -l | sed -e 's/   *//g' -e 's/^0//' | sed "s/\([0-9]\)/-\1/")
EOF

git apply io500_Makefile.patch

...

Code Block
languagebash
dmg pool create -z 100G --label =100% io500_pool
daos container create --type POSIX --pool io500_pool --label=io500_cont

Set the pool and cont environment variables

...

  • Run the binary directly with or without the extended mode:

    Code Block
    languagebash
    mpirun -np 16 --hostfile ~/config/cli_hosts ./io500 temp.ini
    mpirun -np 16 --hostfile ~/config/cli_hosts ./io500 temp.ini --mode=extended

    The extended mode is not required for an official submission and will extend your runtime significantly. After the run completes, you will need to tar up the result dir for that run.

    Note that some versions of OpenMPI require setting the environment variables on the mpirun command line, so one needs to add the environment variables that are mentioned above on the mpirun command line with the following format:

    Code Block
    languagebash
    mpirun -np 16 -x env1=value1 -x env2=value2 --hostfile ~/config/cli_hosts ./io500 temp.ini
  • Run the io-500.sh script:

    • This requires mounting dfuse on the launch node only (not all the compute nodes):

      Code Block
      languagebash
      mkdir /tmp/dfuse
      dfuse /tmp/dfuse/ --pool=$DAOS_POOL --container=$DAOS_CONT -m /tmp/dfuse/

      Then, edit the io500.sh launch script with the mpirun command and change the local workdir, to add the dfuse prefix

      Code Block
      languagebash
      diff --git a/io500.sh b/io500.sh
      index 5f0bb89..dd62c35 100755
      --- a/io500.sh
      +++ b/io500.sh
      @@ -12,10 +12,10 @@
       # This script takes its parameters from the same .ini file as io500 binary.
       io500_ini="$1"          # You can set the ini file here
       io500_mpirun="mpiexec"
      -io500_mpiargs="-np 2"
      +io500_mpiargs="-np 16 --hostfile ~/config/cli_hosts"
       
       function setup(){
      -  local workdir="$1"
      +  local workdir="/tmp/dfuse/$1"
         local resultdir="$2"
         mkdir -p $workdir $resultdir
      
      
      • Note that some versions of OpenMPI require setting the environment variables on the mpirun command line, so one needs to add the environment variables that are mentioned above on the mpirun command line in the script here with the following format:

        Code Block
        languagebash
        io500_mpiargs="-np 16 -x env1=value1 -x env2=value2 --hostfile ~/config/cli_hosts
    • Then run the io500.sh script which will tar the results for you at the end and place them in the result directory you specified in the ini file:

      Code Block
      languagebash
      ./io500.sh temp.ini

      Lastly umount dfuse on the launch node:

      Code Block
      languagebash
      fusermount3 -u /tmp/dfuse/


...