送信バッファとして呼び出そうとするとmpi_reduce
、クラッシュします。mpi_in_place
Google のトロールにより、これが OMPI 1.3.3 の Mac OS で問題であったことが明らかになりましたが、私は OMPI 1.6.3 (gfortran 4.4.6 を使用) で CentOS を使用しています。
次のプログラムがクラッシュします。
PROGRAM reduce
USE mpi
IMPLICIT NONE
REAL, DIMENSION(2, 3) :: buffer, gbuffer
INTEGER :: ierr, me_world
INTEGER :: buf_shape(2), counts
CALL mpi_init(ierr)
CALL mpi_comm_rank(mpi_comm_world, me_world, ierr)
buffer = 1.
IF (me_world .EQ. 0) PRINT*, "buffer: ", buffer
buf_shape = SHAPE(buffer)
counts = buf_shape(1)*buf_shape(2)
CALL mpi_reduce(MPI_IN_PLACE, buffer, counts, mpi_real, mpi_sum, 0, mpi_comm_world, ierr)
IF (me_world .EQ. 0) PRINT*, "buffer: ", buffer
CALL mpi_finalize(ierr)
END PROGRAM reduce
MPI エラーは次のとおりです。
MPI_ERR_ARG: invalid argument of some other kind
これはあまり役に立ちません。
mpi_reduce
どのように呼び出されるべきかについて何かが欠けていますか? これは他のコンパイラ/MPI 実装で動作しますか?