More bindings
This commit was SVN r2647.
Этот коммит содержится в:
родитель
ff8fda793c
Коммит
b6b0de9d8f
@ -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)
|
||||
{
|
||||
MPI_Status c_status;
|
||||
OMPI_SINGLE_NAME_DECL(flag);
|
||||
|
||||
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"
|
||||
#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_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);
|
||||
|
||||
if ( (MPI_SUCCESS == *ierr) && (NULL == c_req) ) {
|
||||
|
@ -52,16 +52,22 @@ OMPI_GENERATE_F77_BINDINGS (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_Status *c_status;
|
||||
int i;
|
||||
OMPI_SINGLE_NAME_DECL(outcount);
|
||||
OMPI_ARRAY_NAME_DECL(array_of_indices);
|
||||
|
||||
c_req = malloc(*incount * (sizeof(MPI_Request) + sizeof(MPI_Status)));
|
||||
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);
|
||||
*ierr = OMPI_INT_2_FINT(c_err);
|
||||
return;
|
||||
}
|
||||
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]);
|
||||
}
|
||||
|
||||
*ierr = MPI_Testsome(*incount, c_req, outcount, array_of_indices,
|
||||
c_status);
|
||||
OMPI_ARRAY_FINT_2_INT_ALLOC(array_of_indices, *incount);
|
||||
*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_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);
|
||||
|
||||
*ierr = MPI_Type_commit(&c_type);
|
||||
*ierr = OMPI_INT_2_FINT(MPI_Type_commit(&c_type));
|
||||
|
||||
if (MPI_SUCCESS == *ierr) {
|
||||
*type = MPI_Type_c2f(c_type);
|
||||
|
@ -46,12 +46,14 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TYPE_CONTIGUOUS,
|
||||
#include "mpi/f77/profile/defines.h"
|
||||
#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_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) {
|
||||
*newtype = MPI_Type_c2f(c_new);
|
||||
|
@ -46,14 +46,38 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TYPE_CREATE_DARRAY,
|
||||
#include "mpi/f77/profile/defines.h"
|
||||
#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_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,
|
||||
distrib_array, darg_array, psize_array,
|
||||
*order, c_old, &c_new);
|
||||
OMPI_ARRAY_FINT_2_INT(gsize_array, *ndims);
|
||||
OMPI_ARRAY_FINT_2_INT(distrib_array, *ndims);
|
||||
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) {
|
||||
*newtype = MPI_Type_c2f(c_new);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user