Hi all. I’m learning how to use MPI with Julia, specifically the MPI.jl package.
I’m trying to understand how to print on external temporary files, and I can’t make it work.
This is my current minimal non-working example script, called mpi_test.jl:
using MPI
MPI.Init()
let
comm = MPI.COMM_WORLD
prank = MPI.Comm_rank(comm)
io_file, _ = mktemp()
io_file = MPI.bcast(io_file, comm)
f = MPI.File.open(comm, io_file; write=true)
MPI.File.write(f, "$prank: hello!")
io_files = MPI.gather(io_file, comm)
prank == 0 && for p in 0:MPI.Comm_size(comm)-1
println(p, ": ", io_files[p+1])
end
end
which I run with mpiexecjl -np 4 julia --project mpi_test.jl.
The output is
0: /tmp/jl_FokE6l
1: /tmp/jl_FokE6l
2: /tmp/jl_FokE6l
3: /tmp/jl_FokE6l
but the files are not actually there:
cat: /tmp/jl_FokE6l: No such file or directory
If I write to an ordinary file, say io_file = "test.txt" instead of using mktemp(), the file is correctly created in the working directory and contains the given string.
With mktemp() instead, no file is created at all in the /tmp folder.
Can someone explain what I’m missing here?