-
Notifications
You must be signed in to change notification settings - Fork 55
/
gather.py
48 lines (36 loc) · 1.16 KB
/
gather.py
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
# coding: utf-8
from pyccel.stdlib.parallel.mpi import mpi_init
from pyccel.stdlib.parallel.mpi import mpi_finalize
from pyccel.stdlib.parallel.mpi import mpi_comm_size
from pyccel.stdlib.parallel.mpi import mpi_comm_rank
from pyccel.stdlib.parallel.mpi import mpi_comm_world
from pyccel.stdlib.parallel.mpi import mpi_status_size
from pyccel.stdlib.parallel.mpi import mpi_gather
from pyccel.stdlib.parallel.mpi import MPI_INTEGER
# we need to declare these variables somehow,
# since we are calling mpi subroutines
ierr = -1
size = -1
rank = -1
mpi_init(ierr)
comm = mpi_comm_world
mpi_comm_size(comm, size, ierr)
mpi_comm_rank(comm, rank, ierr)
master = 1
nb_values = 8
block_length = nb_values / size
# ...
values = zeros(block_length, int)
for i in range(0, block_length):
values[i] = 1000 + rank*nb_values + i
print('I, process ', rank, 'sent my values array : ', values)
# ...
# ...
data = zeros(nb_values, int)
mpi_gather (values, block_length, MPI_INTEGER,
data, block_length, MPI_INTEGER,
master, comm, ierr)
# ...
if rank == master:
print('I, process ', rank, ', received ', data, ' of process ', master)
mpi_finalize(ierr)