starpu_smpirun.in 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/bin/bash
  2. prefix=@prefix@
  3. SMPIRUN=@smpirun_path@
  4. STARPU_DATADIR=@datadir@
  5. MPI_PLATFORM=""
  6. MPI_HOSTFILE=""
  7. NP=""
  8. while true; do
  9. case "$1" in
  10. "-platform")
  11. MPI_PLATFORM=$2
  12. if [ ! -r "$MPI_PLATFORM" ]; then
  13. echo "$MPI_PLATFORM can't be read"
  14. exit 1
  15. fi
  16. shift 2
  17. ;;
  18. "-hostfile")
  19. MPI_HOSTFILE=$2
  20. if [ ! -r "$MPI_HOSTFILE" ]; then
  21. echo "$MPI_HOSTFILE can't be read"
  22. exit 1
  23. fi
  24. shift 2
  25. ;;
  26. "-np")
  27. NP=$2
  28. shift 2
  29. ;;
  30. *)
  31. break
  32. ;;
  33. esac
  34. done
  35. if [ -z "$MPI_PLATFORM" ] || [ -z "$MPI_HOSTFILE" ]; then
  36. echo "$0 -platform PLATFORM -hostfile HOSTFILE [ -np N ] [ ... ] program [ args ]"
  37. exit 2
  38. fi
  39. PLATFORM=$(mktemp /tmp/StarPU-MPI-platform-XXXXXXXX.xml)
  40. [ -n "$STARPU_PERF_MODEL_DIR" ] || STARPU_PERF_MODEL_DIR=$HOME/.starpu/sampling
  41. [ -n "$STARPU_HOSTNAME" ] || STARPU_HOSTNAME=$(hostname)
  42. NODE_PLATFORM=$STARPU_PERF_MODEL_DIR/bus/${STARPU_HOSTNAME}.platform.xml
  43. [ -n "$NP" ] || NP=$(grep -v "^$" $MPI_HOSTFILE | wc -l)
  44. (
  45. cat << \EOF
  46. <?xml version='1.0'?>
  47. <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
  48. <platform version="3">
  49. <AS id="ASroot" routing="None">
  50. EOF
  51. tail -n +3 $MPI_PLATFORM | grep -v '<platform' | grep -v '</platform'
  52. for i in $(seq 0 $((NP - 1))) ; do
  53. xsltproc --novalid --stringparam ASname StarPU-MPI$i $STARPU_DATADIR/starpu/starpu_smpi.xslt $NODE_PLATFORM | grep -v network/ | tail -n +4 | head -n -1
  54. done
  55. cat << \EOF
  56. </AS>
  57. </platform>
  58. EOF
  59. ) > $PLATFORM
  60. STACKSIZE=$(ulimit -s)
  61. [ "$STACKSIZE" != unlimited ] || STACKSIZE=8192
  62. $SMPIRUN -platform $PLATFORM -hostfile $MPI_HOSTFILE "$@" --cfg=smpi/privatize_global_variables:yes --cfg=contexts/stack_size=$STACKSIZE
  63. rm -f $TEMP