Dear Daniel, well, this definitly would be an issue for the us...@open-mpi.org list. Your report is definitely important and valid, all functions allowing MPI_BOTTOM in the fortran interface should be using OMPI_ADDR to convert for the C-interface....
Aaah, I see George has a similar commit -- possibly, we need to sync. Please see the code attached, compared r15030, it adapts the macros to use OMPI_F2C_... Thanks, Rainer On Tuesday 12 June 2007 23:15, Daniel Spångberg wrote: > One of the users of our computer cluster have reported a problem with his > simulation code. We have been able to trace this down to a problem with > the MPI struct when absolute addressing is used for the members in the > struct, necessating the use of MPI_BOTTOM. The problem occurs with > MPI_BCAST, but works fine with MPI_SEND and MPI_RECV. I digged down into > the openmpi code and found out that the problem occurs only in fortran, > which seems to be because when MPI_BCAST is called, the OMPI_ADDR macro in > ompi/mpi/f77/constants.h is never evaluated which thus never turns the > fortran MPI_BOTTOM into a C MPI_BOTTOM. When MPI_SEND and MPI_RECV are > used the OMPI_ADDR macro is evaluated and no problem occurs. > > An example of a problematic code (tested on two processes): > > program testme > implicit none > include 'mpif.h' > integer ierr,rank,size > integer btype(1),blen(1),param_batch > real param > integer(kind=mpi_address_kind) :: disp(1) > integer status(MPI_STATUS_SIZE) > > param=0. > > call MPI_INIT(ierr) > call MPI_GET_ADDRESS(param,disp(1),ierr) > if (ierr.ne.MPI_SUCCESS) write(*,*) 'MPI_GET_ADDRESS FAILED' > btype(1)=MPI_REAL > blen(1)=1 > call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierr) > call MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierr) > call MPI_TYPE_CREATE_STRUCT(1,blen,disp,btype,param_batch,ierr) > if (ierr.ne.MPI_SUCCESS) then > write(*,*) 'MPI_TYPE_CREATE_STRUCT FAILED' > endif > call MPI_TYPE_COMMIT(param_batch,ierr) > if (ierr.ne.MPI_SUCCESS) write(*,*) 'MPI_TYPE_COMMIT FAILED' > if (rank.eq.0) param=100. > c if (rank.eq.0) then > c call MPI_SEND(MPI_BOTTOM,1, > c x param_batch,1,0,MPI_COMM_WORLD,ierr) > c else > c call MPI_RECV(MPI_BOTTOM,1, > c x param_batch,0,0,MPI_COMM_WORLD,status,ierr) > c endif > call MPI_BCAST(MPI_BOTTOM,1,param_batch,0,MPI_COMM_WORLD,ierr) > if (ierr.ne.MPI_SUCCESS) write(*,*) 'MPI_BCAST FAILED' > write(*,*) 'Rank:',rank,'Size:',size,'Param=',param > call MPI_Finalize(ierr) > > end program testme > > mpirun -np 2 testme_submitted_to_devel > [auchentoshan:21021] *** Process received signal *** > [auchentoshan:21021] Signal: Segmentation fault (11) > [auchentoshan:21021] Signal code: Address not mapped (1) > [auchentoshan:21021] Failing at address: 0x7fc04ffd7c > [auchentoshan:21021] [ 0] /lib64/tls/libpthread.so.0 [0x3d9660c430] > [auchentoshan:21021] [ 1] /lib64/tls/libc.so.6(memcpy+0x60) [0x3d95571ec0] > [auchentoshan:21021] [ 2] > /opt/openmpi-1.2.1-gcc4/lib/libmpi.so.0(ompi_convertor_pack+0x164) > [0x2a957cf5b4] > [auchentoshan:21021] [ 3] > /opt/openmpi-1.2.1-gcc4/lib/openmpi/mca_pml_ob1.so(mca_pml_ob1_send_request >_start_copy+0x24c) [0x2a982851dc] > [auchentoshan:21021] [ 4] > /opt/openmpi-1.2.1-gcc4/lib/openmpi/mca_pml_ob1.so(mca_pml_ob1_isend+0x217) > [0x2a9827fe77] > [auchentoshan:21021] [ 5] > /opt/openmpi-1.2.1-gcc4/lib/openmpi/mca_coll_tuned.so(ompi_coll_tuned_bcast >_intra_generic+0x354) [0x2a98ac08b4] > [auchentoshan:21021] [ 6] > /opt/openmpi-1.2.1-gcc4/lib/openmpi/mca_coll_tuned.so(ompi_coll_tuned_bcast >_intra_binomial+0xc8) [0x2a98ac0bd8] > [auchentoshan:21021] [ 7] > /opt/openmpi-1.2.1-gcc4/lib/libmpi.so.0(PMPI_Bcast+0x15c) [0x2a957d62ac] > [auchentoshan:21021] [ 8] > /opt/openmpi-1.2.1-gcc4/lib/libmpi_f77.so.0(pmpi_bcast_+0x5a) > [0x2a9567e99a] > [auchentoshan:21021] [ 9] testme_submitted_to_devel(MAIN__+0x1f8) > [0x401080] > [auchentoshan:21021] [10] testme_submitted_to_devel(main+0xe) [0x4011be] > [auchentoshan:21021] [11] /lib64/tls/libc.so.6(__libc_start_main+0xdb) > [0x3d9551c3fb] > [auchentoshan:21021] [12] testme_submitted_to_devel [0x400dfa] > [auchentoshan:21021] *** End of error message *** > mpirun noticed that job rank 0 with PID 21021 on node auchentoshan exited > on signal 11 (Segmentation fault). > 1 additional process aborted (not shown) > > The openmpi version we have tested this on includes the latest, 1.2.2 > version as well although the log message above is for version 1.2.1. > Distribution: Scientific Linux 4.4 (RHEL4 clone). The problem occurs on > both AMD64 and i386. The problem occurs both when using gcc/gfortran and > the portland group compilers version 7.0-4. Interconnect GBE. > > daniels@auchentoshan:~ > gcc4 --version > gcc4 (GCC) 4.1.0 20060515 (Red Hat 4.1.0-18) > Copyright (C) 2006 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > daniels@auchentoshan:~ > gfortran --version > GNU Fortran 95 (GCC) 4.1.0 20060515 (Red Hat 4.1.0-18) > Copyright (C) 2006 Free Software Foundation, Inc. > > GNU Fortran comes with NO WARRANTY, to the extent permitted by law. > You may redistribute copies of GNU Fortran > under the terms of the GNU General Public License. > For more information about these matters, see the file named COPYING > > Working C code which does the same thing: > #include <stdio.h> > #include <stdlib.h> > #include <mpi.h> > > int main(int argc, char **argv) > { > int rank,size; > float param=0.; > MPI_Datatype btype[1],param_batch; > MPI_Aint disp[1]; > int blen[1]; > > MPI_Init(&argc,&argv); > if (MPI_Get_address(¶m,&disp[0])!=MPI_SUCCESS) > fprintf(stderr,"MPI_Get_address failed.\n"); > btype[0]=MPI_FLOAT; > blen[0]=1; > MPI_Comm_rank(MPI_COMM_WORLD,&rank); > MPI_Comm_size(MPI_COMM_WORLD,&size); > if (MPI_Type_create_struct(1,blen,disp,btype,¶m_batch)!=MPI_SUCCESS) > fprintf(stderr,"MPI_Type_Create_Struct failed.\n"); > if (MPI_Type_commit(¶m_batch)!=MPI_SUCCESS) > fprintf(stderr,"MPI_Type_Commit failed.\n"); > if (rank==0) > param=100.; > if (MPI_Bcast(MPI_BOTTOM,1,param_batch,0,MPI_COMM_WORLD)!=MPI_SUCCESS) > fprintf(stderr,"MPI_Bcast failed.\n"); > printf("Rank:%d, Size:%d, Param=%f\n",rank,size,param); > MPI_Finalize(); > return 0; > } > > > Best regards > Daniel Spångberg > > _______________________________________________ > devel mailing list > de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/devel -- ---------------------------------------------------------------- Dipl.-Inf. Rainer Keller http://www.hlrs.de/people/keller High Performance Computing Tel: ++49 (0)711-685 6 5858 Center Stuttgart (HLRS) Fax: ++49 (0)711-685 6 5832 POSTAL:Nobelstrasse 19 email: kel...@hlrs.de ACTUAL:Allmandring 30, R.O.030 AIM:rusraink 70550 Stuttgart
Index: constants.h =================================================================== --- constants.h (Revision 15017) +++ constants.h (Arbeitskopie) @@ -89,7 +89,7 @@ /* Note that the rationale for the types of each of these variables is discussed in ompi/include/mpif-common.h. Do not change the types - without also changing ompi/mpi/runtime/ompi_mpi_init.c and + without also changing ompi/runtime/ompi_mpi_init.c and ompi/include/mpif-common.h. */ DECL(int, MPI_FORTRAN_BOTTOM, mpi_fortran_bottom, @@ -215,7 +215,7 @@ #endif /* weak / specific symbol type */ /* Convert between Fortran and C MPI_BOTTOM */ -#define OMPI_ADDR(addr) (OMPI_IS_FORTRAN_BOTTOM(addr) ? MPI_BOTTOM : (addr)) -#define OMPI_IN_PLACE(addr) (OMPI_IS_FORTRAN_IN_PLACE(addr) ? MPI_IN_PLACE : (addr)) +#define OMPI_F2C_BOTTOM(addr) (OMPI_IS_FORTRAN_BOTTOM(addr) ? MPI_BOTTOM : (addr)) +#define OMPI_F2C_IN_PLACE(addr) (OMPI_IS_FORTRAN_IN_PLACE(addr) ? MPI_IN_PLACE : (addr)) #endif /* OMPI_F77_CONSTANTS_H */ Index: accumulate_f.c =================================================================== --- accumulate_f.c (Revision 15017) +++ accumulate_f.c (Arbeitskopie) @@ -70,7 +70,7 @@ MPI_Win c_win = MPI_Win_f2c(*win); MPI_Op c_op = MPI_Op_f2c(*op); - *ierr = OMPI_INT_2_FINT(MPI_Accumulate(OMPI_ADDR(origin_addr), + *ierr = OMPI_INT_2_FINT(MPI_Accumulate(OMPI_F2C_BOTTOM(origin_addr), OMPI_FINT_2_INT(*origin_count), c_origin_datatype, OMPI_FINT_2_INT(*target_rank), Index: allgather_f.c =================================================================== --- allgather_f.c (Revision 15017) +++ allgather_f.c (Arbeitskopie) @@ -69,9 +69,9 @@ c_sendtype = MPI_Type_f2c(*sendtype); c_recvtype = MPI_Type_f2c(*recvtype); - if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) { - sendbuf = MPI_IN_PLACE; - } + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Allgather(sendbuf, OMPI_FINT_2_INT(*sendcount), Index: allgatherv_f.c =================================================================== --- allgatherv_f.c (Revision 15017) +++ allgatherv_f.c (Arbeitskopie) @@ -76,9 +76,9 @@ OMPI_ARRAY_FINT_2_INT(recvcounts, size); OMPI_ARRAY_FINT_2_INT(displs, size); - if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) { - sendbuf = MPI_IN_PLACE; - } + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Allgatherv(sendbuf, OMPI_FINT_2_INT(*sendcount), Index: allreduce_f.c =================================================================== --- allreduce_f.c (Revision 15017) +++ allreduce_f.c (Arbeitskopie) @@ -70,9 +70,9 @@ c_type = MPI_Type_f2c(*datatype); c_op = MPI_Op_f2c(*op); - if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) { - sendbuf = MPI_IN_PLACE; - } + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Allreduce(sendbuf, recvbuf, OMPI_FINT_2_INT(*count), Index: alltoall_f.c =================================================================== --- alltoall_f.c (Revision 15017) +++ alltoall_f.c (Arbeitskopie) @@ -19,6 +19,7 @@ #include "ompi_config.h" #include "ompi/mpi/f77/bindings.h" +#include "ompi/mpi/f77/constants.h" #if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER #pragma weak PMPI_ALLTOALL = mpi_alltoall_f @@ -68,10 +69,14 @@ c_sendtype = MPI_Type_f2c(*sendtype); c_recvtype = MPI_Type_f2c(*recvtype); + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); + *ierr = OMPI_INT_2_FINT(MPI_Alltoall(sendbuf, - OMPI_FINT_2_INT(*sendcount), - c_sendtype, - recvbuf, - OMPI_FINT_2_INT(*recvcount), - c_recvtype, c_comm)); + OMPI_FINT_2_INT(*sendcount), + c_sendtype, + recvbuf, + OMPI_FINT_2_INT(*recvcount), + c_recvtype, c_comm)); } Index: alltoallv_f.c =================================================================== --- alltoallv_f.c (Revision 15017) +++ alltoallv_f.c (Arbeitskopie) @@ -19,6 +19,7 @@ #include "ompi_config.h" #include "ompi/mpi/f77/bindings.h" +#include "ompi/mpi/f77/constants.h" #if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER #pragma weak PMPI_ALLTOALLV = mpi_alltoallv_f @@ -80,6 +81,9 @@ OMPI_ARRAY_FINT_2_INT(recvcounts, size); OMPI_ARRAY_FINT_2_INT(rdispls, size); + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Alltoallv(sendbuf, OMPI_ARRAY_NAME_CONVERT(sendcounts), Index: alltoallw_f.c =================================================================== --- alltoallw_f.c (Revision 15017) +++ alltoallw_f.c (Arbeitskopie) @@ -19,6 +19,7 @@ #include "ompi_config.h" #include "ompi/mpi/f77/bindings.h" +#include "ompi/mpi/f77/constants.h" #if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER #pragma weak PMPI_ALLTOALLW = mpi_alltoallw_f @@ -88,6 +89,10 @@ --size; } + /* Alltoallw does not support MPI_IN_PLACE */ + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); + *ierr = OMPI_INT_2_FINT(MPI_Alltoallw(sendbuf, OMPI_ARRAY_NAME_CONVERT(sendcounts), OMPI_ARRAY_NAME_CONVERT(sdispls), Index: bcast_f.c =================================================================== --- bcast_f.c (Revision 15017) +++ bcast_f.c (Arbeitskopie) @@ -19,6 +19,7 @@ #include "ompi_config.h" #include "ompi/mpi/f77/bindings.h" +#include "ompi/mpi/f77/constants.h" #if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER #pragma weak PMPI_BCAST = mpi_bcast_f @@ -66,7 +67,7 @@ c_comm = MPI_Comm_f2c(*comm); c_type = MPI_Type_f2c(*datatype); - *ierr = OMPI_INT_2_FINT(MPI_Bcast(buffer, + *ierr = OMPI_INT_2_FINT(MPI_Bcast(OMPI_F2C_BOTTOM(buffer), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*root), Index: bsend_f.c =================================================================== --- bsend_f.c (Revision 15017) +++ bsend_f.c (Arbeitskopie) @@ -65,7 +65,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Bsend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Bsend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm)); } Index: bsend_init_f.c =================================================================== --- bsend_init_f.c (Revision 15017) +++ bsend_init_f.c (Arbeitskopie) @@ -66,7 +66,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Bsend_init(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Bsend_init(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), Index: exscan_f.c =================================================================== --- exscan_f.c (Revision 15017) +++ exscan_f.c (Arbeitskopie) @@ -19,6 +19,7 @@ #include "ompi_config.h" #include "ompi/mpi/f77/bindings.h" +#include "ompi/mpi/f77/constants.h" #if OMPI_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER #pragma weak PMPI_EXSCAN = mpi_exscan_f @@ -69,6 +70,10 @@ c_type = MPI_Type_f2c(*datatype); c_op = MPI_Op_f2c(*op); + /* MPI_IN_PLACE is not supported */ + sendbuf = OMPI_F2C_BOTTOM (sendbuf); + recvbuf = OMPI_F2C_BOTTOM (recvbuf); + *ierr = OMPI_INT_2_FINT(MPI_Exscan(sendbuf, recvbuf, OMPI_FINT_2_INT(*count), c_type, c_op, c_comm)); Index: file_iread_at_f.c =================================================================== --- file_iread_at_f.c (Revision 15017) +++ file_iread_at_f.c (Arbeitskopie) @@ -67,7 +67,7 @@ MPI_Request c_request; *ierr = OMPI_INT_2_FINT(MPI_File_iread_at(c_fh, (MPI_Offset) *offset, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, &c_request)); Index: file_iread_f.c =================================================================== --- file_iread_f.c (Revision 15017) +++ file_iread_f.c (Arbeitskopie) @@ -65,7 +65,7 @@ MPI_Datatype c_type = MPI_Type_f2c(*datatype); MPI_Request c_request; - *ierr = OMPI_INT_2_FINT(MPI_File_iread(c_fh, OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_File_iread(c_fh, OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, &c_request)); Index: file_iread_shared_f.c =================================================================== --- file_iread_shared_f.c (Revision 15017) +++ file_iread_shared_f.c (Arbeitskopie) @@ -67,7 +67,7 @@ MPI_Request c_request; *ierr = OMPI_INT_2_FINT(MPI_File_iread_shared(c_fh, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, &c_request)); Index: file_iwrite_at_f.c =================================================================== --- file_iwrite_at_f.c (Revision 15017) +++ file_iwrite_at_f.c (Arbeitskopie) @@ -67,7 +67,7 @@ MPI_Request c_request; *ierr = OMPI_INT_2_FINT(MPI_File_iwrite_at(c_fh, (MPI_Offset) *offset, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, &c_request)); if (MPI_SUCCESS == OMPI_FINT_2_INT(*ierr)) { Index: file_iwrite_f.c =================================================================== --- file_iwrite_f.c (Revision 15017) +++ file_iwrite_f.c (Arbeitskopie) @@ -64,7 +64,7 @@ MPI_Datatype c_type = MPI_Type_f2c(*datatype); MPI_Request c_request; - *ierr = OMPI_INT_2_FINT(MPI_File_iwrite(c_fh, OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_File_iwrite(c_fh, OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, &c_request)); Index: file_iwrite_shared_f.c =================================================================== --- file_iwrite_shared_f.c (Revision 15017) +++ file_iwrite_shared_f.c (Arbeitskopie) @@ -67,7 +67,7 @@ MPI_Request c_request; *ierr = OMPI_INT_2_FINT(MPI_File_iwrite_shared(c_fh, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, &c_request)); Index: file_read_all_begin_f.c =================================================================== --- file_read_all_begin_f.c (Revision 15017) +++ file_read_all_begin_f.c (Arbeitskopie) @@ -65,7 +65,7 @@ MPI_File c_fh = MPI_File_f2c(*fh); MPI_Datatype c_type = MPI_Type_f2c(*datatype); - *ierr = OMPI_INT_2_FINT(MPI_File_read_all_begin(c_fh, OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_File_read_all_begin(c_fh, OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type)); } Index: file_read_all_f.c =================================================================== --- file_read_all_f.c (Revision 15017) +++ file_read_all_f.c (Arbeitskopie) @@ -85,7 +85,7 @@ #endif } - *ierr = OMPI_INT_2_FINT(MPI_File_read_all(c_fh, OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_File_read_all(c_fh, OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: file_read_at_all_begin_f.c =================================================================== --- file_read_at_all_begin_f.c (Revision 15017) +++ file_read_at_all_begin_f.c (Arbeitskopie) @@ -67,7 +67,7 @@ *ierr = OMPI_FINT_2_INT(MPI_File_read_at_all_begin(c_fh, (MPI_Offset) *offset, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type)); } Index: file_read_at_all_f.c =================================================================== --- file_read_at_all_f.c (Revision 15017) +++ file_read_at_all_f.c (Arbeitskopie) @@ -90,7 +90,7 @@ *ierr = OMPI_FINT_2_INT(MPI_File_read_at_all(c_fh, (MPI_Offset) *offset, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: file_read_f.c =================================================================== --- file_read_f.c (Revision 15017) +++ file_read_f.c (Arbeitskopie) @@ -86,7 +86,7 @@ #endif } - *ierr = OMPI_INT_2_FINT(MPI_File_read(c_fh, OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_File_read(c_fh, OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: file_read_ordered_begin_f.c =================================================================== --- file_read_ordered_begin_f.c (Revision 15017) +++ file_read_ordered_begin_f.c (Arbeitskopie) @@ -64,7 +64,7 @@ MPI_File c_fh = MPI_File_f2c(*fh); MPI_Datatype c_type = MPI_Type_f2c(*datatype); - *ierr = OMPI_INT_2_FINT(MPI_File_read_ordered_begin(c_fh, OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_File_read_ordered_begin(c_fh, OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type)); } Index: file_read_ordered_f.c =================================================================== --- file_read_ordered_f.c (Revision 15017) +++ file_read_ordered_f.c (Arbeitskopie) @@ -87,7 +87,7 @@ } *ierr = OMPI_FINT_2_INT(MPI_File_read_ordered(c_fh, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: file_read_shared_f.c =================================================================== --- file_read_shared_f.c (Revision 15017) +++ file_read_shared_f.c (Arbeitskopie) @@ -87,7 +87,7 @@ } *ierr = OMPI_FINT_2_INT(MPI_File_read_shared(c_fh, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: file_write_all_begin_f.c =================================================================== --- file_write_all_begin_f.c (Revision 15017) +++ file_write_all_begin_f.c (Arbeitskopie) @@ -65,7 +65,7 @@ MPI_File c_fh = MPI_File_f2c(*fh); MPI_Datatype c_type = MPI_Type_f2c(*datatype); - *ierr = OMPI_INT_2_FINT(MPI_File_write_all_begin(c_fh, OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_File_write_all_begin(c_fh, OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type)); } Index: file_write_all_f.c =================================================================== --- file_write_all_f.c (Revision 15017) +++ file_write_all_f.c (Arbeitskopie) @@ -85,7 +85,7 @@ #endif } - *ierr = OMPI_INT_2_FINT(MPI_File_write_all(c_fh, OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_File_write_all(c_fh, OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: file_write_at_all_begin_f.c =================================================================== --- file_write_at_all_begin_f.c (Revision 15017) +++ file_write_at_all_begin_f.c (Arbeitskopie) @@ -67,7 +67,7 @@ *ierr = OMPI_FINT_2_INT(MPI_File_write_at_all_begin(c_fh, (MPI_Offset) *offset, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type)); } Index: file_write_at_all_f.c =================================================================== --- file_write_at_all_f.c (Revision 15017) +++ file_write_at_all_f.c (Arbeitskopie) @@ -89,7 +89,7 @@ *ierr = OMPI_FINT_2_INT(MPI_File_write_at_all(c_fh, (MPI_Offset) *offset, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: file_write_at_f.c =================================================================== --- file_write_at_f.c (Revision 15017) +++ file_write_at_f.c (Arbeitskopie) @@ -87,7 +87,7 @@ *ierr = OMPI_FINT_2_INT(MPI_File_write_at(c_fh, (MPI_Offset) *offset, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: file_write_f.c =================================================================== --- file_write_f.c (Revision 15017) +++ file_write_f.c (Arbeitskopie) @@ -85,7 +85,7 @@ #endif } - *ierr = OMPI_INT_2_FINT(MPI_File_write(c_fh, OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_File_write(c_fh, OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: file_write_ordered_begin_f.c =================================================================== --- file_write_ordered_begin_f.c (Revision 15017) +++ file_write_ordered_begin_f.c (Arbeitskopie) @@ -65,7 +65,7 @@ MPI_File c_fh = MPI_File_f2c(*fh); MPI_Datatype c_type = MPI_Type_f2c(*datatype); - *ierr = OMPI_INT_2_FINT(MPI_File_write_ordered_begin(c_fh, OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_File_write_ordered_begin(c_fh, OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type)); } Index: file_write_ordered_f.c =================================================================== --- file_write_ordered_f.c (Revision 15017) +++ file_write_ordered_f.c (Arbeitskopie) @@ -87,7 +87,7 @@ } *ierr = OMPI_FINT_2_INT(MPI_File_write_ordered(c_fh, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: file_write_shared_f.c =================================================================== --- file_write_shared_f.c (Revision 15017) +++ file_write_shared_f.c (Arbeitskopie) @@ -87,7 +87,7 @@ } *ierr = OMPI_FINT_2_INT(MPI_File_write_shared(c_fh, - OMPI_ADDR(buf), + OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, c_status)); Index: gather_f.c =================================================================== --- gather_f.c (Revision 15017) +++ gather_f.c (Arbeitskopie) @@ -69,9 +69,9 @@ c_sendtype = MPI_Type_f2c(*sendtype); c_recvtype = MPI_Type_f2c(*recvtype); - if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) { - sendbuf = MPI_IN_PLACE; - } + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Gather(sendbuf, OMPI_FINT_2_INT(*sendcount), c_sendtype, recvbuf, Index: gatherv_f.c =================================================================== --- gatherv_f.c (Revision 15017) +++ gatherv_f.c (Arbeitskopie) @@ -77,9 +77,9 @@ OMPI_ARRAY_FINT_2_INT(recvcounts, size); OMPI_ARRAY_FINT_2_INT(displs, size); - if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) { - sendbuf = MPI_IN_PLACE; - } + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Gatherv(sendbuf, OMPI_FINT_2_INT(*sendcount), c_sendtype, recvbuf, Index: get_f.c =================================================================== --- get_f.c (Revision 15017) +++ get_f.c (Arbeitskopie) @@ -68,7 +68,7 @@ MPI_Datatype c_target_datatype = MPI_Type_f2c(*target_datatype); MPI_Win c_win = MPI_Win_f2c(*win); - *ierr = OMPI_INT_2_FINT(MPI_Get(OMPI_ADDR(origin_addr), + *ierr = OMPI_INT_2_FINT(MPI_Get(OMPI_F2C_BOTTOM(origin_addr), OMPI_FINT_2_INT(*origin_count), c_origin_datatype, OMPI_FINT_2_INT(*target_rank), Index: ibsend_f.c =================================================================== --- ibsend_f.c (Revision 15017) +++ ibsend_f.c (Arbeitskopie) @@ -68,7 +68,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Ibsend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Ibsend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm, &c_req)); Index: irecv_f.c =================================================================== --- irecv_f.c (Revision 15017) +++ irecv_f.c (Arbeitskopie) @@ -68,7 +68,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Irecv(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Irecv(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*source), OMPI_FINT_2_INT(*tag), c_comm, &c_req)); Index: irsend_f.c =================================================================== --- irsend_f.c (Revision 15017) +++ irsend_f.c (Arbeitskopie) @@ -66,7 +66,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Irsend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Irsend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm, &c_req)); Index: isend_f.c =================================================================== --- isend_f.c (Revision 15017) +++ isend_f.c (Arbeitskopie) @@ -66,7 +66,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Isend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Isend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm, &c_req)); Index: issend_f.c =================================================================== --- issend_f.c (Revision 15017) +++ issend_f.c (Arbeitskopie) @@ -66,7 +66,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Issend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Issend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm, &c_req)); Index: pack_external_f.c =================================================================== --- pack_external_f.c (Revision 15017) +++ pack_external_f.c (Arbeitskopie) @@ -65,7 +65,7 @@ { MPI_Datatype type = MPI_Type_f2c(*datatype); - *ierr = OMPI_INT_2_FINT(MPI_Pack_external(datarep, OMPI_ADDR(inbuf), + *ierr = OMPI_INT_2_FINT(MPI_Pack_external(datarep, OMPI_F2C_BOTTOM(inbuf), OMPI_FINT_2_INT(*incount), type, outbuf, *outsize, Index: pack_f.c =================================================================== --- pack_f.c (Revision 15017) +++ pack_f.c (Arbeitskopie) @@ -70,7 +70,7 @@ c_type = MPI_Type_f2c(*datatype); OMPI_SINGLE_FINT_2_INT(position); - *ierr = OMPI_INT_2_FINT(MPI_Pack(OMPI_ADDR(inbuf), OMPI_FINT_2_INT(*incount), + *ierr = OMPI_INT_2_FINT(MPI_Pack(OMPI_F2C_BOTTOM(inbuf), OMPI_FINT_2_INT(*incount), c_type, outbuf, OMPI_FINT_2_INT(*outsize), OMPI_SINGLE_NAME_CONVERT(position), Index: put_f.c =================================================================== --- put_f.c (Revision 15017) +++ put_f.c (Arbeitskopie) @@ -68,7 +68,7 @@ MPI_Datatype c_target_datatype = MPI_Type_f2c(*target_datatype); MPI_Win c_win = MPI_Win_f2c(*win); - *ierr = OMPI_INT_2_FINT(MPI_Put(OMPI_ADDR(origin_addr), + *ierr = OMPI_INT_2_FINT(MPI_Put(OMPI_F2C_BOTTOM(origin_addr), OMPI_FINT_2_INT(*origin_count), c_origin_datatype, OMPI_FINT_2_INT(*target_rank), Index: recv_f.c =================================================================== --- recv_f.c (Revision 15017) +++ recv_f.c (Arbeitskopie) @@ -87,7 +87,7 @@ } /* Call the C function */ - *ierr = OMPI_INT_2_FINT(MPI_Recv(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Recv(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*source), OMPI_FINT_2_INT(*tag), c_comm, c_status)); Index: recv_init_f.c =================================================================== --- recv_init_f.c (Revision 15017) +++ recv_init_f.c (Arbeitskopie) @@ -68,7 +68,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Recv_init(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Recv_init(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*source), OMPI_INT_2_FINT(*tag), c_comm, &c_req)); Index: reduce_f.c =================================================================== --- reduce_f.c (Revision 15017) +++ reduce_f.c (Arbeitskopie) @@ -70,9 +70,9 @@ c_op = MPI_Op_f2c(*op); c_comm = MPI_Comm_f2c(*comm); - if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) { - sendbuf = MPI_IN_PLACE; - } + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Reduce(sendbuf, recvbuf, OMPI_FINT_2_INT(*count), Index: reduce_scatter_f.c =================================================================== --- reduce_scatter_f.c (Revision 15017) +++ reduce_scatter_f.c (Arbeitskopie) @@ -75,9 +75,9 @@ MPI_Comm_size(c_comm, &size); OMPI_ARRAY_FINT_2_INT(recvcounts, size); - if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) { - sendbuf = MPI_IN_PLACE; - } + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Reduce_scatter(sendbuf, recvbuf, OMPI_ARRAY_NAME_CONVERT(recvcounts), Index: rsend_f.c =================================================================== --- rsend_f.c (Revision 15017) +++ rsend_f.c (Arbeitskopie) @@ -66,7 +66,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Rsend(OMPI_ADDR(ibuf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Rsend(OMPI_F2C_BOTTOM(ibuf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm)); } Index: rsend_init_f.c =================================================================== --- rsend_init_f.c (Revision 15017) +++ rsend_init_f.c (Arbeitskopie) @@ -69,7 +69,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Rsend_init(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Rsend_init(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm, &c_req)); Index: scan_f.c =================================================================== --- scan_f.c (Revision 15017) +++ scan_f.c (Arbeitskopie) @@ -70,9 +70,9 @@ c_op = MPI_Op_f2c(*op); c_comm = MPI_Comm_f2c(*comm); - if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) { - sendbuf = MPI_IN_PLACE; - } + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Scan(sendbuf, recvbuf, OMPI_FINT_2_INT(*count), Index: scatter_f.c =================================================================== --- scatter_f.c (Revision 15017) +++ scatter_f.c (Arbeitskopie) @@ -69,9 +69,9 @@ c_sendtype = MPI_Type_f2c(*sendtype); c_recvtype = MPI_Type_f2c(*recvtype); - if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) { - sendbuf = MPI_IN_PLACE; - } + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Scatter(sendbuf,OMPI_FINT_2_INT(*sendcount), c_sendtype, recvbuf, Index: scatterv_f.c =================================================================== --- scatterv_f.c (Revision 15017) +++ scatterv_f.c (Arbeitskopie) @@ -78,9 +78,9 @@ OMPI_ARRAY_FINT_2_INT(sendcounts, size); OMPI_ARRAY_FINT_2_INT(displs, size); - if (OMPI_IS_FORTRAN_IN_PLACE(sendbuf)) { - sendbuf = MPI_IN_PLACE; - } + sendbuf = OMPI_F2C_IN_PLACE(sendbuf); + sendbuf = OMPI_F2C_BOTTOM(sendbuf); + recvbuf = OMPI_F2C_BOTTOM(recvbuf); *ierr = OMPI_INT_2_FINT(MPI_Scatterv(sendbuf, OMPI_ARRAY_NAME_CONVERT(sendcounts), Index: send_f.c =================================================================== --- send_f.c (Revision 15017) +++ send_f.c (Arbeitskopie) @@ -64,7 +64,7 @@ MPI_Comm c_comm = MPI_Comm_f2c(*comm); MPI_Datatype c_type = MPI_Type_f2c(*datatype); - *ierr = OMPI_INT_2_FINT(MPI_Send(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Send(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm)); } Index: send_init_f.c =================================================================== --- send_init_f.c (Revision 15017) +++ send_init_f.c (Arbeitskopie) @@ -68,7 +68,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Send_init(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Send_init(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm, &c_req)); Index: sendrecv_f.c =================================================================== --- sendrecv_f.c (Revision 15017) +++ sendrecv_f.c (Arbeitskopie) @@ -71,11 +71,11 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Sendrecv(OMPI_ADDR(sendbuf), OMPI_FINT_2_INT(*sendcount), + *ierr = OMPI_INT_2_FINT(MPI_Sendrecv(OMPI_F2C_BOTTOM(sendbuf), OMPI_FINT_2_INT(*sendcount), c_sendtype, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*sendtag), - OMPI_ADDR(recvbuf), *recvcount, + OMPI_F2C_BOTTOM(recvbuf), *recvcount, c_recvtype, OMPI_FINT_2_INT(*source), OMPI_FINT_2_INT(*recvtag), c_comm, &c_status)); Index: sendrecv_replace_f.c =================================================================== --- sendrecv_replace_f.c (Revision 15017) +++ sendrecv_replace_f.c (Arbeitskopie) @@ -69,7 +69,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Sendrecv_replace(OMPI_ADDR(buf), + *ierr = OMPI_INT_2_FINT(MPI_Sendrecv_replace(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), Index: ssend_f.c =================================================================== --- ssend_f.c (Revision 15017) +++ ssend_f.c (Arbeitskopie) @@ -67,7 +67,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Ssend(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Ssend(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm)); } Index: ssend_init_f.c =================================================================== --- ssend_init_f.c (Revision 15017) +++ ssend_init_f.c (Arbeitskopie) @@ -68,7 +68,7 @@ c_comm = MPI_Comm_f2c (*comm); - *ierr = OMPI_INT_2_FINT(MPI_Ssend_init(OMPI_ADDR(buf), OMPI_FINT_2_INT(*count), + *ierr = OMPI_INT_2_FINT(MPI_Ssend_init(OMPI_F2C_BOTTOM(buf), OMPI_FINT_2_INT(*count), c_type, OMPI_FINT_2_INT(*dest), OMPI_FINT_2_INT(*tag), c_comm, &c_req)); Index: unpack_external_f.c =================================================================== --- unpack_external_f.c (Revision 15017) +++ unpack_external_f.c (Arbeitskopie) @@ -69,7 +69,7 @@ *ierr = OMPI_INT_2_FINT(MPI_Unpack_external(datarep, inbuf, *insize, position, - OMPI_ADDR(outbuf), + OMPI_F2C_BOTTOM(outbuf), OMPI_FINT_2_INT(*outcount), c_type)); } Index: unpack_f.c =================================================================== --- unpack_f.c (Revision 15017) +++ unpack_f.c (Arbeitskopie) @@ -72,7 +72,7 @@ *ierr = OMPI_INT_2_FINT(MPI_Unpack(inbuf, OMPI_FINT_2_INT(*insize), OMPI_SINGLE_NAME_CONVERT(position), - OMPI_ADDR(outbuf), OMPI_FINT_2_INT(*outcount), + OMPI_F2C_BOTTOM(outbuf), OMPI_FINT_2_INT(*outcount), c_type, c_comm)); if (MPI_SUCCESS == OMPI_FINT_2_INT(*ierr)) { OMPI_SINGLE_INT_2_FINT(position);