Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F78730847
image_parts_in_order.c
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Aug 22, 16:17
Size
1021 B
Mime Type
text/x-c
Expires
Sat, Aug 24, 16:17 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
20089789
Attached To
R7871 phys-743-exercises
image_parts_in_order.c
View Options
#include <stdio.h>
#include <mpi.h>
#define image_size 1024
int
main
(
int
argc
,
char
*
argv
[])
{
int
myrank
,
mysize
;
int
*
imgPart
;
int
*
buf
;
int
i
;
int
partSize
;
MPI_Request
request
;
MPI_Status
status
;
MPI_Init
(
&
argc
,
&
argv
);
MPI_Comm_rank
(
MPI_COMM_WORLD
,
&
myrank
);
MPI_Comm_size
(
MPI_COMM_WORLD
,
&
mysize
);
imgPart
=
malloc
(
image_size
/
mysize
*
sizeof
(
int
));
/* Generate image parts */
for
(
i
=
0
;
i
<
(
image_size
/
mysize
)
;
i
++
){
imgPart
[
i
]
=
myrank
*
1
;
}
partSize
=
image_size
/
mysize
;
/* Each process sends */
MPI_Isend
(
imgPart
,
partSize
,
MPI_INT
,
0
,
0
,
MPI_COMM_WORLD
,
&
request
);
// Process 0 receives all parts into buf
if
(
myrank
==
0
){
buf
=
malloc
(
image_size
*
sizeof
(
int
));
for
(
i
=
0
;
i
<
mysize
;
i
++
){
MPI_Recv
(
buf
+
i
*
(
image_size
/
mysize
),
(
image_size
/
mysize
),
MPI_INT
,
i
,
0
,
MPI_COMM_WORLD
,
MPI_STATUS_IGNORE
);
}
}
MPI_Wait
(
&
request
,
MPI_STATUS_IGNORE
);
free
(
imgPart
);
if
(
myrank
==
0
)
free
(
buf
);
MPI_Finalize
();
}
Event Timeline
Log In to Comment