@@ -25,14 +25,27 @@ sreq = MPI.Isend(send_mesg, dst, rank+32, comm)
25
25
stats = MPI. Waitall! ([sreq, rreq])
26
26
@test isequal (typeof (rreq), typeof (MPI. REQUEST_NULL))
27
27
@test isequal (typeof (sreq), typeof (MPI. REQUEST_NULL))
28
-
29
28
@test MPI. Get_source (stats[2 ]) == src
30
29
@test MPI. Get_tag (stats[2 ]) == src+ 32
31
30
@test isapprox (norm (recv_mesg- recv_mesg_expected), 0.0 )
32
31
33
- (done,stats) = MPI. Testall! ([sreq, rreq])
32
+ (done, stats) = MPI. Testall! ([sreq, rreq])
34
33
@test done
34
+ rreq = nothing
35
+ sreq = nothing
36
+ gc ()
35
37
38
+ if rank == 0
39
+ MPI. send (send_mesg, dst, rank+ 32 , comm)
40
+ recv_mesg = recv_mesg_expected
41
+ elseif rank == size- 1
42
+ (recv_mesg, _) = MPI. recv (src, src+ 32 , comm)
43
+ else
44
+ (recv_mesg, _) = MPI. recv (src, src+ 32 , comm)
45
+ MPI. send (send_mesg, dst, rank+ 32 , comm)
46
+ end
47
+
48
+ @test isapprox (norm (recv_mesg- recv_mesg_expected), 0.0 )
36
49
37
50
rreq = nothing
38
51
sreq = nothing
48
61
MPI. send (send_mesg, dst, rank+ 32 , comm)
49
62
end
50
63
51
- @test isapprox (norm (recv_mesg- recv_mesg_expected), 0.0 )
64
+ send_mesg = Float64 (rank)
65
+ recv_mesg = Array (Float64, N)
66
+ recv_mesg_expected = Array (Float64, N)
67
+
68
+ fill! (recv_mesg_expected, Float64 (src))
69
+
70
+ rreq = nothing
71
+ sreq = nothing
72
+ gc ()
73
+
74
+ send_mesg = Float64 (rank)
75
+ recv_mesg = Array (Float64, N)
76
+ recv_mesg_expected = Array (Float64, N)
77
+
78
+ fill! (recv_mesg_expected, Float64 (src))
79
+
80
+ if rank == 0
81
+ MPI. Send (send_mesg, dst, rank+ 32 , comm)
82
+ recv_mesg = recv_mesg_expected
83
+ elseif rank == size- 1
84
+ (recv_mesg, _) = MPI. Recv (Float64,src, src+ 32 , comm)
85
+ else
86
+ (recv_mesg, _) = MPI. Recv (Float64,src, src+ 32 , comm)
87
+ MPI. Send (send_mesg, dst, rank+ 32 , comm)
88
+ end
89
+
90
+ rreq = nothing
91
+ sreq = nothing
92
+ gc ()
93
+
94
+ recv_mesg = Array (Float64, N)
95
+ rreq = MPI. Irecv! (recv_mesg, src, src+ 32 , comm)
96
+ sreq = MPI. Isend (send_mesg, dst, rank+ 32 , comm)
97
+
98
+ (inds, stats) = MPI. Waitsome! ([sreq, rreq])
99
+ req_arr = [sreq,rreq]
100
+ for i in inds
101
+ (done, status) = MPI. Test! ( req_arr[i] )
102
+ @test done
103
+ end
104
+
105
+ rreq = nothing
106
+ sreq = nothing
107
+ gc ()
52
108
53
109
MPI. Finalize ()
0 commit comments