@@ -15,52 +15,33 @@ rank = MPI.Comm_rank(comm)
15
15
sz = MPI. Comm_size (comm)
16
16
filename = MPI. bcast (tempname (), 0 , comm)
17
17
18
- # Write
19
18
MPI. Barrier (comm)
20
19
21
- f = MPI . File . open (comm, filename, write= true )
22
- MPI. File. set_view! (f, 0 , MPI . Datatype (Int64), MPI . Datatype (Int64) )
23
- MPI. File. write_at (f, rank * 2 , ArrayType ([ Int64 (rank + 1 ) for i = 1 : 2 ] ))
24
- close (f )
20
+ # Collective write
21
+ fh = MPI. File. open (comm, filename, read = true , write = true , create = true )
22
+ MPI. File. set_view! (fh, 0 , MPI . Datatype ( Int64), MPI . Datatype (Int64 ))
23
+ MPI . File . write_at_all (fh, rank * 2 , ArrayType ([ Int64 (rank + 1 ) for i = 1 : 2 ]) )
25
24
26
- MPI. Barrier (comm)
27
-
28
- if rank == 0
29
- @test read! (filename, zeros (Int64, (2 ,sz))) == [j for i = 1 : 2 , j= 1 : sz]
30
- end
31
-
32
- MPI. Barrier (comm)
33
-
34
- f = MPI. File. open (comm, filename, write= true )
35
- MPI. File. set_view! (f, 0 , MPI. Datatype (Int64), MPI. Datatype (Int64))
36
- MPI. File. write_at_all (f, rank* 2 , ArrayType ([Int64 (rank+ 1 ) for i = 1 : 2 ]))
37
- close (f)
38
-
39
- MPI. Barrier (comm)
25
+ MPI. File. sync (fh)
40
26
27
+ # Noncollective read
41
28
if rank == 0
42
- @test read! (filename, zeros (Int64, (2 ,sz))) == [j for i = 1 : 2 , j= 1 : sz]
29
+ data = zeros (Int64, (2 ,sz))
30
+ MPI. File. read_at! (fh, 0 , data)
31
+ @test data == [j for i = 1 : 2 , j= 1 : sz]
43
32
end
44
33
34
+ MPI. File. sync (fh)
45
35
MPI. Barrier (comm)
46
36
47
- # Read
48
- if rank == 0
49
- write (filename, [Float64 (j) for i = 1 : 3 , j = 1 : sz])
37
+ if rank == sz- 1
38
+ MPI. File. write_at (fh, 0 , ArrayType ([Int64 (- 1 ) for i = 1 : 2 ]))
50
39
end
51
40
52
- MPI. Barrier (comm)
53
-
54
-
55
- f = MPI. File. open (comm, filename, read= true )
56
- MPI. File. set_view! (f, 0 , MPI. Datatype (Float64), MPI. Datatype (Float64))
57
-
58
- data = ArrayType (zeros (Float64, 3 ))
59
- MPI. File. read_at! (f, rank* 3 , data)
60
- @test data == Float64[rank+ 1 for i = 1 : 3 ]
61
-
62
- MPI. Barrier (comm)
41
+ MPI. File. sync (fh)
63
42
64
- data = ArrayType (zeros (Float64, 3 ))
65
- MPI. File. read_at_all! (f, rank* 3 , data)
66
- @test data == Float64[rank+ 1 for i = 1 : 3 ]
43
+ # Collective read
44
+ data = zeros (Int64, 1 )
45
+ MPI. File. read_at_all! (fh, rank* 2 , data)
46
+ @test data == [rank == 0 ? - 1 : rank+ 1 ]
47
+ close (fh)
0 commit comments