Example #1
0
int MPI_Reduce_scatter(const void* sbuff, void* rbuff, const int rcnts[], 
                       MPI_Datatype dt, MPI_Op op, MPI_Comm comm)
{
    int g2g = 1;
    char call[COLLCHK_SM_STRLEN];

    sprintf(call, "REDUCE_SCATTER");

    /* Check if init has been called */
    g2g = CollChk_is_init();

    if(g2g) {
        /* check for call consistancy */
        CollChk_same_call(comm, call);
        /* check for MPI_IN_PLACE consistency if needed */
        CollChk_check_buff(comm, sbuff, call);
        /* check for same operation */
        CollChk_same_op(comm, op, call);

        /* check for same datatypes */
        CollChk_dtype_bcast(comm, dt, 1, 0, call);

        /* make the call */
        return PMPI_Reduce_scatter(sbuff, rbuff, rcnts, dt, op, comm);
    }
    else {
        /* init not called */
        return CollChk_err_han("MPI_Init() has not been called!",
                               COLLCHK_ERR_NOT_INIT, call, comm);
    }
}
Example #2
0
int MPI_Reduce(void* sbuff, void* rbuff, int cnt, MPI_Datatype dt,
               MPI_Op op, int root, MPI_Comm comm)
{
    int g2g = 1;
    char call[COLLCHK_SM_STRLEN];

    sprintf(call, "REDUCE");

    /* Check if init has been called */
    g2g = CollChk_is_init();

    if(g2g) {
        /* check call consistancy */
        CollChk_same_call(comm, call);
        /* check root consistancy */
        CollChk_same_root(comm, root, call);
        /* check operation consistancy */
        CollChk_same_op(comm, op, call);

        /* check datatype signature consistancy */
        CollChk_dtype_bcast(comm, dt, cnt, root, call);

        /* make the call */
        return PMPI_Reduce(sbuff, rbuff, cnt, dt, op, root, comm);
    }
    else {
        /* init not called */
        return CollChk_err_han("MPI_Init() has not been called!",
                               COLLCHK_ERR_NOT_INIT, call, comm);
    }
}