Skip to content

Commit e2c5ce0

Browse files
authored
Merge pull request #2927 from jjhursey/topic/ibm/v2.0.x/osc-base-dt-abort
osc/base: Detect unsupported data types and abort
2 parents f357f39 + 2ab65cb commit e2c5ce0

File tree

4 files changed

+83
-0
lines changed

4 files changed

+83
-0
lines changed

ompi/mca/osc/base/Makefile.am

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@
77
# University of Stuttgart. All rights reserved.
88
# Copyright (c) 2004-2005 The Regents of the University of California.
99
# All rights reserved.
10+
# Copyright (c) 2017 IBM Corporation. All rights reserved.
1011
# $COPYRIGHT$
1112
#
1213
# Additional copyrights may follow
1314
#
1415
# $HEADER$
1516
#
1617

18+
dist_ompidata_DATA = base/help-mca-osc-base.txt
19+
1720
headers += \
1821
base/base.h \
1922
base/osc_base_obj_convert.h
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# -*- text -*-
2+
#
3+
# Copyright (c) 2017 IBM Corporation. All rights reserved.
4+
# $COPYRIGHT$
5+
#
6+
# Additional copyrights may follow
7+
#
8+
# $HEADER$
9+
#
10+
# This is the US/English help file for Open MPI MCA osc-specific
11+
# error messages.
12+
#
13+
[unsupported-dt]
14+
Unsupported datatype and op combination used in a one-sided operation.
15+
16+
Datatype : %s
17+
Operation: %s
18+
Rank : %d

ompi/mca/osc/base/osc_base_obj_convert.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
* and Technology (RIST). All rights reserved.
1616
* Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
1717
* Copyright (c) 2015 Intel, Inc. All rights reserved.
18+
* Copyright (c) 2017 IBM Corporation. All rights reserved.
1819
* $COPYRIGHT$
1920
*
2021
* Additional copyrights may follow
@@ -31,6 +32,7 @@
3132
#include "opal/datatype/opal_convertor.h"
3233
#include "opal/datatype/opal_convertor_internal.h"
3334
#include "opal/datatype/opal_datatype_prototypes.h"
35+
#include "opal/util/show_help.h"
3436

3537
#include "ompi/op/op.h"
3638
#include "ompi/datatype/ompi_datatype.h"
@@ -76,6 +78,24 @@ int ompi_osc_base_process_op (void *outbuf, void *inbuf, size_t inbuflen,
7678
return OMPI_ERR_NOT_SUPPORTED;
7779
}
7880

81+
/* TODO: Remove the following check when support is added.
82+
* See the following issue for the current state:
83+
* https://github.com/open-mpi/ompi/issues/1666
84+
*/
85+
if(MPI_MINLOC == op || MPI_MAXLOC == op) {
86+
if(MPI_SHORT_INT == datatype ||
87+
MPI_DOUBLE_INT == datatype ||
88+
MPI_LONG_INT == datatype ||
89+
MPI_LONG_DOUBLE_INT == datatype) {
90+
ompi_communicator_t *comm = &ompi_mpi_comm_world.comm;
91+
opal_show_help("help-mca-osc-base.txt", "unsupported-dt", true,
92+
datatype->name,
93+
op->o_name,
94+
comm->c_my_rank);
95+
ompi_mpi_abort(comm, -1);
96+
}
97+
}
98+
7999
if (ompi_datatype_is_predefined(datatype)) {
80100
ompi_op_reduce(op, inbuf, outbuf, count, datatype);
81101
} else {

ompi/mca/osc/rdma/osc_rdma_accumulate.c

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
/*
33
* Copyright (c) 2014-2015 Los Alamos National Security, LLC. All rights
44
* reserved.
5+
* Copyright (c) 2017 IBM Corporation. All rights reserved.
56
* $COPYRIGHT$
67
*
78
* Additional copyrights may follow
@@ -12,6 +13,7 @@
1213
#include "osc_rdma_accumulate.h"
1314
#include "osc_rdma_request.h"
1415
#include "osc_rdma_comm.h"
16+
#include "opal/util/show_help.h"
1517

1618
#include "ompi/mca/osc/base/osc_base_obj_convert.h"
1719

@@ -753,6 +755,46 @@ int ompi_osc_rdma_rget_accumulate_internal (ompi_osc_rdma_sync_t *sync, const vo
753755
return OMPI_SUCCESS;
754756
}
755757

758+
/* TODO: Remove the following check when support is added.
759+
* See the following issue for the current state:
760+
* https://github.com/open-mpi/ompi/issues/1666
761+
*/
762+
if(MPI_MINLOC == op || MPI_MAXLOC == op) {
763+
if(MPI_SHORT_INT == origin_datatype ||
764+
MPI_DOUBLE_INT == origin_datatype ||
765+
MPI_LONG_INT == origin_datatype ||
766+
MPI_LONG_DOUBLE_INT == origin_datatype) {
767+
ompi_communicator_t *comm = &ompi_mpi_comm_world.comm;
768+
opal_show_help("help-mca-osc-base.txt", "unsupported-dt", true,
769+
origin_datatype->name,
770+
op->o_name,
771+
comm->c_my_rank);
772+
ompi_mpi_abort(comm, -1);
773+
}
774+
if(MPI_SHORT_INT == result_datatype ||
775+
MPI_DOUBLE_INT == result_datatype ||
776+
MPI_LONG_INT == result_datatype ||
777+
MPI_LONG_DOUBLE_INT == result_datatype) {
778+
ompi_communicator_t *comm = &ompi_mpi_comm_world.comm;
779+
opal_show_help("help-mca-osc-base.txt", "unsupported-dt", true,
780+
result_datatype->name,
781+
op->o_name,
782+
comm->c_my_rank);
783+
ompi_mpi_abort(comm, -1);
784+
}
785+
if(MPI_SHORT_INT == target_datatype ||
786+
MPI_DOUBLE_INT == target_datatype ||
787+
MPI_LONG_INT == target_datatype ||
788+
MPI_LONG_DOUBLE_INT == target_datatype) {
789+
ompi_communicator_t *comm = &ompi_mpi_comm_world.comm;
790+
opal_show_help("help-mca-osc-base.txt", "unsupported-dt", true,
791+
target_datatype->name,
792+
op->o_name,
793+
comm->c_my_rank);
794+
ompi_mpi_abort(comm, -1);
795+
}
796+
}
797+
756798
ret = osc_rdma_get_remote_segment (module, peer, target_disp, target_datatype->super.size * target_count,
757799
&target_address, &target_handle);
758800
if (OPAL_UNLIKELY(OMPI_SUCCESS != ret)) {

0 commit comments

Comments
 (0)