#!/bin/sh # Simulate astrocyte with the specified number of processes (single run). # $1 - The number of processes. # $2 - The process distribution scheme: # 1 - only master works, # 2 - only slaves work, # 3 - master and slaves work together. # # Other input parameters are specified in the file "init.hoc". if [ ! $# == 2 ]; then echo "Two input arguments are expected: the number of processes and the process distribution scheme." exit fi cd .. clear # Remove old test results rm -f complete rm -f perf.dat rm -r -f results mkdir results modeldir=model export IV=/usr/local/neuron/iv export N=/usr/local/neuron/nrn export CPU=x86_64 export PATH="$IV/$CPU/bin:$N/$CPU/bin:$PATH" # Start timer for setup time start=$SECONDS CPU="x86_64" rm -r -f $CPU rm -f mcomplex.dat echo echo Translating to C and compiling MOD files ... echo nrnivmodl $modeldir echo echo Generating "mcomplex.dat" file ... echo $CPU/special -nogui -c "split=2" init.hoc setuptime=$(( SECONDS - start )) echo "setuptime: $setuptime" >> results/runtimes.dat echo "np runtime" >> results/runtimes.dat # Start timer for run time start=$SECONDS echo echo Splitting geometry and launching simulation ... echo if [ $2 == 1 ] ; then # Only tuxmaster works: mpiexec -np $1 `which nrniv` -mpi -c "numProcs=$1" init.hoc elif [ $2 == 2 ] ; then # Only slaves tuxm1 - tuxm12 work: mpiexec -np $1 -hostfile hostfile_IdleMaster `which nrniv` -mpi -c "numProcs=$1" init.hoc else # Master and slaves work together mpiexec -np $1 -hostfile hostfile_BusyMaster `which nrniv` -mpi -c "numProcs=$1" init.hoc fi if [ ! $? == 0 ] ; then exit fi runtime=$(( SECONDS - start )) mv trajec_*.dat results echo "$1 $runtime" >> results/runtimes.dat rm -f user_geometry/* # Create the empty file indicating that simulation completed successfully touch results/complete