From d61a42ad99d5909b5dde97a2d3a33eda49acc071 Mon Sep 17 00:00:00 2001 From: ct-clmsn Date: Sat, 28 Oct 2023 22:58:05 -0400 Subject: [PATCH] adding support for openmpi's openshmem --- CMakeLists.txt | 2 +- cmake/HPX_SetupOpenSHMEM.cmake | 39 ++++++++++++++++++- .../src/openshmem_environment.cpp | 3 -- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 84100562f19a..1e431d86e4ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1206,7 +1206,7 @@ if(HPX_WITH_NETWORKING) hpx_option( HPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT STRING "Define which conduit to use for the OpenSHMEM parcelport" "sos" - STRINGS "sos;ucx" + STRINGS "sos;ucx;mpi" ) endif() diff --git a/cmake/HPX_SetupOpenSHMEM.cmake b/cmake/HPX_SetupOpenSHMEM.cmake index 30bc43357bf4..a9e93fa30526 100644 --- a/cmake/HPX_SetupOpenSHMEM.cmake +++ b/cmake/HPX_SetupOpenSHMEM.cmake @@ -11,7 +11,42 @@ macro(hpx_setup_openshmem) if(NOT TARGET PkgConfig::OPENSHMEM) set(OPENSHMEM_PC "") - if("${HPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT}" STREQUAL "ucx") + if(HPX_WITH_PARCELPORT_MPI AND HPX_WITH_PARCELPORT_OPENSHMEM AND (NOT ("${HPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT}" STREQUAL "mpi"))) + message(FATAL "HPX_WITH_PARCELPORT_MPI & HPX_WITH_PARCELPORT_OPENSHMEM both set to ON and HPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT != 'mpi'") + + elseif(HPX_WITH_PARCELPORT_MPI AND HPX_WITH_PARCELPORT_OPENSHMEM AND HPX_WITH_FETCH_OPENSHMEM AND ("${HPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT}" STREQUAL "mpi")) + message( + FATAL_ERROR + "HPX_WITH_FETCH_OPENSHMEM for HPX_WITH_PARCELPORT_OPENSHMEM and HPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT='mpi' not supported" + ) + + elseif(HPX_WITH_PARCELPORT_MPI AND (MPI_FOUND OR Mpi::mpi) AND HPX_WITH_PARCELPORT_OPENSHMEM AND (NOT HPX_WITH_FETCH_OPENSHMEM) AND ("${HPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT}" STREQUAL "mpi")) + set(OPENSHMEM_PC "oshmem-cxx") + pkg_search_module(OPENSHMEM IMPORTED_TARGET GLOBAL oshmem-cxx) + + if(NOT OPENSHMEM_FOUND) + message( + FATAL_ERROR + "oshmem-cxx not found for HPX_WITH_PARCELPORT_MPI, HPX_WITH_PARCELPORT_OPENSHMEM, and HPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT='mpi'" + ) + endif() + + set_target_properties( + PkgConfig::OPENSHMEM PROPERTIES INTERFACE_COMPILE_OPTIONS + "${OPENSHMEM_CFLAGS}" + ) + set_target_properties( + PkgConfig::OPENSHMEM PROPERTIES INTERFACE_LINK_OPTIONS + "${OPENSHMEM_LDFLAGS}" + ) + set_target_properties( + PkgConfig::OPENSHMEM PROPERTIES INTERFACE_LINK_DIRECTORIES + "${OPENSHMEM_LIBRARY_DIRS}" + ) + + return() + + elseif("${HPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT}" STREQUAL "ucx") set(OPENSHMEM_PC "ucx") pkg_search_module(UCX IMPORTED_TARGET GLOBAL ucx) @@ -31,7 +66,7 @@ macro(hpx_setup_openshmem) endif() endif() - if((NOT OPENSHMEM_FOUND) AND HPX_WITH_FETCH_OPENSHMEM) + if((NOT OPENSHMEM_FOUND) AND HPX_WITH_FETCH_OPENSHMEM AND NOT ("${HPX_WITH_PARCELPORT_OPENSHMEM_CONDUIT}" STREQUAL "mpi")) if(NOT CMAKE_C_COMPILER) message( FATAL_ERROR diff --git a/libs/core/openshmem_base/src/openshmem_environment.cpp b/libs/core/openshmem_base/src/openshmem_environment.cpp index a7c039ae897c..42ccd23233e6 100644 --- a/libs/core/openshmem_base/src/openshmem_environment.cpp +++ b/libs/core/openshmem_base/src/openshmem_environment.cpp @@ -16,9 +16,6 @@ #include #include -#include -#include - #include #include #include