File: run-script.py

package info (click to toggle)
mpi4py 3.0.3-8
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 12,428 kB
  • sloc: python: 18,672; javascript: 9,118; ansic: 7,092; makefile: 567; sh: 183; f90: 158; cpp: 103
file content (43 lines) | stat: -rw-r--r-- 1,336 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from mpi4py import MPI
import sys, os, optparse

assert __name__ == '__main__'
from os.path import split, splitext, dirname, realpath
dirname = dirname(__file__)
assert sys.path[0] == realpath(dirname)
if split(__file__)[1] == '__main__.py':
    if splitext(dirname)[0] == '.zip':
        assert sys.argv[0] == dirname
    else:
        assert realpath(sys.argv[0]) == realpath(dirname)
else:
    assert sys.argv[0] == __file__

parser = optparse.OptionParser()
parser.add_option("--rank", action='store',
                  type='int', dest="rank", default=0)
parser.add_option("--sys-exit", action='store',
                  type='int', dest="sys_exit", default=None)
parser.add_option("--sys-exit-msg", action="store",
                  type="string", dest="sys_exit", default=None)
parser.add_option("--exception", action="store",
                  type="string", dest="exception", default=None)
(options, args) = parser.parse_args()
assert not args

comm = MPI.COMM_WORLD
if comm.rank == options.rank:
    if options.sys_exit:
        sys.exit(options.sys_exit)
    if options.exception:
        raise RuntimeError(options.exception)

comm.Barrier()
if comm.rank > 0:
    comm.Recv([None, 'B'], comm.rank - 1)
print("Hello, World!")
if comm.rank < comm.size - 1:
    comm.Send([None, 'B'], comm.rank + 1)
comm.Barrier()

sys.exit()