|
1 | 1 | /* |
2 | 2 | * Copyright (c) 2012 Oak Rigde National Laboratory. All rights reserved. |
3 | | - * Copyright (c) 2015-2019 Research Organization for Information Science |
| 3 | + * Copyright (c) 2015-2020 Research Organization for Information Science |
4 | 4 | * and Technology (RIST). All rights reserved. |
5 | 5 | * Copyright (c) 2017-2018 The University of Tennessee and The University |
6 | 6 | * of Tennessee Research Foundation. All rights |
@@ -42,8 +42,24 @@ int MPI_Ibcast(void *buffer, int count, MPI_Datatype datatype, |
42 | 42 |
|
43 | 43 | MEMCHECKER( |
44 | 44 | memchecker_datatype(datatype); |
45 | | - memchecker_call(&opal_memchecker_base_isdefined, buffer, count, datatype); |
46 | 45 | memchecker_comm(comm); |
| 46 | + if (OMPI_COMM_IS_INTRA(comm)) { |
| 47 | + if (ompi_comm_rank(comm) == root) { |
| 48 | + /* check whether root's send buffer is defined. */ |
| 49 | + memchecker_call(&opal_memchecker_base_isdefined, buffer, count, datatype); |
| 50 | + } else { |
| 51 | + /* check whether receive buffer is addressable. */ |
| 52 | + memchecker_call(&opal_memchecker_base_isaddressable, buffer, count, datatype); |
| 53 | + } |
| 54 | + } else { |
| 55 | + if (MPI_ROOT == root) { |
| 56 | + /* check whether root's send buffer is defined. */ |
| 57 | + memchecker_call(&opal_memchecker_base_isdefined, buffer, count, datatype); |
| 58 | + } else if (MPI_PROC_NULL != root) { |
| 59 | + /* check whether receive buffer is addressable. */ |
| 60 | + memchecker_call(&opal_memchecker_base_isaddressable, buffer, count, datatype); |
| 61 | + } |
| 62 | + } |
47 | 63 | ); |
48 | 64 |
|
49 | 65 | if (MPI_PARAM_CHECK) { |
|
0 commit comments