Fortran Wrappers completed.
Reviewer: Tim Woddall --This aine, and those below, will be ignored-- M test_cancelled_f.c M test_f.c M testall_f.c M testany_f.c M testsome_f.c M wait_f.c M waitall_f.c M waitany_f.c M waitsome_f.c This commit was SVN r1355.
Этот коммит содержится в:
родитель
c990e162ea
Коммит
07e298e248
@ -48,5 +48,10 @@ 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;
|
||||
|
||||
*ierr = MPI_Test_cancelled(&c_status, flag);
|
||||
|
||||
if (*ierr == MPI_SUCCESS)
|
||||
MPI_Status_c2f(&c_status, status);
|
||||
}
|
||||
|
@ -48,5 +48,14 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TEST,
|
||||
|
||||
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;
|
||||
|
||||
*ierr = MPI_Test(&c_req, flag, &c_status);
|
||||
|
||||
MPI_Status_c2f( &c_status, status);
|
||||
|
||||
if ( (*ierr == MPI_SUCCESS) && (c_req == NULL) )
|
||||
*request = -1;
|
||||
|
||||
}
|
||||
|
@ -48,5 +48,38 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TESTALL,
|
||||
|
||||
void mpi_testall_f(MPI_Fint *count, MPI_Fint *array_of_requests, MPI_Fint *flag, MPI_Fint *array_of_statuses, MPI_Fint *ierr)
|
||||
{
|
||||
MPI_Request *c_req;
|
||||
MPI_Status *c_status;
|
||||
int i;
|
||||
|
||||
c_req = malloc(*count * sizeof(MPI_Request));
|
||||
if (c_req == NULL){
|
||||
*ierr = MPI_ERR_INTERN;
|
||||
return;
|
||||
}
|
||||
|
||||
c_status = malloc(*count * sizeof(MPI_Status));
|
||||
if (c_status == NULL){
|
||||
*ierr = MPI_ERR_INTERN;
|
||||
free(c_req);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < *count; i++) {
|
||||
c_req[i] = MPI_Request_f2c(array_of_requests[i]);
|
||||
}
|
||||
|
||||
*ierr = MPI_Testall(*count, c_req, flag, c_status);
|
||||
|
||||
if (*ierr == MPI_SUCCESS && *flag) {
|
||||
for (i = 0; i < *count; i++) {
|
||||
if (c_req[i] == NULL)
|
||||
array_of_requests[i] = -1;
|
||||
MPI_Status_c2f(&c_status[i], &array_of_statuses[i]);
|
||||
}
|
||||
}
|
||||
|
||||
free(c_req);
|
||||
free(c_status);
|
||||
|
||||
}
|
||||
|
@ -48,5 +48,28 @@ OMPI_GENERATE_F77_BINDINGS (MPI_TESTANY,
|
||||
|
||||
void mpi_testany_f(MPI_Fint *count, MPI_Fint *array_of_requests, MPI_Fint *index, MPI_Fint *flag, MPI_Fint *status, MPI_Fint *ierr)
|
||||
{
|
||||
MPI_Request *c_req;
|
||||
MPI_Status c_status;
|
||||
int i;
|
||||
|
||||
c_req = malloc(*count * sizeof(MPI_Request));
|
||||
if (c_req == NULL) {
|
||||
*ierr = MPI_ERR_INTERN;
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < *count; i++) {
|
||||
c_req[i] = MPI_Request_f2c(array_of_requests[i]);
|
||||
}
|
||||
|
||||
*ierr = MPI_Testany(*count, c_req, index, flag, &c_status);
|
||||
|
||||
if (*ierr == MPI_SUCCESS) {
|
||||
if (*index != MPI_UNDEFINED) {
|
||||
*index += 1;
|
||||
}
|
||||
MPI_Status_c2f(&c_status, status);
|
||||
}
|
||||
|
||||
free(c_req);
|
||||
}
|
||||
|
@ -48,5 +48,42 @@ OMPI_GENERATE_F77_BINDINGS (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)
|
||||
{
|
||||
MPI_Request *c_req;
|
||||
MPI_Status *c_status;
|
||||
int i;
|
||||
|
||||
c_req = malloc(*incount * sizeof(MPI_Request));
|
||||
if (c_req == NULL) {
|
||||
*ierr = MPI_ERR_INTERN;
|
||||
return;
|
||||
}
|
||||
|
||||
c_status = malloc(*incount * sizeof(MPI_Status));
|
||||
if (c_status == NULL){
|
||||
*ierr = MPI_ERR_INTERN;
|
||||
free(c_req);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < *incount; i++) {
|
||||
c_req[i] = MPI_Request_f2c(array_of_requests[i]);
|
||||
}
|
||||
|
||||
*ierr = MPI_Testsome(*incount, c_req, outcount, array_of_indices,
|
||||
c_status);
|
||||
|
||||
if (*ierr == MPI_SUCCESS) {
|
||||
if (*outcount != MPI_UNDEFINED) {
|
||||
for (i = 0; i < *outcount; i++) {
|
||||
array_of_indices[i] += 1;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < *outcount; i++) {
|
||||
MPI_Status_c2f(&c_status[i], &array_of_statuses[i]);
|
||||
}
|
||||
}
|
||||
|
||||
free(c_req);
|
||||
free(c_status);
|
||||
|
||||
}
|
||||
|
@ -48,5 +48,15 @@ OMPI_GENERATE_F77_BINDINGS (MPI_WAIT,
|
||||
|
||||
void mpi_wait_f(MPI_Fint *request, MPI_Fint *status, MPI_Fint *ierr)
|
||||
{
|
||||
MPI_Request c_req = MPI_Request_f2c(*request);
|
||||
MPI_Status c_status;
|
||||
|
||||
*ierr = MPI_Wait(&c_req, &c_status);
|
||||
|
||||
if (*ierr == MPI_SUCCESS) {
|
||||
/* reset request handle to MPI_REQUEST_NULL */
|
||||
*request = -1;
|
||||
MPI_Status_c2f(&c_status, status);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -48,5 +48,36 @@ OMPI_GENERATE_F77_BINDINGS (MPI_WAITALL,
|
||||
|
||||
void mpi_waitall_f(MPI_Fint *count, MPI_Fint *array_of_requests, MPI_Fint *array_of_statuses, MPI_Fint *ierr)
|
||||
{
|
||||
MPI_Request *c_req;
|
||||
MPI_Status *c_status;
|
||||
int i;
|
||||
|
||||
c_req = malloc(*count * sizeof(MPI_Request));
|
||||
if (c_req == NULL) {
|
||||
*ierr = MPI_ERR_INTERN;
|
||||
return;
|
||||
}
|
||||
c_status = malloc(*count * sizeof(MPI_Status));
|
||||
if (c_status == NULL) {
|
||||
*ierr = MPI_ERR_INTERN;
|
||||
free(c_req);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < *count; i++) {
|
||||
c_req[i] = MPI_Request_f2c(array_of_requests[i]);
|
||||
}
|
||||
|
||||
*ierr = MPI_Waitall(*count, c_req, c_status);
|
||||
|
||||
if (*ierr == MPI_SUCCESS) {
|
||||
for (i = 0; i < *count; i++) {
|
||||
if (c_req[i] == NULL)
|
||||
array_of_requests[i] = -1;
|
||||
MPI_Status_c2f( &c_status[i], &array_of_statuses[i]);
|
||||
}
|
||||
}
|
||||
free(c_req);
|
||||
free(c_status);
|
||||
|
||||
}
|
||||
|
@ -48,5 +48,31 @@ OMPI_GENERATE_F77_BINDINGS (MPI_WAITANY,
|
||||
|
||||
void mpi_waitany_f(MPI_Fint *count, MPI_Fint *array_of_requests, MPI_Fint *index, MPI_Fint *status, MPI_Fint *ierr)
|
||||
{
|
||||
MPI_Request *c_req;
|
||||
MPI_Status c_status;
|
||||
int i;
|
||||
|
||||
c_req = malloc(*count * sizeof(MPI_Request));
|
||||
if (c_req == NULL) {
|
||||
*ierr = MPI_ERR_INTERN;
|
||||
free(c_req);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < *count; i++) {
|
||||
c_req[i] = MPI_Request_f2c(array_of_requests[i]);
|
||||
}
|
||||
|
||||
*ierr = MPI_Waitany(*count, c_req, index, &c_status);
|
||||
|
||||
if (*ierr == MPI_SUCCESS) {
|
||||
/*
|
||||
* Increment index by one for fortran conventions
|
||||
*/
|
||||
if (*index != MPI_UNDEFINED) {
|
||||
*index += 1;
|
||||
}
|
||||
MPI_Status_c2f( &c_status, status);
|
||||
}
|
||||
free(c_req);
|
||||
}
|
||||
|
@ -48,5 +48,43 @@ OMPI_GENERATE_F77_BINDINGS (MPI_WAITSOME,
|
||||
|
||||
void mpi_waitsome_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)
|
||||
{
|
||||
MPI_Request *c_req;
|
||||
MPI_Status *c_status;
|
||||
int i;
|
||||
|
||||
c_req = malloc(*incount * sizeof(MPI_Request));
|
||||
if (c_req == NULL) {
|
||||
*ierr = MPI_ERR_INTERN;
|
||||
return;
|
||||
}
|
||||
c_status = malloc(*incount * sizeof(MPI_Status));
|
||||
if (c_status == NULL) {
|
||||
*ierr = MPI_ERR_INTERN;
|
||||
free(c_req);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < *incount; i++) {
|
||||
c_req[i] = MPI_Request_f2c(array_of_requests[i]);
|
||||
}
|
||||
|
||||
*ierr = MPI_Waitsome(*incount, c_req, outcount, array_of_indices,
|
||||
c_status);
|
||||
|
||||
if (*ierr == MPI_SUCCESS) {
|
||||
/*
|
||||
* Increment indexes by one for fortran conventions
|
||||
*/
|
||||
if (*outcount != MPI_UNDEFINED) {
|
||||
for (i = 0; i < *outcount; i++) {
|
||||
array_of_indices[i] += 1;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < *incount; i++) {
|
||||
MPI_Status_c2f(&c_status[i], &array_of_statuses[i]);
|
||||
}
|
||||
}
|
||||
|
||||
free(c_req);
|
||||
free(c_status);
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user