/[escript]/trunk/bin/run-escript
ViewVC logotype

Contents of /trunk/bin/run-escript

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4662 - (show annotations)
Sun Feb 9 23:03:45 2014 UTC (5 years, 7 months ago) by caltinay
File size: 17279 byte(s)
Cater for changed interface in sympy 0.7.2.
Also silenced a harmless warning.

1 #!/usr/bin/env bash
2
3 # Escript/Finley wrapper for python
4 # Sets LD_LIBRARY_PATH and PYTHONPATH and then runs either python or the MPI launcher
5
6 #Extra paths can be configured about a page further down
7 #Search for EXTRA_PATH=""
8
9 #set to 1 if performing this is a standalone build and ../../pkg contains the relevant tools
10 STANDALONE=0
11
12 #set to 1 if this is part of a packaged build (.deb) and files will be installed in standard locations
13 #rather than everything in a single directory
14 #Do not use this together with $STANDALONE
15 STDLOCATION=0
16
17 #Now we find the location of this script
18 #Note that this location should be absolute but does not need to be unique
19 scriptdir=""
20 CURDIR=`pwd`
21
22 #Environment vars which control operations:
23 # ESCRIPT_NUM_NODES, ESCRIPT_NUM_PROCS, ESCRIPT_NUM_THREADS, ESCRIPT_HOSTFILE, ESCRIPT_CREATESTDFILES
24
25 HOSTFILE=/tmp/escript.$USER.$$
26 HOSTFILE2=/tmp/escript2.$USER.$$
27
28 #Begin finding ESCRIPT_ROOT
29 if [ $STDLOCATION -ne 0 ]
30 then
31 ESCRIPT_ROOT=/usr/lib/python-escript
32 else
33 # We don't know the escript root so we need to work it out from the invocation
34 # Need to match if the name contains /
35 if [[ $0 =~ / ]]
36 then
37 # We are not using the PATH to find the script
38 cd "`dirname $0`"
39 scriptdir=`pwd`
40 cd "$CURDIR"
41 else
42 # name does not contain / therefore we are using
43 tscriptdir=`which $0`
44 if [ $? -ne 0 ]
45 then
46 echo "Error! Unable to determine script directory. Exiting."
47 exit 1
48 fi
49 scriptdir=`dirname $tscriptdir`
50 fi
51
52 cd "$scriptdir/.."
53 ESCRIPT_ROOT=`pwd`
54 cd ..
55 ESCRIPT_PARENT=`pwd`
56 cd "$CURDIR"
57
58 fi
59 ##### End finding ESCRIPT_ROOT ########
60
61 PYTHON_MPI_NULL="$ESCRIPT_ROOT/lib/pythonMPI"
62 PYTHON_MPI_REDIRECT="$ESCRIPT_ROOT/lib/pythonMPIredirect"
63 PYTHON_CMD=python
64
65 # if possible please express paths relative to $ESCRIPT_ROOT unless
66 # they are in an unrelated location
67
68 EXTRA_DYLD_LIBRARY_PATH=""
69 EXTRA_PATH=$ESCRIPT_ROOT/bin
70 EXTRA_PYTHONPATH=$ESCRIPT_ROOT
71
72 if [ $STDLOCATION -eq 1 ]
73 then
74 EXTRA_LD_LIBRARY_PATH=/usr/lib/python-escript
75 else
76 EXTRA_LD_LIBRARY_PATH=$ESCRIPT_ROOT/lib
77 fi
78
79
80 if [ $STANDALONE -eq 1 ]
81 then
82 EXTRA_PATH=$ESCRIPT_PARENT/pkg/python/bin:$ESCRIPT_PARENT/pkg/scons/bin:$EXTRA_PATH
83 EXTRA_LD_LIBRARY_PATH=$ESCRIPT_PARENT/pkg/boost/lib:$ESCRIPT_PARENT/pkg/netcdf/lib/:$EXTRA_LD_LIBRARY_PATH
84 EXTRA_LD_LIBRARY_PATH=$EXTRA_LD_LIBRARY_PATH
85 EXTRA_LD_LIBRARY_PATH=$ESCRIPT_PARENT/pkg/python/lib:$EXTRA_LD_LIBRARY_PATH
86 EXTRA_PYTHONPATH=$ESCRIPT_PARENT/pkg/numpy/lib/python2.6/site-packages:$ESCRIPT_PARENT/pkg/matplotlib/lib/python2.6/site-packages:$EXTRA_PYTHONPATH
87 fi
88
89
90 BUILDINFO_FILE="$ESCRIPT_ROOT/lib/buildvars"
91 if [ "$STDLOCATION" = "1" ]
92 then
93 BUILDINFO_FILE=/usr/lib/python-escript/buildvars
94 fi
95 if [ ! -r "$BUILDINFO_FILE" ]; then
96 if [ "$1" = "-e" ]; then
97 echo "export LD_LIBRARY_PATH=$EXTRA_LD_LIBRARY_PATH:\$LD_LIBRARY_PATH"
98 echo "export PYTHONPATH=$EXTRA_PYTHONPATH:\$PYTHONPATH"
99 echo "export PATH=$EXTRA_PATH:\$PATH"
100 if [ "`uname`" = "Darwin" ]
101 then
102 echo "export DYLD_LIBRARY_PATH=$EXTRA_DYLD_LIBRARY_PATH:$EXTRA_LD_LIBRARY_PATH:\$DYLD_LIBRARY_PATH"
103 fi
104 exit 0
105 fi
106 echo "Error! Unable to read escript build information. Exiting."
107 exit 1
108 fi
109
110 get_buildvar () {
111 echo `grep "^$1=" "$BUILDINFO_FILE" |cut -d= -f2`
112 }
113
114 #
115 # Add VisIt paths if required
116 #
117 WITH_VISIT=`get_buildvar visit`
118 if [ "$WITH_VISIT" = "1" ]; then
119 VISIT_BIN=`which visit 2>/dev/null`
120 if [ $? -eq 0 ]; then
121 VISIT_PY_PATH=`$VISIT_BIN -env | grep LIBPATH | cut -d= -f2`
122 EXTRA_PYTHONPATH=$EXTRA_PYTHONPATH:$VISIT_PY_PATH
123 EXTRA_LD_LIBRARY_PATH=$EXTRA_LD_LIBRARY_PATH:$VISIT_PY_PATH
124 elif [ ! -z $ESCRIPT_VERBOSE ]; then
125 echo "VisIt module enabled but VisIt not in path!"
126 fi
127 fi
128
129 HELP_TEXT="
130 Usage: run-escript [options] script.py [arguments...]
131 -n nn number of nodes to use
132 -p np number of MPI processes to spawn per node
133 -t nt number of OpenMP threads to use
134 -f file name of MPI hostfile
135 -c print compile information for escript and exit
136 -V print escript version and exit
137 -i interactive mode
138 -b do not invoke python (run non-python programs)
139 -e print export statements for environment and exit
140 -o redirect output from MPI to files
141 -v print diagnostics
142 -x run in new xterm instance
143 -m tool run with valgrind {tool=m[emcheck]/c[allgrind]}
144 script.py Your python script
145 arguments... The optional command-line arguments to your script
146 "
147
148 if [ "$1" = "--help" ]; then
149 echo "$HELP_TEXT"
150 exit 0
151 fi
152 #==============================================================================
153
154 # Parse the command-line options
155 while getopts 'bn:p:t:f:echim:oVvx' option
156 do
157 case "$option" in
158 "b") DO_BINARY=y
159 ;;
160 "m") DO_VALGRIND=$OPTARG
161 ;;
162 "n") ESCRIPT_NUM_NODES=$OPTARG
163 ;;
164 "p") ESCRIPT_NUM_PROCS=$OPTARG
165 ;;
166 "t") ESCRIPT_NUM_THREADS=$OPTARG
167 ;;
168 "f") ESCRIPT_HOSTFILE=$OPTARG
169 ;;
170 "c") cat "$BUILDINFO_FILE"
171 exit 0
172 ;;
173 "V") echo "escript-development(build "`get_buildvar svn_revision`")"
174 exit 0
175 ;;
176 "h") echo "$HELP_TEXT"
177 exit 0
178 ;;
179 "i") DO_INTERACTIVE=y
180 ;;
181 "e") echo "export LD_LIBRARY_PATH=$EXTRA_LD_LIBRARY_PATH:\$LD_LIBRARY_PATH"
182 echo "export PYTHONPATH=$EXTRA_PYTHONPATH:\$PYTHONPATH"
183 echo "export PATH=$EXTRA_PATH:\$PATH"
184 if [ "`uname`" = "Darwin" ]
185 then
186 echo "export DYLD_LIBRARY_PATH=$EXTRA_DYLD_LIBRARY_PATH:$EXTRA_LD_LIBRARY_PATH:\$DYLD_LIBRARY_PATH"
187 fi
188 exit 0
189 ;;
190 "o") ESCRIPT_CREATESTDFILES=y
191 ;;
192 "v") ESCRIPT_VERBOSE=y
193 ;;
194 "x") DO_XTERM=y
195 ;;
196 ?) echo "$HELP_TEXT"
197 exit 1
198 ;;
199 esac
200 done
201 shift `expr $OPTIND - 1`
202 #==============================================
203 #
204 # Read MPI_FLAVOUR and WITH_OPENMP from the buildvars
205 #
206 MPI_FLAVOUR=`get_buildvar mpi`
207 WITH_OPENMP=`get_buildvar openmp`
208
209 if [ ! -z $ESCRIPT_VERBOSE ]; then
210 echo "MPI flavour is $MPI_FLAVOUR."
211 if [ "$WITH_OPENMP" = "1" ]; then echo "OpenMP enabled."; fi
212 fi
213
214 #
215 # extend path variables
216 #
217 export PATH=$EXTRA_PATH:$PATH
218 export LD_LIBRARY_PATH=$EXTRA_LD_LIBRARY_PATH:$LD_LIBRARY_PATH
219 export PYTHONPATH=$EXTRA_PYTHONPATH:$PYTHONPATH
220 EXPORT_ENV="PATH,LD_LIBRARY_PATH,PYTHONPATH"
221 if [ "`uname`" = "Darwin" ]
222 then
223 export DYLD_LIBRARY_PATH=$EXTRA_DYLD_LIBRARY_PATH:$EXTRA_LD_LIBRARY_PATH:$DYLD_LIBRARY_PATH
224 EXPORT_ENV="$EXPORT_ENV,DYLD_LIBRARY_PATH"
225 fi
226 if [ ! -z $ESCRIPT_VERBOSE ]
227 then
228 echo "PATH = $PATH "
229 echo "LD_LIBRARY_PATH = $LD_LIBRARY_PATH "
230 echo "PYTHONPATH = $PYTHONPATH "
231 if [ ! -z $DYLD_LIBRARY_PATH ]; then echo "DYLD_LIBRARY_PATH = $DYLD_LIBRARY_PATH "; fi
232 fi
233 #==============================================
234 #
235 # Ensure the variables have sensible values
236 #
237 if [ "$MPI_FLAVOUR" = "none" ]
238 then
239 if [ ! -z $ESCRIPT_NUM_NODES -a $ESCRIPT_NUM_NODES -gt 1 ]
240 then
241 echo "Warning: MPI disabled but number of nodes set. Option ignored."
242 fi
243 if [ ! -z $ESCRIPT_NUM_PROCS -a $ESCRIPT_NUM_PROCS -gt 1 ]
244 then
245 echo "Warning: MPI disabled but number of processors per node set. Option ignored."
246 fi
247 if [ ! -z "$ESCRIPT_HOSTFILE" ]
248 then
249 echo "Warning: MPI disabled but host file is given. Option ignored."
250 fi
251 ESCRIPT_NUM_NODES=1
252 ESCRIPT_NUM_PROCS=1
253 else
254 # use the PBS_NODEFILE if not otherwise specified
255 if [ ! -z "$PBS_NODEFILE" ] && [ -z "$ESCRIPT_HOSTFILE" ]
256 then
257 ESCRIPT_HOSTFILE=$PBS_NODEFILE
258 fi
259
260 if [ ! -z "$ESCRIPT_HOSTFILE" ]
261 then
262 if [ -f "$ESCRIPT_HOSTFILE" ]
263 then
264 cat "$ESCRIPT_HOSTFILE" | sort -u > $HOSTFILE
265 NUM_HOSTS=`cat "$HOSTFILE" | wc -l`
266 if [ ! -z $ESCRIPT_NUM_NODES ]
267 then
268 if [ $NUM_HOSTS -ne $ESCRIPT_NUM_NODES ]
269 then
270 echo "number of hosts selected in the host file $ESCRIPT_HOSTFILE needs to match the requested number of nodes $ESCRIPT_NUM_NODES."
271 exit 1
272 fi
273 else
274 ESCRIPT_NUM_NODES=$NUM_HOSTS
275 fi
276 else
277 echo "cannot find hostfile $ESCRIPT_HOSTFILE."
278 exit 1
279 fi
280 else
281 HOSTFILE=''
282 fi
283
284 if [ -z $ESCRIPT_NUM_NODES ]
285 then
286 ESCRIPT_NUM_NODES=1
287 fi
288
289 if [ -z $ESCRIPT_NUM_PROCS ]
290 then
291 ESCRIPT_NUM_PROCS=1
292 fi
293
294 if [ ! -z $ESCRIPT_VERBOSE ]
295 then
296 echo "ESCRIPT_NUM_NODES = $ESCRIPT_NUM_NODES "
297 echo "ESCRIPT_NUM_PROCS = $ESCRIPT_NUM_PROCS "
298 fi
299 fi
300
301 if [ "$WITH_OPENMP" = "1" ]
302 then
303 if [ -z $ESCRIPT_NUM_THREADS ]
304 then
305 ESCRIPT_NUM_THREADS=$OMP_NUM_THREADS
306 if [ -z $ESCRIPT_NUM_THREADS ]
307 then
308 ESCRIPT_NUM_THREADS=1
309 fi
310 fi
311 if [ ! -z $ESCRIPT_VERBOSE ]
312 then
313 echo "ESCRIPT_NUM_THREADS is $ESCRIPT_NUM_THREADS."
314 fi
315 else
316 if [ ! -z $ESCRIPT_NUM_THREADS ] && [ $ESCRIPT_NUM_THREADS != 1 ]
317 then
318 echo "Warning: OpenMP is disabled but number of threads requested is $ESCRIPT_NUM_THREADS!=1. Running without threads."
319 fi
320 ESCRIPT_NUM_THREADS=1
321 fi
322 #
323 # Now we compute total number of Processes
324 #
325 TOTPROC=$((ESCRIPT_NUM_NODES * ESCRIPT_NUM_PROCS))
326 if [ $? -ne 0 ] #Some compute error
327 then #This could happen if the args were not a number
328 echo "expression of total number of processors = $ESCRIPT_NUM_NODES * $ESCRIPT_NUM_PROCS is not numerical."
329 exit 1
330 fi
331
332 #
333 # Test to ensure people aren't trying to combine interactive and multi-process
334 #
335 if ([ ! -z $DO_INTERACTIVE ] || [ $# -eq 0 ]) && ([ $TOTPROC -gt 1 ])
336 then
337 echo "Interactive mode cannot be used with more than one process"
338 exit 1
339 fi
340
341 if [ $TOTPROC -gt 1 ]
342 then
343 if [ "$ESCRIPT_CREATESTDFILES" = "y" ]
344 then
345 PYTHON_MPI=$PYTHON_MPI_REDIRECT
346 else
347 PYTHON_MPI=$PYTHON_MPI_NULL
348 fi
349 else
350 PYTHON_MPI=$PYTHON_MPI_NULL
351 fi
352 #==============================================================================
353 # Must have at least one command-line arg: the python script
354 if [ $# -eq 0 ]
355 then
356 if [ ! -z $DO_BINARY ]
357 then
358 echo "No program to run was specified. Exiting."
359 exit 1
360 else
361 DO_INTERACTIVE=y
362 fi
363 fi
364
365 #==============================================================================
366
367 if [ ! -z $DO_XTERM ]
368 then
369 EXEC_CMD="xterm -e"
370 else
371 EXEC_CMD=""
372 fi
373
374 if [ ! -z "$DO_VALGRIND" ]
375 then
376 VALGRIND_BIN=`which valgrind 2>/dev/null`
377 if [ $? -eq 0 ]; then
378 LOGDIR=$ESCRIPT_ROOT/valgrind_logs
379 [ -d $LOGDIR ] || mkdir $LOGDIR
380 if [ ${DO_VALGRIND:0:1} = "c" ];
381 then
382 # run callgrind
383 LOGFILE=${LOGDIR}/callgrind.%p.xml
384 VALGRIND="valgrind --tool=callgrind --callgrind-out-file=$LOGFILE"
385 EXEC_CMD="$EXEC_CMD $VALGRIND"
386 else
387 # run memcheck by default
388 LAST_N=`ls -1 $LOGDIR|grep "^memcheck"|tail -1|cut -d. -f2`
389 NEW_N=`printf "%04d" $((10#$LAST_N + 1))`
390 LOGFILE=${LOGDIR}/memcheck.${NEW_N}.xml
391 VALGRIND="valgrind --tool=memcheck --xml=yes --show-reachable=yes --error-limit=no --gen-suppressions=all --suppressions=$ESCRIPT_ROOT/scripts/escript.supp --leak-check=full --xml-file=$LOGFILE"
392 EXEC_CMD="$EXEC_CMD $VALGRIND"
393 fi
394 else
395 echo "Execution with valgrind requested but valgrind not in path!"
396 exit 1
397 fi
398 fi
399
400 if [ ! -z $DO_BINARY ]
401 then
402 EXEC_CMD="$EXEC_CMD $@"
403 else
404 # Check to see if the python version we were compiled with matches the
405 # one of PYTHON_CMD.
406 compfull=`get_buildvar python_version`
407 compversion=`echo $compfull | cut -d. -f1,2`
408 compmajor=`echo $compfull | cut -d. -f1`
409 if [ "$PYTHON_CMD" = "python" ] # if people have customised the command they
410 then # might not want us changing it
411 if [ "$compmajor" = "3" ]
412 then
413 PYTHON_CMD=python3
414 fi
415 fi
416 intversion=`$PYTHON_CMD -c 'from __future__ import print_function;import sys;print("%d.%d"%(sys.version_info[0], sys.version_info[1]))'`
417 if [ "$compversion" != "$intversion" ]
418 then
419 echo "Python versions do not match. Escript was compiled for "$compversion"."
420 echo "Current version of Python appears to be "$intversion"."
421 exit 1
422 fi
423 if [ "$MPI_FLAVOUR" = "none" ]
424 then
425 if [ ! -z $DO_INTERACTIVE ]
426 then
427 EXEC_CMD="$EXEC_CMD $PYTHON_CMD -i $@"
428 else
429 EXEC_CMD="$EXEC_CMD $PYTHON_CMD $@"
430 fi
431 else
432 if [ ! -z $DO_INTERACTIVE ]
433 then
434 EXEC_CMD="$EXEC_CMD $PYTHON_MPI -i $@"
435 else
436 EXEC_CMD="$EXEC_CMD $PYTHON_MPI $@"
437 fi
438 fi
439 fi
440 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "Command to be executed is \"$EXEC_CMD\"."; fi
441 #==============================================================================
442 #
443 # now we start to spawn things:
444 #
445 if [ "$WITH_OPENMP" = "1" ]
446 then
447 export OMP_NUM_THREADS=$ESCRIPT_NUM_THREADS
448 EXPORT_ENV="$EXPORT_ENV,OMP_NUM_THREADS"
449 fi
450 EXIT_CODE=1
451 #=============== no MPI ===================================
452 if [ "$MPI_FLAVOUR" = "none" ]
453 then
454 $EXEC_CMD
455 EXIT_CODE=$?
456 #=============== OpenMPI ===================================
457 elif [ "$MPI_FLAVOUR" = "OPENMPI" ]
458 then
459 if [ ! -z "$HOSTFILE" ]
460 then
461 HOST_LIST=`awk 'BEGIN{S=""}{if (S == "") { S = $0 } else {S = S "," $0}}END{print S}' "$HOSTFILE"`
462 CMD="mpirun --gmca mpi_warn_on_fork 0 -x ${EXPORT_ENV//,/ -x } --bynode -np $TOTPROC --bind-to-socket --cpus-per-rank $ESCRIPT_NUM_THREADS --host $HOST_LIST $EXEC_CMD"
463 else
464 CMD="mpirun --gmca mpi_warn_on_fork 0 -x ${EXPORT_ENV//,/ -x } --cpus-per-rank $ESCRIPT_NUM_THREADS -np $TOTPROC $EXEC_CMD"
465 fi
466 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "MPI command is \"$CMD\"."; fi
467 $CMD
468 EXIT_CODE=$?
469
470 #=============== Intel MPI ===================================
471 elif [ "$MPI_FLAVOUR" = "INTELMPI" ]
472 then
473
474 if [ "$WITH_OPENMP" = "1" ]
475 then
476 export I_MPI_PIN_DOMAIN=omp
477 EXPORT_ENV="$EXPORT_ENV, I_MPI_PIN_DOMAIN"
478 fi
479
480 if [ ! -z "$HOSTFILE" ]
481 then
482 mpdboot -n $ESCRIPT_NUM_NODES -r ssh -f "$HOSTFILE"
483 if [ $? -ne 0 ]
484 then
485 echo "mpdboot with host file $ESCRIPT_HOSTFILE for $ESCRIPT_NUM_NODES nodes failed."
486 exit 1
487 else
488 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "mpdboot was started with host file $ESCRIPT_HOSTFILE for $ESCRIPT_NUM_NODES nodes."; fi
489 fi
490 else
491 mpdboot -n 1 -r ssh
492 if [ $? -ne 0 ]
493 then
494 echo "mpdboot failed."
495 exit 1
496 else
497 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "mpdboot was started."; fi
498 fi
499 fi
500 CMD="mpiexec -perhost $ESCRIPT_NUM_PROCS -envall -n $TOTPROC $EXEC_CMD"
501 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "MPI command is \"$CMD\"."; fi
502 $CMD
503 EXIT_CODE=$?
504 mpdallexit
505 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "mpdallexit executed."; fi
506 #=============== SGI's MPIMPT ===================================
507 elif [ "$MPI_FLAVOUR" = "MPT" ]
508 then
509 export MPI_NUM_MEMORY_REGIONS=0
510 EXPORT_ENV="$EXPORT_ENV,MPI_NUM_MEMORY_REGIONS"
511 if [ ! -z "$HOSTFILE" ]
512 then
513 HOST_LIST=`awk 'BEGIN{S=""}{if (S == "") { S = $0 } else {S = S "," $0}}END{print S}' "$HOSTFILE"`
514 CMD="mpirun $HOST_LIST -np $ESCRIPT_NUM_PROCS $EXEC_CMD"
515 else
516 CMD="mpirun -np $TOTPROC $EXEC_CMD"
517 fi
518 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "MPI command is \"$CMD\"."; fi
519 $CMD
520 EXIT_CODE=$?
521 #=============== MPICH ===================================
522 elif [ "$MPI_FLAVOUR" = "MPICH" ]
523 then
524 if [ ! -z "$HOSTFILE" ]
525 then
526 touch "$HOSTFILE2"
527 for (( i=1;i<=$ESCRIPT_NUM_PROCS;i+=1 )) ; do cat "$HOSTFILE" >> "$HOSTFILE2" ; done
528 CMD="mpirun -machinefile \"$HOSTFILE2\" -np $TOTPROC $EXEC_CMD"
529 else
530 CMD="mpirun -np $TOTPROC $EXEC_CMD"
531 fi
532 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "MPI command is \"$CMD\"."; fi
533 $CMD
534 EXIT_CODE=$?
535 #=============== MPICH2 ===================================
536 elif [ "$MPI_FLAVOUR" = "MPICH2" ]
537 then
538 if [ ! -z "$HOSTFILE" ]
539 then
540 mpdboot -n $ESCRIPT_NUM_NODES -r ssh -f "$HOSTFILE"
541 if [ $? -ne 0 ]
542 then
543 echo "mpdboot with host file $ESCRIPT_HOSTFILE for $ESCRIPT_NUM_NODES nodes failed."
544 exit 1
545 else
546 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "mpdboot was started with host file $ESCRIPT_HOSTFILE for $ESCRIPT_NUM_NODES nodes."; fi
547 fi
548 else
549 mpdboot -n 1 -r ssh
550 if [ $? -ne 0 ]
551 then
552 echo "mpdboot failed."
553 exit 1
554 else
555 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "mpdboot was started."; fi
556 fi
557 fi
558 CMD="mpiexec -genvlist $EXPORT_ENV -np $TOTPROC $EXEC_CMD"
559 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "MPI command is \"$CMD\"."; fi
560 $CMD
561 EXIT_CODE=$?
562 mpdallexit
563 if [ ! -z $ESCRIPT_VERBOSE ]; then echo "mpdallexit executed."; fi
564 else
565 echo "unknown MPI flavour '$MPI_FLAVOUR'."
566 fi
567 exit $EXIT_CODE
568

Properties

Name Value
svn:executable *
svn:mergeinfo /branches/3.4/bin/run-escript:4453-4490 /branches/lapack2681/bin/escript:2682-2741 /branches/pasowrap/bin/run-escript:3661-3674 /branches/py3_attempt2/bin/run-escript:3871-3891 /branches/release3.4/bin/run-escript:4452 /branches/restext/bin/escript:2610-2624 /branches/ripleygmg_from_3668/bin/run-escript:3669-3791 /branches/stage3.0/bin/escript:2569-2590 /branches/symbolic_from_3470/bin/run-escript:3471-3974 /branches/symbolic_from_3470/ripley/test/python/bin/run-escript:3517-3974 /release/3.0/bin/escript:2591-2601 /trunk/ripley/test/python/bin/run-escript:3480-3515

  ViewVC Help
Powered by ViewVC 1.1.26