From 6e35cd8b5aa71d80be9cd34a6b77dd7951a18e16 Mon Sep 17 00:00:00 2001 From: Augustin Degomme Date: Fri, 17 Nov 2023 22:44:47 +0100 Subject: [PATCH] add one more test --- .../smpi/mpich3-test/pt2pt/CMakeLists.txt | 5 +- teshsuite/smpi/mpich3-test/pt2pt/pssend.c | 53 +++++++++++++++++++ teshsuite/smpi/mpich3-test/pt2pt/testlist | 1 + 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 teshsuite/smpi/mpich3-test/pt2pt/pssend.c diff --git a/teshsuite/smpi/mpich3-test/pt2pt/CMakeLists.txt b/teshsuite/smpi/mpich3-test/pt2pt/CMakeLists.txt index 1c20021fea..3844964fe3 100644 --- a/teshsuite/smpi/mpich3-test/pt2pt/CMakeLists.txt +++ b/teshsuite/smpi/mpich3-test/pt2pt/CMakeLists.txt @@ -6,7 +6,7 @@ if(enable_smpi AND enable_testsuite_smpi_MPICH3) include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../include/") foreach(file anyall bottom eagerdt huge_anysrc huge_dupcomm huge_ssend huge_underflow inactivereq isendself isendrecv isendrecv_replace isendirecv isendselfprobe issendselfcancel large_tag multi_psend_derived cancelanysrc pingping probenull - dtype_send greq1 probe-unexp rqstatus sendall sendflood sendrecv1 sendrecv2 sendrecv3 waitany-null waittestnull many_isend manylmt recv_any sendself scancel scancel2 rcancel bsend1 bsend2 bsend3 bsend4 bsend5 bsendalign bsendfrag bsendpending rqfreeb) + dtype_send greq1 probe-unexp rqstatus sendall sendflood sendrecv1 sendrecv2 sendrecv3 waitany-null waittestnull many_isend manylmt recv_any sendself scancel scancel2 rcancel bsend1 bsend2 bsend3 bsend4 bsend5 bsendalign bsendfrag bsendpending rqfreeb pssend) # not compiled files: big_count_status mprobe # cancelrecv icsend large_message pscancel scancel_unmatch add_executable(${file} EXCLUDE_FROM_ALL ${file}.c) @@ -31,7 +31,8 @@ foreach(file anyall bottom eagerdt huge_anysrc huge_dupcomm huge_ssend huge_unde isendself isendirecv isendselfprobe issendselfcancel large_tag multi_psend_derived pingping probenull probe-unexp sendall sendflood sendrecv1 sendrecv2 sendrecv3 waitany-null waittestnull big_count_status bsend1 bsend2 bsend3 bsend4 bsend5 bsendalign bsendfrag bsendpending - cancelrecv cancelanysrc dtype_send greq1 icsend large_message pscancel rcancel rqfreeb rqstatus scancel2 scancel sendself many_isend manylmt mprobe recv_any scancel_unmatch + cancelrecv cancelanysrc dtype_send greq1 icsend large_message pscancel pssend + rcancel rqfreeb rqstatus scancel2 scancel sendself many_isend manylmt mprobe recv_any scancel_unmatch ) set(examples_src ${examples_src} ${CMAKE_CURRENT_SOURCE_DIR}/${file}.c) endforeach() diff --git a/teshsuite/smpi/mpich3-test/pt2pt/pssend.c b/teshsuite/smpi/mpich3-test/pt2pt/pssend.c new file mode 100644 index 0000000000..c93622486b --- /dev/null +++ b/teshsuite/smpi/mpich3-test/pt2pt/pssend.c @@ -0,0 +1,53 @@ +/* + * Copyright (C) by Argonne National Laboratory + * See COPYRIGHT in top-level directory + */ + +/* + * This program checks the semantics of persistent synchronous send + */ +#include "mpi.h" +#include "mpitest.h" + +int main(int argc, char *argv[]) +{ + int errs = 0; + int size, rank; + MPI_Request req; + int flag; + + MTest_Init(&argc, &argv); + + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Comm_size(MPI_COMM_WORLD, &size); + + if (size < 2) { + fprintf(stderr, "Launch with two processes\n"); + MPI_Abort(MPI_COMM_WORLD, 1); + } + + if (rank == 0) { + MPI_Ssend_init(NULL, 0, MPI_INT, 1, 0, MPI_COMM_WORLD, &req); + MPI_Start(&req); + + /* ssend cannot be complete at this point */ + MPI_Test(&req, &flag, MPI_STATUS_IGNORE); + if (flag != 0) { + errs++; + fprintf(stderr, "ERROR: synchronous send completed before matching recv was posted\n"); + } + } + + MPI_Barrier(MPI_COMM_WORLD); + + if (rank == 0) { + MPI_Wait(&req, MPI_STATUS_IGNORE); + MPI_Request_free(&req); + } else if (rank == 1) { + MPI_Recv(NULL, 0, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE); + } + + MTest_Finalize(errs); + + return 0; +} diff --git a/teshsuite/smpi/mpich3-test/pt2pt/testlist b/teshsuite/smpi/mpich3-test/pt2pt/testlist index 0b79f5ef69..b9f8d4f6bd 100644 --- a/teshsuite/smpi/mpich3-test/pt2pt/testlist +++ b/teshsuite/smpi/mpich3-test/pt2pt/testlist @@ -35,6 +35,7 @@ scancel 2 xfail=ticket287 scancel2 2 #Needs MPI_Buffer_attach #pscancel 2 xfail=ticket287 +pssend 2 rcancel 2 #cancelrecv 2 xfail=ticket287 isendselfprobe 1 -- 2.20.1