1
1
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.
Этот коммит содержится в:
Ginger Young 2004-06-17 12:22:46 +00:00
родитель c990e162ea
Коммит 07e298e248
9 изменённых файлов: 212 добавлений и 0 удалений

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

@ -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);
}