【发布时间】:2011-08-04 16:30:20
【问题描述】:
我有一个并行的 fortran 代码,我只希望 rank=0 进程能够写入标准输出,但我不想乱扔代码:
if(rank==0) write(*,*) ...
所以我想知道执行以下操作是否是个好主意,或者是否有更好的方法?
program test
use mpi
implicit none
integer :: ierr
integer :: nproc
integer :: rank
integer :: stdout
call mpi_init(ierr)
call mpi_comm_rank(mpi_comm_world, rank, ierr)
call mpi_comm_size(mpi_comm_world, nproc, ierr)
select case(rank)
case(0)
stdout = 6
case default
stdout = 7
open(unit=stdout, file='/dev/null')
end select
write(stdout,*) "Hello from rank=", rank
call mpi_finalize(ierr)
end program test
这给出了:
$ mpirun -n 10 ./a.out
Hello from rank= 0
感谢您的建议!
【问题讨论】: