Shame on me for not looking at the expanded collective datatype tables
for the C++ bindings in MPI-2 p276-278 to see that MPI_BOOL should work with MPI_LAND, MPI_LOR, and MPI_LXOR. Thanks to Andy Selle for pointing this out. This commit was SVN r9200.
Этот коммит содержится в:
родитель
bd109c90f5
Коммит
a192af34e7
2
NEWS
2
NEWS
@ -35,6 +35,8 @@ version 1.0.
|
||||
1.0.2
|
||||
-----
|
||||
|
||||
- Added MPI_BOOL to the intrinsic reduction operations MPI_LAND,
|
||||
MPI_LOR, MPI_LXOR. Thanks to Andy Selle for pointing this out to us.
|
||||
- Fixed TCP BTL network matching logic during MPI_INIT; in some cases
|
||||
on multi-NIC nodes, a NIC could get paired with a NIC on another
|
||||
network (typically resulting in deadlock). Thanks to Ken Mighell
|
||||
|
14
ompi/op/op.c
14
ompi/op/op.c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||
* Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
|
||||
* University Research and Technology
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||
@ -202,13 +202,18 @@ OBJ_CLASS_INSTANCE(ompi_op_t, opal_object_t,
|
||||
/** Fortran logical *****************************************************/
|
||||
|
||||
#if OMPI_HAVE_FORTRAN_LOGICAL
|
||||
#define LOGICAL(name) \
|
||||
#define FORTRAN_LOGICAL(name) \
|
||||
{ ompi_mpi_op_##name##_fortran_logical } /* OMPI_OP_TYPE_LOGICAL */
|
||||
#else
|
||||
#define LOGICAL(name) { NULL }
|
||||
#define FORTRAN_LOGICAL(name) { NULL }
|
||||
#endif
|
||||
#define LOGICAL(name) \
|
||||
FORTRAN_LOGICAL(name), \
|
||||
{ ompi_mpi_op_##name##_bool } /* OMPI_OP_TYPE_BOOL */
|
||||
|
||||
#define LOGICAL_NULL \
|
||||
{ NULL } /* OMPI_OP_TYPE_LOGICAL */
|
||||
{ NULL }, /* OMPI_OP_TYPE_LOGICAL */ \
|
||||
{ NULL } /* OMPI_OP_TYPE_BOOL */
|
||||
|
||||
/** Fortran complex *****************************************************/
|
||||
|
||||
@ -605,6 +610,7 @@ int ompi_op_init(void)
|
||||
ompi_op_ddt_map[DT_COMPLEX_FLOAT] = OMPI_OP_TYPE_COMPLEX;
|
||||
ompi_op_ddt_map[DT_COMPLEX_DOUBLE] = OMPI_OP_TYPE_DOUBLE_COMPLEX;
|
||||
ompi_op_ddt_map[DT_LOGIC] = OMPI_OP_TYPE_LOGICAL;
|
||||
ompi_op_ddt_map[DT_CXX_BOOL] = OMPI_OP_TYPE_BOOL;
|
||||
ompi_op_ddt_map[DT_FLOAT_INT] = OMPI_OP_TYPE_FLOAT_INT;
|
||||
ompi_op_ddt_map[DT_DOUBLE_INT] = OMPI_OP_TYPE_DOUBLE_INT;
|
||||
ompi_op_ddt_map[DT_LONG_INT] = OMPI_OP_TYPE_LONG_INT;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||
* Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
|
||||
* University Research and Technology
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||
@ -127,6 +127,8 @@ enum {
|
||||
|
||||
OMPI_OP_TYPE_LOGICAL,
|
||||
/**< Logical */
|
||||
OMPI_OP_TYPE_BOOL,
|
||||
/**< Bool */
|
||||
|
||||
OMPI_OP_TYPE_COMPLEX,
|
||||
/**< Complex */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||
* Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
|
||||
* University Research and Technology
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||
@ -404,6 +404,8 @@ FUNC_FUNC(land, unsigned_long_long, unsigned long long)
|
||||
#if OMPI_HAVE_FORTRAN_LOGICAL
|
||||
FUNC_FUNC(land, fortran_logical, ompi_fortran_logical_t)
|
||||
#endif
|
||||
/* C++ bool */
|
||||
FUNC_FUNC(land, bool, bool)
|
||||
|
||||
/*************************************************************************
|
||||
* Logical OR
|
||||
@ -427,6 +429,8 @@ FUNC_FUNC(lor, unsigned_long_long, unsigned long long)
|
||||
#if OMPI_HAVE_FORTRAN_LOGICAL
|
||||
FUNC_FUNC(lor, fortran_logical, ompi_fortran_logical_t)
|
||||
#endif
|
||||
/* C++ bool */
|
||||
FUNC_FUNC(lor, bool, bool)
|
||||
|
||||
/*************************************************************************
|
||||
* Logical XOR
|
||||
@ -450,6 +454,8 @@ FUNC_FUNC(lxor, unsigned_long_long, unsigned long long)
|
||||
#if OMPI_HAVE_FORTRAN_LOGICAL
|
||||
FUNC_FUNC(lxor, fortran_logical, ompi_fortran_logical_t)
|
||||
#endif
|
||||
/* C++ bool */
|
||||
FUNC_FUNC(lxor, bool, bool)
|
||||
|
||||
/*************************************************************************
|
||||
* Bitwise AND
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||
* Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
|
||||
* University Research and Technology
|
||||
* Corporation. All rights reserved.
|
||||
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||
@ -125,7 +125,8 @@
|
||||
/* Logical */
|
||||
|
||||
#define OMPI_OP_HANDLER_LOGICAL(name) \
|
||||
void ompi_mpi_op_##name##_fortran_logical OMPI_OP_PROTO;
|
||||
void ompi_mpi_op_##name##_fortran_logical OMPI_OP_PROTO; \
|
||||
void ompi_mpi_op_##name##_bool OMPI_OP_PROTO;
|
||||
|
||||
/* Complex */
|
||||
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user