1+ #!/usr/bin/env python
2+ from mpi4py import MPI
3+ import numpy as np
4+
5+ comm = MPI .COMM_WORLD
6+ rank = comm .Get_rank ()
7+ mpisize = comm .Get_size ()
8+
9+ def output (var ,nomen ,rank ,method = None ,operation = None ):
10+ if method == None and operation == None :
11+ print "Rank %d sees %s as %s" % (rank ,nomen ,var )
12+ else :
13+ print "Rank %d sees %s as %s after %s using %s" % (rank ,nomen ,var ,method ,operation )
14+
15+
16+ if rank == 0 :
17+ local_dict = {'a' :1 , 'b' :2 , 'c' :3 , 'd' :4 , 'e' :5 , 'f' :6 , 'g' :'gee whiz' , 'h' :('hi' , 'there' ) }
18+ local_list_max = [rank + i for i in range (mpisize / 2 )]
19+ local_list_sum = [rank + i for i in range (mpisize / 2 )]
20+ local_string = """This is a string."""
21+ local_tuple = (rank ,)* mpisize
22+ local_np_array = np .array (range (10 ))
23+ else :
24+ local_dict = None
25+ local_list_max = [rank * i for i in range (mpisize / 2 )]
26+ local_list_sum = [rank * i for i in range (mpisize / 2 )]
27+ local_string = """This should be fun!"""
28+ local_tuple = (rank ,)* mpisize
29+ local_np_array = np .array (range (10 ))
30+
31+ comm .Barrier ()
32+
33+ if rank == 0 :
34+ print "#" * 78
35+ output (local_dict ,'local_dict' ,rank )
36+ output (local_list_max ,'local_list_max' ,rank )
37+ output (local_list_sum ,'local_list_sum' ,rank )
38+ output (local_string ,'local_string' ,rank )
39+ output (local_tuple ,'local_tuple' ,rank )
40+ output (local_np_array ,'local_np_array' ,rank )
41+
42+ comm .Barrier ()
43+
44+ if rank == 6 :
45+ print "#" * 78
46+ output (local_dict ,'local_dict' ,rank )
47+ output (local_list_max ,'local_list_max' ,rank )
48+ output (local_list_sum ,'local_list_sum' ,rank )
49+ output (local_string ,'local_string' ,rank )
50+ output (local_tuple ,'local_tuple' ,rank )
51+ output (local_np_array ,'local_np_array' ,rank )
52+
53+ comm .Barrier ()
54+
55+ if rank == 0 :
56+ print "#" * 78
57+ print ""
58+ print "Running collective operations"
59+ print ""
60+
61+ comm .Barrier ()
62+
63+ local_dict = comm .scatter (local_dict )
64+ local_list_max = comm .allreduce (local_list_max ,op = MPI .MAX )
65+ local_list_sum = comm .allreduce (local_list_sum ,op = MPI .SUM )
66+ local_string = comm .bcast (local_string )
67+ local_tuple = comm .alltoall (local_tuple )
68+ local_np_array = comm .allreduce (local_np_array ,op = MPI .SUM )
69+
70+ comm .Barrier ()
71+ if rank == 0 :
72+ print "#" * 78
73+ output (local_dict ,'local_dict' ,rank )
74+ output (local_list_max ,'local_list_max' ,rank ,'allreduce' ,'max' )
75+ output (local_list_sum ,'local_list_sum' ,rank ,'allreduce' ,'sum' )
76+ output (local_string ,'local_string' ,rank ,'bcast' )
77+ output (local_tuple ,'local_tuple' ,rank ,'alltoall' )
78+ output (local_np_array ,'local_np_array' ,rank ,'allreduce' )
79+
80+ comm .Barrier ()
81+ if rank == 6 :
82+ print "#" * 78
83+ output (local_dict ,'local_dict' ,rank )
84+ output (local_list_max ,'local_list_max' ,rank ,'allreduce' ,'max' )
85+ output (local_list_sum ,'local_list_sum' ,rank ,'allreduce' ,'sum' )
86+ output (local_string ,'local_string' ,rank ,'bcast' )
87+ output (local_tuple ,'local_tuple' ,rank ,'alltoall' )
88+ output (local_np_array ,'local_np_array' ,rank ,'allreduce' )
0 commit comments