1
1

Thanks to Daniel Spangberg for noticing this problem in the f77

interface:
 - Fix the handling of MPI_BOTTOM in various places
   Update of r15030
 - While being at it, handle MPI_IN_PLACE in the same way.
   Convert OMPI_ADDR -> OMPI_F2C_BOTTOM
   Convert OMPI_IN_PLACE -> OMPI_F2C_IN_PLACE
   and have them converted before the actual call.
 - Approved by George and tested with icc and simple f77 mpi-program and
   with program by Daniel.

This commit was SVN r15129.

The following SVN revision numbers were found above:
  r15030 --> open-mpi/ompi@15f9e58c68
Этот коммит содержится в:
Rainer Keller 2007-06-18 22:33:54 +00:00
родитель 858735c53c
Коммит 9b91ac2fa3
64 изменённых файлов: 127 добавлений и 111 удалений

3
NEWS
Просмотреть файл

@ -32,6 +32,9 @@ Trunk (not on release branches yet)
- Removed dependency on sysfsutils from the openib BTL for libibverbs
>=v1.1 (i.e., OFED 1.2 and beyond).
--> Expected 1.2.x
- Fix a problem with MPI_BOTTOM in various places of the f77-interface.
Thanks to Daniel Spangberg for bringing this up.
--> Expected 1.2.x
- Fix several problems with redirecting large files into mpirun's
stdin.
--> Expected 1.2.x

Просмотреть файл

@ -70,7 +70,7 @@ void mpi_accumulate_f(char *origin_addr, MPI_Fint *origin_count,
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),

Просмотреть файл

@ -69,14 +69,14 @@ void mpi_allgather_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype,
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(OMPI_ADDR(sendbuf),
*ierr = OMPI_INT_2_FINT(MPI_Allgather(sendbuf,
OMPI_FINT_2_INT(*sendcount),
c_sendtype,
OMPI_ADDR(recvbuf),
recvbuf,
OMPI_FINT_2_INT(*recvcount),
c_recvtype, c_comm));

Просмотреть файл

@ -76,14 +76,14 @@ void mpi_allgatherv_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype,
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(OMPI_ADDR(sendbuf),
*ierr = OMPI_INT_2_FINT(MPI_Allgatherv(sendbuf,
OMPI_FINT_2_INT(*sendcount),
c_sendtype,
OMPI_ADDR(recvbuf),
recvbuf,
OMPI_ARRAY_NAME_CONVERT(recvcounts),
OMPI_ARRAY_NAME_CONVERT(displs),
c_recvtype, c_comm));

Просмотреть файл

@ -70,11 +70,11 @@ void mpi_allreduce_f(char *sendbuf, char *recvbuf, MPI_Fint *count,
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(OMPI_ADDR(sendbuf), OMPI_ADDR(recvbuf),
*ierr = OMPI_INT_2_FINT(MPI_Allreduce(sendbuf, recvbuf,
OMPI_FINT_2_INT(*count),
c_type, c_op, c_comm));
}

Просмотреть файл

@ -69,10 +69,14 @@ void mpi_alltoall_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype,
c_sendtype = MPI_Type_f2c(*sendtype);
c_recvtype = MPI_Type_f2c(*recvtype);
*ierr = OMPI_INT_2_FINT(MPI_Alltoall(OMPI_ADDR(sendbuf),
OMPI_FINT_2_INT(*sendcount),
c_sendtype,
OMPI_ADDR(recvbuf),
OMPI_FINT_2_INT(*recvcount),
c_recvtype, c_comm));
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));
}

Просмотреть файл

@ -81,12 +81,15 @@ void mpi_alltoallv_f(char *sendbuf, MPI_Fint *sendcounts, MPI_Fint *sdispls,
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(OMPI_ADDR(sendbuf),
*ierr = OMPI_INT_2_FINT(MPI_Alltoallv(sendbuf,
OMPI_ARRAY_NAME_CONVERT(sendcounts),
OMPI_ARRAY_NAME_CONVERT(sdispls),
c_sendtype,
OMPI_ADDR(recvbuf),
recvbuf,
OMPI_ARRAY_NAME_CONVERT(recvcounts),
OMPI_ARRAY_NAME_CONVERT(rdispls),
c_recvtype, c_comm));

Просмотреть файл

@ -89,11 +89,15 @@ void mpi_alltoallw_f(char *sendbuf, MPI_Fint *sendcounts,
--size;
}
*ierr = OMPI_INT_2_FINT(MPI_Alltoallw(OMPI_ADDR(sendbuf),
/* 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),
c_sendtypes,
OMPI_ADDR(recvbuf),
recvbuf,
OMPI_ARRAY_NAME_CONVERT(recvcounts),
OMPI_ARRAY_NAME_CONVERT(rdispls),
c_recvtypes, c_comm));

Просмотреть файл

@ -67,7 +67,7 @@ void mpi_bcast_f(char *buffer, MPI_Fint *count, MPI_Fint *datatype,
c_comm = MPI_Comm_f2c(*comm);
c_type = MPI_Type_f2c(*datatype);
*ierr = OMPI_INT_2_FINT(MPI_Bcast(OMPI_ADDR(buffer),
*ierr = OMPI_INT_2_FINT(MPI_Bcast(OMPI_F2C_BOTTOM(buffer),
OMPI_FINT_2_INT(*count),
c_type,
OMPI_FINT_2_INT(*root),

Просмотреть файл

@ -65,7 +65,7 @@ void mpi_bsend_f(char *buf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *dest,
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));
}

Просмотреть файл

@ -66,7 +66,7 @@ void mpi_bsend_init_f(char *buf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *
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),

Просмотреть файл

@ -89,7 +89,7 @@ OMPI_DECLSPEC extern type double_u
/* 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 @@ DECL(double, MPI_FORTRAN_STATUSES_IGNORE, mpi_fortran_statuses_ignore,
#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 */

Просмотреть файл

@ -70,7 +70,11 @@ void mpi_exscan_f(char *sendbuf, char *recvbuf, MPI_Fint *count,
c_type = MPI_Type_f2c(*datatype);
c_op = MPI_Op_f2c(*op);
*ierr = OMPI_INT_2_FINT(MPI_Exscan(OMPI_ADDR(sendbuf), OMPI_ADDR(recvbuf),
/* 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));
}

Просмотреть файл

@ -67,7 +67,7 @@ void mpi_file_iread_at_f(MPI_Fint *fh, MPI_Offset *offset,
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));

Просмотреть файл

@ -65,7 +65,7 @@ void mpi_file_iread_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
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));

Просмотреть файл

@ -67,7 +67,7 @@ void mpi_file_iread_shared_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
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));

Просмотреть файл

@ -67,7 +67,7 @@ void mpi_file_iwrite_at_f(MPI_Fint *fh, MPI_Offset *offset, char *buf,
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)) {

Просмотреть файл

@ -64,7 +64,7 @@ void mpi_file_iwrite_f(MPI_Fint *fh, char *buf, MPI_Fint *count, MPI_Fint *datat
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));

Просмотреть файл

@ -67,7 +67,7 @@ void mpi_file_iwrite_shared_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
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));

Просмотреть файл

@ -65,7 +65,7 @@ void mpi_file_read_all_begin_f(MPI_Fint *fh, char *buf,
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));
}

Просмотреть файл

@ -85,7 +85,7 @@ void mpi_file_read_all_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
#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));

Просмотреть файл

@ -67,7 +67,7 @@ void mpi_file_read_at_all_begin_f(MPI_Fint *fh, MPI_Offset *offset,
*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));
}

Просмотреть файл

@ -90,7 +90,7 @@ void mpi_file_read_at_all_f(MPI_Fint *fh, MPI_Offset *offset,
*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));

Просмотреть файл

@ -86,7 +86,7 @@ void mpi_file_read_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
#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));

Просмотреть файл

@ -64,7 +64,7 @@ void mpi_file_read_ordered_begin_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
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));
}

Просмотреть файл

@ -87,7 +87,7 @@ void mpi_file_read_ordered_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
}
*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));

Просмотреть файл

@ -87,7 +87,7 @@ void mpi_file_read_shared_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
}
*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));

Просмотреть файл

@ -65,7 +65,7 @@ void mpi_file_write_all_begin_f(MPI_Fint *fh, char *buf,
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));
}

Просмотреть файл

@ -85,7 +85,7 @@ void mpi_file_write_all_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
#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));

Просмотреть файл

@ -67,7 +67,7 @@ void mpi_file_write_at_all_begin_f(MPI_Fint *fh, MPI_Offset *offset,
*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));
}

Просмотреть файл

@ -89,7 +89,7 @@ void mpi_file_write_at_all_f(MPI_Fint *fh, MPI_Offset *offset,
*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));

Просмотреть файл

@ -87,7 +87,7 @@ void mpi_file_write_at_f(MPI_Fint *fh, MPI_Offset *offset,
*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));

Просмотреть файл

@ -85,7 +85,7 @@ void mpi_file_write_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
#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));

Просмотреть файл

@ -65,7 +65,7 @@ void mpi_file_write_ordered_begin_f(MPI_Fint *fh, char *buf,
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));
}

Просмотреть файл

@ -87,7 +87,7 @@ void mpi_file_write_ordered_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
}
*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));

Просмотреть файл

@ -87,7 +87,7 @@ void mpi_file_write_shared_f(MPI_Fint *fh, char *buf, MPI_Fint *count,
}
*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));

Просмотреть файл

@ -69,13 +69,12 @@ void mpi_gather_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype,
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(OMPI_ADDR(sendbuf),
OMPI_FINT_2_INT(*sendcount),
c_sendtype, OMPI_ADDR(recvbuf),
*ierr = OMPI_INT_2_FINT(MPI_Gather(sendbuf, OMPI_FINT_2_INT(*sendcount),
c_sendtype, recvbuf,
OMPI_FINT_2_INT(*recvcount),
c_recvtype,
OMPI_FINT_2_INT(*root),

Просмотреть файл

@ -77,13 +77,12 @@ void mpi_gatherv_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype,
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(OMPI_ADDR(sendbuf),
OMPI_FINT_2_INT(*sendcount),
c_sendtype, OMPI_ADDR(recvbuf),
*ierr = OMPI_INT_2_FINT(MPI_Gatherv(sendbuf, OMPI_FINT_2_INT(*sendcount),
c_sendtype, recvbuf,
OMPI_ARRAY_NAME_CONVERT(recvcounts),
OMPI_ARRAY_NAME_CONVERT(displs),
c_recvtype,

Просмотреть файл

@ -68,7 +68,7 @@ void mpi_get_f(char *origin_addr, MPI_Fint *origin_count,
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),

Просмотреть файл

@ -68,7 +68,7 @@ void mpi_ibsend_f(char *buf, MPI_Fint *count, MPI_Fint *datatype,
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));

Просмотреть файл

@ -68,7 +68,7 @@ void mpi_irecv_f(char *buf, MPI_Fint *count, MPI_Fint *datatype,
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));

Просмотреть файл

@ -66,7 +66,7 @@ void mpi_irsend_f(char *buf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *dest
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));

Просмотреть файл

@ -66,7 +66,7 @@ void mpi_isend_f(char *buf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *dest,
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));

Просмотреть файл

@ -66,7 +66,7 @@ void mpi_issend_f(char *buf, MPI_Fint *count, MPI_Fint *datatype, MPI_Fint *dest
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));

Просмотреть файл

@ -65,7 +65,7 @@ void mpi_pack_external_f(char *datarep, char *inbuf, MPI_Fint *incount,
{
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,

Просмотреть файл

@ -70,7 +70,7 @@ void mpi_pack_f(char *inbuf, MPI_Fint *incount, MPI_Fint *datatype,
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),

Просмотреть файл

@ -68,7 +68,7 @@ void mpi_put_f(char *origin_addr, MPI_Fint *origin_count,
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),

Просмотреть файл

@ -87,7 +87,7 @@ void mpi_recv_f(char *buf, MPI_Fint *count, MPI_Fint *datatype,
}
/* 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));

Просмотреть файл

@ -68,7 +68,7 @@ void mpi_recv_init_f(char *buf, MPI_Fint *count, MPI_Fint *datatype,
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));

Просмотреть файл

@ -70,11 +70,11 @@ void mpi_reduce_f(char *sendbuf, char *recvbuf, MPI_Fint *count,
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(OMPI_ADDR(sendbuf), OMPI_ADDR(recvbuf),
*ierr = OMPI_INT_2_FINT(MPI_Reduce(sendbuf, recvbuf,
OMPI_FINT_2_INT(*count),
c_type, c_op,
OMPI_FINT_2_INT(*root),

Просмотреть файл

@ -75,11 +75,11 @@ void mpi_reduce_scatter_f(char *sendbuf, char *recvbuf,
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(OMPI_ADDR(sendbuf), OMPI_ADDR(recvbuf),
*ierr = OMPI_INT_2_FINT(MPI_Reduce_scatter(sendbuf, recvbuf,
OMPI_ARRAY_NAME_CONVERT(recvcounts),
c_type, c_op, c_comm));
}

Просмотреть файл

@ -66,7 +66,7 @@ void mpi_rsend_f(char *ibuf, MPI_Fint *count, MPI_Fint *datatype,
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));
}

Просмотреть файл

@ -69,7 +69,7 @@ void mpi_rsend_init_f(char *buf, MPI_Fint *count,
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));

Просмотреть файл

@ -70,11 +70,11 @@ void mpi_scan_f(char *sendbuf, char *recvbuf, MPI_Fint *count,
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(OMPI_ADDR(sendbuf), OMPI_ADDR(recvbuf),
*ierr = OMPI_INT_2_FINT(MPI_Scan(sendbuf, recvbuf,
OMPI_FINT_2_INT(*count),
c_type, c_op,
c_comm));

Просмотреть файл

@ -69,12 +69,12 @@ void mpi_scatter_f(char *sendbuf, MPI_Fint *sendcount,
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(OMPI_ADDR(sendbuf),OMPI_FINT_2_INT(*sendcount),
c_sendtype, OMPI_ADDR(recvbuf),
*ierr = OMPI_INT_2_FINT(MPI_Scatter(sendbuf,OMPI_FINT_2_INT(*sendcount),
c_sendtype, recvbuf,
OMPI_FINT_2_INT(*recvcount),
c_recvtype,
OMPI_FINT_2_INT(*root), c_comm));

Просмотреть файл

@ -78,14 +78,14 @@ void mpi_scatterv_f(char *sendbuf, MPI_Fint *sendcounts,
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(OMPI_ADDR(sendbuf),
*ierr = OMPI_INT_2_FINT(MPI_Scatterv(sendbuf,
OMPI_ARRAY_NAME_CONVERT(sendcounts),
OMPI_ARRAY_NAME_CONVERT(displs),
c_sendtype, OMPI_ADDR(recvbuf),
c_sendtype, recvbuf,
OMPI_FINT_2_INT(*recvcount),
c_recvtype,
OMPI_FINT_2_INT(*root), c_comm));

Просмотреть файл

@ -64,7 +64,7 @@ void mpi_send_f(char *buf, MPI_Fint *count, MPI_Fint *datatype,
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));
}

Просмотреть файл

@ -68,7 +68,7 @@ void mpi_send_init_f(char *buf, MPI_Fint *count, MPI_Fint *datatype,
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));

Просмотреть файл

@ -71,11 +71,11 @@ void mpi_sendrecv_f(char *sendbuf, MPI_Fint *sendcount, MPI_Fint *sendtype,
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));

Просмотреть файл

@ -69,7 +69,7 @@ void mpi_sendrecv_replace_f(char *buf, MPI_Fint *count, MPI_Fint *datatype,
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),

Просмотреть файл

@ -67,7 +67,7 @@ void mpi_ssend_f(char *buf, MPI_Fint *count, MPI_Fint *datatype,
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));
}

Просмотреть файл

@ -68,7 +68,7 @@ void mpi_ssend_init_f(char *buf, MPI_Fint *count, MPI_Fint *datatype,
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));

Просмотреть файл

@ -69,7 +69,7 @@ void mpi_unpack_external_f (char *datarep, char *inbuf, MPI_Aint *insize,
*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));
}

Просмотреть файл

@ -72,7 +72,7 @@ void mpi_unpack_f(char *inbuf, MPI_Fint *insize, MPI_Fint *position,
*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);