1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
/*
* Copyright (C) by Argonne National Laboratory
* See COPYRIGHT in top-level directory
*/
#include "mpi.h"
#include <stdio.h>
#include <assert.h>
#include "mpitest.h"
int main(int argc, char *argv[])
{
int errs = 0;
int ret;
MPI_Session session;
MPI_Group group;
MPI_Comm comm;
ret = MPI_Session_init(MPI_INFO_NULL, MPI_ERRORS_RETURN, &session);
if (ret != MPI_SUCCESS) {
errs++;
goto fn_exit;
}
ret = MPI_Group_from_session_pset(session, "mpi://self", &group);
if (ret != MPI_SUCCESS) {
errs++;
}
ret = MPI_Comm_create_from_group(group, "tag", MPI_INFO_NULL, MPI_ERRORS_RETURN, &comm);
if (ret != MPI_SUCCESS) {
errs++;
}
ret = MPI_Group_free(&group);
if (ret != MPI_SUCCESS) {
errs++;
}
MPI_Request req;
int send_data, recv_data;
int rank = 0;
int tag = 0;
ret = MPI_Irecv(&recv_data, 1, MPI_INT, rank, tag, comm, &req);
if (ret != MPI_SUCCESS) {
errs++;
}
ret = MPI_Send(&send_data, 1, MPI_INT, rank, tag, comm);
if (ret != MPI_SUCCESS) {
errs++;
}
ret = MPI_Wait(&req, MPI_STATUS_IGNORE);
if (ret != MPI_SUCCESS) {
errs++;
}
ret = MPI_Comm_free(&comm);
if (ret != MPI_SUCCESS) {
errs++;
}
ret = MPI_Session_finalize(&session);
if (ret != MPI_SUCCESS) {
errs++;
}
if (errs == 0) {
printf("No Errors\n");
}
fn_exit:
return errs;
}
|