File: mpi_simple.py

package info (click to toggle)
pyina 0.3.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 548 kB
  • sloc: python: 2,666; makefile: 34
file content (48 lines) | stat: -rwxr-xr-x 1,182 bytes parent folder | download
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
#!/usr/bin/env python
#
# Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
# Copyright (c) 1997-2016 California Institute of Technology.
# Copyright (c) 2016-2025 The Uncertainty Quantification Foundation.
# License: 3-clause BSD.  The full license text is available at:
#  - https://github.com/uqfoundation/pyina/blob/master/LICENSE
"""
# Testing pyina.mpi.world.recv
# To run:

mpiexec -np 4 `which python` mpi_simple.py

of

python mpi_simple.py
""" 

import logging
import pyina

class SimpleApp(object):

    def __call__(self):
        from pyina import mpi
        stat = mpi.MPI.Status

        world = mpi.world
        logging.info("I am rank %d of %d" % (world.rank, world.size))
        if world.rank == 0:
            for peer in range(1, world.size):
                status = stat()
                message = world.recv(tag=17)
                print("node %d of %d: received {%s}" % (world.rank, world.size, message))
        else:
            s = "My message is this: I am node %d" % world.rank
            logging.debug("%s" % s)
            world.send(s, 0, 17)

        return


if __name__ == "__main__":

    app = SimpleApp()
    app()

# End of file