Hello, I am wondering in openmpi how is the passing of MPI communcator
from Fortran to C is handled? Assuming I have a Fortran 90 subroutine
calling a C function passing MPI_COMM_WORLD in, in the C function, do I
need to first do MPI_Comm_f2c
to convert to MPI handle, then use that handle afterward? Or is there
any better way to do this? Here is some test code:
Fortran 90:
program test1
include 'mpif.h'
integer myrank,ierr
call MPI_Init(ierr)
call parallel_info(myrank,MPI_COMM_WORLD)
write(*,*) 'hello, I am process #',myrank
call MPI_Finalize(ierr)
end program test1
C:
#include <mpi.h>
void parallel_info_(int * rank, int* comm)
{
MPI_Comm ccomm;
ccomm=MPI_Comm_f2c(*comm);
MPI_Comm_rank(ccomm, rank);
}
void parallel_info(int * rank, int * comm)
{
MPI_Comm ccomm;
ccomm=MPI_Comm_f2c(*comm);
MPI_Comm_rank(ccomm, rank);
}
Thanks,
Peng