123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- #!/bin/bash
- NBLOCKS=16
- BLOCKSIZE=1024
- SIZE=$(($NBLOCKS*$BLOCKSIZE))
- echo "JOB ID ${PBS_JOBID}"
- nnodes=$(cat machinefile.${PBS_JOBID}|wc -l)
- echo "got $nnodes mpi nodes"
- ncalibrate=0
- for i in `seq 1 $ncalibrate`
- do
- echo "STARPU_CALIBRATE $i/$ncalibrate"
- STARPU_CALIBRATE=1 STARPU_SCHED="dmda" STARPU_PREFETCH=1 mpirun -machinefile machinefile.${PBS_JOBID} -np $nnodes ./mpi_lu/plu_example_float -p 2 -q 2 -nblocks 32 -size $((32*$BLOCKSIZE)) -numa
- done
- func()
- {
- ngpus=$1
- np=$2
- p=$3
- q=$4
- nblocks=$5
- echo "*******************************************"> log
- echo "*************** NGPUS $ngpus - np $np - nblocks $nblocks **************">> log
- echo "*******************************************">> log
- cat log
- cat log >> log.all
- STARPU_NCPUS=0 STARPU_NCUDA=$ngpus STARPU_SCHED="dmda" STARPU_PREFETCH=1 mpirun -machinefile machinefile.${PBS_JOBID} -np $np ./mpi_lu/plu_example_float -p $p -q $q -nblocks $nblocks -size $(($nblocks * $BLOCKSIZE)) -numa > log.out 2> log.err
- cat log.out > log
- cat log.err >> log
- cat log
- cat log >> log.all
- }
- rm -f log.all
- nloops=3
- per_node_max_memory=7000
- for np in 1 2 4
- do
- for nblocks in 16 32 48 64 80
- do
- for ngpus_per_node in 1 2 3 4
- do
- for loop in `seq 1 $nloops`
- do
-
- case $np in
- 1) p=1; q=1;;
- 2) p=2; q=1;;
- 4) p=2; q=2;;
- *) echo -n "does not support $np nodes yet";;
- esac
-
- matrix_size=$(($nblocks * $BLOCKSIZE))
- per_node_memory=$(($((4*$matrix_size*$matrix_size/(1024*1024))) / $np))
- echo "NP $np P $p Q $q SIZE $per_node_memory NBLOCKS $nblocks"
- if test $per_node_memory -ge $per_node_max_memory; then
- echo "Problem is too large !"
- else
- func $ngpus_per_node $np $p $q $nblocks
- echo "go !"
- fi
- done
- done
- done
- done
|