1
1
This commit was SVN r2647.
Этот коммит содержится в:
Vishal Sahay 2004-09-14 05:59:53 +00:00
родитель ff8fda793c
Коммит b6b0de9d8f
6 изменённых файлов: 62 добавлений и 14 удалений

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

@ -49,8 +49,13 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TEST_CANCELLED,
void mpi_test_cancelled_f(MPI_Fint *status, MPI_Fint *flag, MPI_Fint *ierr) void mpi_test_cancelled_f(MPI_Fint *status, MPI_Fint *flag, MPI_Fint *ierr)
{ {
MPI_Status c_status; MPI_Status c_status;
OMPI_SINGLE_NAME_DECL(flag);
MPI_Status_f2c( status, &c_status ); MPI_Status_f2c( status, &c_status );
*ierr = MPI_Test_cancelled(&c_status, flag); *ierr = OMPI_INT_2_FINT(MPI_Test_cancelled(&c_status,
OMPI_SINGLE_NAME_CONVERT(flag)
));
OMPI_SINGLE_INT_2_FINT(flag);
} }

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

@ -46,13 +46,18 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TEST,
#include "mpi/f77/profile/defines.h" #include "mpi/f77/profile/defines.h"
#endif #endif
void mpi_test_f(MPI_Fint *request, MPI_Fint *flag, MPI_Fint *status, MPI_Fint *ierr) void mpi_test_f(MPI_Fint *request, MPI_Fint *flag,
MPI_Fint *status, MPI_Fint *ierr)
{ {
MPI_Request c_req = MPI_Request_f2c(*request); MPI_Request c_req = MPI_Request_f2c(*request);
MPI_Status c_status; MPI_Status c_status;
OMPI_SINGLE_NAME_DECL(flag);
*ierr = MPI_Test(&c_req, flag, &c_status); *ierr = OMPI_INT_2_FINT(MPI_Test(&c_req,
OMPI_SINGLE_NAME_CONVERT(flag),
&c_status));
OMPI_SINGLE_INT_2_FINT(flag);
MPI_Status_c2f( &c_status, status); MPI_Status_c2f( &c_status, status);
if ( (MPI_SUCCESS == *ierr) && (NULL == c_req) ) { if ( (MPI_SUCCESS == *ierr) && (NULL == c_req) ) {

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

@ -52,16 +52,22 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TESTSOME,
static const char FUNC_NAME[] = "MPI_TESTSOME"; static const char FUNC_NAME[] = "MPI_TESTSOME";
void mpi_testsome_f(MPI_Fint *incount, MPI_Fint *array_of_requests, MPI_Fint *outcount, MPI_Fint *array_of_indices, MPI_Fint *array_of_statuses, MPI_Fint *ierr) void mpi_testsome_f(MPI_Fint *incount, MPI_Fint *array_of_requests,
MPI_Fint *outcount, MPI_Fint *array_of_indices,
MPI_Fint *array_of_statuses, MPI_Fint *ierr)
{ {
int c_err;
MPI_Request *c_req; MPI_Request *c_req;
MPI_Status *c_status; MPI_Status *c_status;
int i; int i;
OMPI_SINGLE_NAME_DECL(outcount);
OMPI_ARRAY_NAME_DECL(array_of_indices);
c_req = malloc(*incount * (sizeof(MPI_Request) + sizeof(MPI_Status))); c_req = malloc(*incount * (sizeof(MPI_Request) + sizeof(MPI_Status)));
if (NULL == c_req) { if (NULL == c_req) {
*ierr = OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_NO_MEM, c_err = OMPI_ERRHANDLER_INVOKE(MPI_COMM_WORLD, MPI_ERR_NO_MEM,
FUNC_NAME); FUNC_NAME);
*ierr = OMPI_INT_2_FINT(c_err);
return; return;
} }
c_status = (MPI_Status*) c_req + *incount; c_status = (MPI_Status*) c_req + *incount;
@ -70,8 +76,14 @@ void mpi_testsome_f(MPI_Fint *incount, MPI_Fint *array_of_requests, MPI_Fint *ou
c_req[i] = MPI_Request_f2c(array_of_requests[i]); c_req[i] = MPI_Request_f2c(array_of_requests[i]);
} }
*ierr = MPI_Testsome(*incount, c_req, outcount, array_of_indices, OMPI_ARRAY_FINT_2_INT_ALLOC(array_of_indices, *incount);
c_status); *ierr = OMPI_INT_2_FINT(MPI_Testsome(OMPI_FINT_2_INT(*incount), c_req,
OMPI_SINGLE_NAME_CONVERT(outcount),
OMPI_ARRAY_NAME_CONVERT(array_of_indices),
c_status));
OMPI_SINGLE_INT_2_FINT(outcount);
OMPI_ARRAY_INT_2_FINT(array_of_indices, *incount);
if (MPI_SUCCESS == *ierr) { if (MPI_SUCCESS == *ierr) {
if (MPI_UNDEFINED != *outcount) { if (MPI_UNDEFINED != *outcount) {

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

@ -50,7 +50,7 @@ void mpi_type_commit_f(MPI_Fint *type, MPI_Fint *ierr)
{ {
MPI_Datatype c_type = MPI_Type_f2c(*type); MPI_Datatype c_type = MPI_Type_f2c(*type);
*ierr = MPI_Type_commit(&c_type); *ierr = OMPI_INT_2_FINT(MPI_Type_commit(&c_type));
if (MPI_SUCCESS == *ierr) { if (MPI_SUCCESS == *ierr) {
*type = MPI_Type_c2f(c_type); *type = MPI_Type_c2f(c_type);

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

@ -46,12 +46,14 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TYPE_CONTIGUOUS,
#include "mpi/f77/profile/defines.h" #include "mpi/f77/profile/defines.h"
#endif #endif
void mpi_type_contiguous_f(MPI_Fint *count, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr) void mpi_type_contiguous_f(MPI_Fint *count, MPI_Fint *oldtype,
MPI_Fint *newtype, MPI_Fint *ierr)
{ {
MPI_Datatype c_old = MPI_Type_f2c(*oldtype); MPI_Datatype c_old = MPI_Type_f2c(*oldtype);
MPI_Datatype c_new; MPI_Datatype c_new;
*ierr = MPI_Type_contiguous(*count, c_old, &c_new); *ierr = OMPI_INT_2_FINT(MPI_Type_contiguous(OMPI_FINT_2_INT(*count),
c_old, &c_new));
if (MPI_SUCCESS == *ierr) { if (MPI_SUCCESS == *ierr) {
*newtype = MPI_Type_c2f(c_new); *newtype = MPI_Type_c2f(c_new);

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

@ -46,14 +46,38 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TYPE_CREATE_DARRAY,
#include "mpi/f77/profile/defines.h" #include "mpi/f77/profile/defines.h"
#endif #endif
void mpi_type_create_darray_f(MPI_Fint *size, MPI_Fint *rank, MPI_Fint *ndims, MPI_Fint *gsize_array, MPI_Fint *distrib_array, MPI_Fint *darg_array, MPI_Fint *psize_array, MPI_Fint *order, MPI_Fint *oldtype, MPI_Fint *newtype, MPI_Fint *ierr) void mpi_type_create_darray_f(MPI_Fint *size, MPI_Fint *rank,
MPI_Fint *ndims, MPI_Fint *gsize_array,
MPI_Fint *distrib_array, MPI_Fint *darg_array,
MPI_Fint *psize_array, MPI_Fint *order,
MPI_Fint *oldtype, MPI_Fint *newtype,
MPI_Fint *ierr)
{ {
MPI_Datatype c_old = MPI_Type_f2c(*oldtype); MPI_Datatype c_old = MPI_Type_f2c(*oldtype);
MPI_Datatype c_new; MPI_Datatype c_new;
OMPI_ARRAY_NAME_DECL(gsize_array);
OMPI_ARRAY_NAME_DECL(distrib_array);
OMPI_ARRAY_NAME_DECL(darg_array);
OMPI_ARRAY_NAME_DECL(psize_array);
*ierr = MPI_Type_create_darray(*size, *rank, *ndims, gsize_array, OMPI_ARRAY_FINT_2_INT(gsize_array, *ndims);
distrib_array, darg_array, psize_array, OMPI_ARRAY_FINT_2_INT(distrib_array, *ndims);
*order, c_old, &c_new); OMPI_ARRAY_FINT_2_INT(darg_array, *ndims);
OMPI_ARRAY_FINT_2_INT(psize_array, *ndims);
*ierr = OMPI_INT_2_FINT(MPI_Type_create_darray(OMPI_FINT_2_INT(*size),
OMPI_FINT_2_INT(*rank),
OMPI_FINT_2_INT(*ndims),
OMPI_ARRAY_NAME_CONVERT(gsize_array),
OMPI_ARRAY_NAME_CONVERT(distrib_array),
OMPI_ARRAY_NAME_CONVERT(darg_array),
OMPI_ARRAY_NAME_CONVERT(psize_array),
OMPI_FINT_2_INT(*order), c_old, &c_new));
OMPI_ARRAY_FINT_2_INT_CLEANUP(gsize_array);
OMPI_ARRAY_FINT_2_INT_CLEANUP(distrib_array);
OMPI_ARRAY_FINT_2_INT_CLEANUP(darg_array);
OMPI_ARRAY_FINT_2_INT_CLEANUP(psize_array);
if (MPI_SUCCESS == *ierr) { if (MPI_SUCCESS == *ierr) {
*newtype = MPI_Type_c2f(c_new); *newtype = MPI_Type_c2f(c_new);