File: run-script.py

package info (click to toggle)
mpi4py 4.1.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 4,544 kB
  • sloc: python: 34,453; ansic: 16,475; makefile: 614; sh: 325; cpp: 193; f90: 178
file content (73 lines) | stat: -rw-r--r-- 1,432 bytes parent folder | download | duplicates (3)
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import optparse
import pathlib
import sys

from mpi4py import MPI

assert __name__ == "__main__"
assert sys.path[0] == str(pathlib.Path(__file__).parent)
if pathlib.Path(__file__).name == "__main__.py":
    assert sys.argv[0] == sys.path[0]
else:
    assert sys.argv[0] == __file__

parser = optparse.OptionParser()
parser.add_option(
    "--rank",
    action="store",
    type="int",
    dest="rank",
    default=0,
)
parser.add_option(
    "--interrupt",
    action="store_true",
    dest="interrupt",
    default=False,
)
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

comm.Barrier()
comm.Barrier()
if comm.rank == options.rank:
    if options.interrupt:
        raise KeyboardInterrupt
    if options.sys_exit:
        sys.exit(options.sys_exit)
    if options.exception:
        raise RuntimeError(options.exception)

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

sys.exit()