|
Packit |
0848f5 |
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
|
|
Packit |
0848f5 |
/*
|
|
Packit |
0848f5 |
*
|
|
Packit |
0848f5 |
* (C) 2001 by Argonne National Laboratory.
|
|
Packit |
0848f5 |
* See COPYRIGHT in top-level directory.
|
|
Packit |
0848f5 |
*/
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
#include "mpiimpl.h"
|
|
Packit |
0848f5 |
#include "oputil.h"
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
/*
|
|
Packit |
0848f5 |
* In MPI-2.1, this operation is valid only for C integer, Fortran integer,
|
|
Packit |
0848f5 |
* and floating point types (5.9.2 Predefined reduce operations)
|
|
Packit |
0848f5 |
*/
|
|
Packit |
0848f5 |
#undef FUNCNAME
|
|
Packit |
0848f5 |
#define FUNCNAME MPIR_MINF
|
|
Packit |
0848f5 |
#undef FCNAME
|
|
Packit |
0848f5 |
#define FCNAME MPL_QUOTE(FUNCNAME)
|
|
Packit |
0848f5 |
void MPIR_MINF (
|
|
Packit |
0848f5 |
void *invec,
|
|
Packit |
0848f5 |
void *inoutvec,
|
|
Packit |
0848f5 |
int *Len,
|
|
Packit |
0848f5 |
MPI_Datatype *type )
|
|
Packit |
0848f5 |
{
|
|
Packit |
0848f5 |
int i, len = *Len;
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
switch (*type) {
|
|
Packit |
0848f5 |
#undef MPIR_OP_TYPE_MACRO
|
|
Packit |
0848f5 |
#define MPIR_OP_TYPE_MACRO(mpi_type_, c_type_, type_name_) MPIR_OP_TYPE_REDUCE_CASE(mpi_type_, c_type_, MPIR_MIN)
|
|
Packit |
0848f5 |
/* no semicolons by necessity */
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(C_INTEGER)
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(FORTRAN_INTEGER)
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(FLOATING_POINT)
|
|
Packit |
0848f5 |
/* extra types that are not required to be supported by the MPI Standard */
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(C_INTEGER_EXTRA)
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(FORTRAN_INTEGER_EXTRA)
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(FLOATING_POINT_EXTRA)
|
|
Packit |
0848f5 |
#undef MPIR_OP_TYPE_MACRO
|
|
Packit |
0848f5 |
/* --BEGIN ERROR HANDLING-- */
|
|
Packit |
0848f5 |
default: {
|
|
Packit |
0848f5 |
MPID_THREADPRIV_DECL;
|
|
Packit |
0848f5 |
MPID_THREADPRIV_GET;
|
|
Packit |
0848f5 |
MPID_THREADPRIV_FIELD(op_errno) = MPIR_Err_create_code( MPI_SUCCESS, MPIR_ERR_RECOVERABLE, FCNAME, __LINE__, MPI_ERR_OP, "**opundefined","**opundefined %s", "MPI_MIN" );
|
|
Packit |
0848f5 |
break;
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
/* --END ERROR HANDLING-- */
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
|
|
Packit |
0848f5 |
#undef FUNCNAME
|
|
Packit |
0848f5 |
#define FUNCNAME MPIR_MINF_check_dtype
|
|
Packit |
0848f5 |
#undef FCNAME
|
|
Packit |
0848f5 |
#define FCNAME MPL_QUOTE(FUNCNAME)
|
|
Packit |
0848f5 |
int MPIR_MINF_check_dtype ( MPI_Datatype type )
|
|
Packit |
0848f5 |
{
|
|
Packit |
0848f5 |
switch (type) {
|
|
Packit |
0848f5 |
#undef MPIR_OP_TYPE_MACRO
|
|
Packit |
0848f5 |
#define MPIR_OP_TYPE_MACRO(mpi_type_, c_type_, type_name_) case (mpi_type_):
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(C_INTEGER)
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(FORTRAN_INTEGER)
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(FLOATING_POINT)
|
|
Packit |
0848f5 |
/* extra types that are not required to be supported by the MPI Standard */
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(C_INTEGER_EXTRA)
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(FORTRAN_INTEGER_EXTRA)
|
|
Packit |
0848f5 |
MPIR_OP_TYPE_GROUP(FLOATING_POINT_EXTRA)
|
|
Packit |
0848f5 |
#undef MPIR_OP_TYPE_MACRO
|
|
Packit |
0848f5 |
return MPI_SUCCESS;
|
|
Packit |
0848f5 |
/* --BEGIN ERROR HANDLING-- */
|
|
Packit |
0848f5 |
default:
|
|
Packit |
0848f5 |
return MPIR_Err_create_code( MPI_SUCCESS, MPIR_ERR_RECOVERABLE, FCNAME, __LINE__, MPI_ERR_OP, "**opundefined","**opundefined %s", "MPI_MIN" );
|
|
Packit |
0848f5 |
/* --END ERROR HANDLING-- */
|
|
Packit |
0848f5 |
}
|
|
Packit |
0848f5 |
}
|