Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/ompi_mpi4py.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -113,27 +113,27 @@ jobs:
CFLAGS: "-O0"

- name: Test mpi4py (singleton)
run: python test/main.py -v -x TestExcErrhandlerNull
run: python test/main.py -v -x testContiguousBigMPI
if: ${{ true }}
timeout-minutes: 10
- name: Test mpi4py (np=1)
run: mpiexec -n 1 python test/main.py -v -x TestExcErrhandlerNull
run: mpiexec -n 1 python test/main.py -v -x testContiguousBigMPI
if: ${{ true }}
timeout-minutes: 10
- name: Test mpi4py (np=2)
run: mpiexec -n 2 python test/main.py -v -f -x TestExcErrhandlerNull
run: mpiexec -n 2 python test/main.py -v -f -x testContiguousBigMPI
if: ${{ true }}
timeout-minutes: 10
- name: Test mpi4py (np=3)
run: mpiexec -n 3 python test/main.py -v -f -x TestExcErrhandlerNull
run: mpiexec -n 3 python test/main.py -v -f -x testContiguousBigMPI
if: ${{ true }}
timeout-minutes: 10
- name: Test mpi4py (np=4)
run: mpiexec -n 4 python test/main.py -v -f -x TestExcErrhandlerNull
run: mpiexec -n 4 python test/main.py -v -f -x testContiguousBigMPI
if: ${{ true }}
timeout-minutes: 10
- name: Test mpi4py (np=5)
run: mpiexec -n 5 python test/main.py -v -f -x TestExcErrhandlerNull
run: mpiexec -n 5 python test/main.py -v -f -x testContiguousBigMPI
if: ${{ true }}
timeout-minutes: 10

Expand All @@ -151,7 +151,7 @@ jobs:
echo LD_LIBRARY_PATH=/opt/ompi/lib >> $GITHUB_ENV

- name: Test mpi4py (singleton)
run: python test/main.py -v -x TestExcErrhandlerNull
run: python test/main.py -v -x testContiguousBigMPI
if: ${{ true }}
timeout-minutes: 10

2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ minor=1
release=0

# MPI Standard Compliance Level
mpi_standard_version=3
mpi_standard_version=4
mpi_standard_subversion=1

# OMPI required dependency versions.
Expand Down
4 changes: 2 additions & 2 deletions ompi/mpi/c/request_get_status_all.c.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* Copyright (c) 2006-2010 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2024 Triad National Security, LLC. All rights
* Copyright (c) 2024-2025 Triad National Security, LLC. All rights
* reserved.
* Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved
*
Expand Down Expand Up @@ -110,7 +110,7 @@ PROTOTYPE ERROR_CLASS request_get_status_all(INT count, REQUEST_CONST requests:c
for (i = 0; i < count; i++) {
if( (requests[i] == MPI_REQUEST_NULL) || (requests[i]->req_state == OMPI_REQUEST_INACTIVE) ) {
if (MPI_STATUS_IGNORE != statuses) {
OMPI_COPY_STATUS(&statuses[i], ompi_status_empty, false);
OMPI_COPY_STATUS(&statuses[i], ompi_status_empty, true);
}
}
/* If this is a generalized request, we *always* have to call
Expand Down
6 changes: 3 additions & 3 deletions ompi/mpi/c/request_get_status_any.c.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* Copyright (c) 2006-2010 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2024 Triad National Security, LLC. All rights
* Copyright (c) 2024-2025 Triad National Security, LLC. All rights
* reserved.
* Copyright (c) 2025 Advanced Micro Devices, Inc. All rights reserved
*
Expand Down Expand Up @@ -73,7 +73,7 @@ PROTOTYPE ERROR_CLASS request_get_status_any(INT count, REQUEST_CONST requests:c
*flag = true;
*indx = MPI_UNDEFINED;
if (MPI_STATUS_IGNORE != status) {
OMPI_COPY_STATUS(status, ompi_status_empty, false);
OMPI_COPY_STATUS(status, ompi_status_empty, true);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not what the standard mandates. Section 3.2.5 it states:

... message-passing calls do not modify the value of the error code field of
status variables. This field may be updated only by the functions in Section 3.7.5 that
return multiple statuses. The field is updated if and only if such function returns with an
error code of MPI_ERR_IN_STATUS.

In most of these cases the return is MPI_SUCCESS so the MPI_ERROR shall not be modified.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there are multiple places in the standard where it states an empty status object is to be returned. see my comments below about that.

}
return MPI_SUCCESS;
}
Expand Down Expand Up @@ -115,7 +115,7 @@ PROTOTYPE ERROR_CLASS request_get_status_any(INT count, REQUEST_CONST requests:c
*flag = true;
*indx = MPI_UNDEFINED;
if (MPI_STATUS_IGNORE != status) {
OMPI_COPY_STATUS(status, ompi_status_empty, false);
OMPI_COPY_STATUS(status, ompi_status_empty, true);
}
return MPI_SUCCESS;
}
Expand Down
4 changes: 2 additions & 2 deletions ompi/mpi/c/testany.c.in
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
* reserved.
* Copyright (c) 2014-2015 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2021-2024 Triad National Security, LLC. All rights
* Copyright (c) 2021-2025 Triad National Security, LLC. All rights
* reserved.
* Copyright (c) 2024 NVIDIA Corporation. All rights reserved.
* $COPYRIGHT$
Expand Down Expand Up @@ -67,7 +67,7 @@ PROTOTYPE ERROR_CLASS testany(INT count, REQUEST_INOUT requests, INT_OUT indx, I
*completed = true;
*indx = MPI_UNDEFINED;
if (MPI_STATUS_IGNORE != status) {
OMPI_COPY_STATUS(status, ompi_status_empty, false);
OMPI_COPY_STATUS(status, ompi_status_empty, true);
}
return MPI_SUCCESS;
}
Expand Down
5 changes: 3 additions & 2 deletions ompi/mpi/c/wait.c.in
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* and Technology (RIST). All rights reserved.
* Copyright (c) 2024 Triad National Security, LLC. All rights
* reserved.
* Copyright (c) 2024 Triad National Security, LLC. All rights
* Copyright (c) 2024-2025 Triad National Security, LLC. All rights
* reserved.
* $COPYRIGHT$
*
Expand Down Expand Up @@ -52,9 +52,10 @@ PROTOTYPE ERROR_CLASS wait(REQUEST_INOUT request, STATUS_OUT status)

if (MPI_REQUEST_NULL == *request) {
if (MPI_STATUS_IGNORE != status) {
OMPI_COPY_STATUS(status, ompi_status_empty, false);
OMPI_COPY_STATUS(status, ompi_status_empty, true);
/*
* Per MPI-1, the MPI_ERROR field is not defined for single-completion calls
* Rules changed later apparently. See section 3.7.3 of the MPI 4.1 standard.
*/
MEMCHECKER(
opal_memchecker_base_mem_undefined(&status->MPI_ERROR, sizeof(int));
Expand Down
4 changes: 2 additions & 2 deletions ompi/mpi/c/waitany.c.in
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
* Copyright (c) 2021-2024 Triad National Security, LLC. All rights
* reserved.
* Copyright (c) 2024 NVIDIA Corporation. All rights reserved.
* Copyright (c) 2024 Triad National Security, LLC. All rights
* Copyright (c) 2024-2025 Triad National Security, LLC. All rights
* reserved.
* $COPYRIGHT$
*
Expand Down Expand Up @@ -68,7 +68,7 @@ PROTOTYPE ERROR_CLASS waitany(INT count, REQUEST_INOUT requests, INT_OUT indx, S
if (OPAL_UNLIKELY(0 == count)) {
*indx = MPI_UNDEFINED;
if (MPI_STATUS_IGNORE != status) {
OMPI_COPY_STATUS(status, ompi_status_empty, false);
OMPI_COPY_STATUS(status, ompi_status_empty, true);
}
return MPI_SUCCESS;
}
Expand Down
11 changes: 9 additions & 2 deletions ompi/request/request.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
* Copyright (c) 2015-2024 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* Copyright (c) 2018 FUJITSU LIMITED. All rights reserved.
* Copyright (c) 2018 Triad National Security, LLC. All rights
* Copyright (c) 2018-2025 Triad National Security, LLC. All rights
* reserved.
* Copyright (c) 2022 IBM Corporation. All rights reserved.
* Copyright (c) 2024 NVIDIA Corporation. All rights reserved.
Expand Down Expand Up @@ -47,7 +47,14 @@ ompi_request_t ompi_request_empty = {{{{0}}}};
#if MPI_VERSION >= 4
ompi_request_t ompi_request_empty_send = {{{{0}}}};
#endif
ompi_status_public_t ompi_status_empty = {0};
/*
* See section 3.7.3 of the MPI 1.3 (probably older as well) MPI standard
*/
ompi_status_public_t ompi_status_empty = {.MPI_TAG = MPI_ANY_TAG,
.MPI_SOURCE = MPI_ANY_SOURCE,
.MPI_ERROR = MPI_SUCCESS,
._cancelled = 0,
._ucount = 0UL};
ompi_request_fns_t ompi_request_functions = {
ompi_request_default_test,
ompi_request_default_test_any,
Expand Down