Skip to content

Commit

Permalink
Merge pull request #3432 from eisenhauer/UCXVersion
Browse files Browse the repository at this point in the history
Enforce minimum UCX version
  • Loading branch information
eisenhauer authored Jan 14, 2023
2 parents e64c720 + 3ca733b commit 2d823ab
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 8 deletions.
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ adios_option(IME "Enable support for DDN IME transport" AUTO)
adios_option(Python "Enable support for Python bindings" AUTO)
adios_option(Fortran "Enable support for Fortran bindings" AUTO)
adios_option(SysVShMem "Enable support for SysV Shared Memory IPC on *NIX" AUTO)
adios_option(UCX "Enable support for UCX DataPlane in SST" AUTO)
adios_option(Profiling "Enable support for profiling" AUTO)
adios_option(Endian_Reverse "Enable support for Little/Big Endian Interoperability" AUTO)
adios_option(Sodium "Enable support for Sodium for encryption" AUTO)
Expand Down Expand Up @@ -227,7 +228,7 @@ endif()

set(ADIOS2_CONFIG_OPTS
BP5 DataMan DataSpaces HDF5 HDF5_VOL MHS SST CUDA Fortran MPI Python Blosc Blosc2
BZip2 LIBPRESSIO MGARD PNG SZ ZFP DAOS IME O_DIRECT Sodium Catalyst SysVShMem ZeroMQ
BZip2 LIBPRESSIO MGARD PNG SZ ZFP DAOS IME O_DIRECT Sodium Catalyst SysVShMem UCX ZeroMQ
Profiling Endian_Reverse GPU_Support AWSSDK
)

Expand Down
8 changes: 7 additions & 1 deletion cmake/DetectOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -405,9 +405,15 @@ if(ADIOS2_USE_SST AND NOT WIN32)
ADIOS2_HAVE_MPI_CLIENT_SERVER)
unset(CMAKE_REQUIRED_LIBRARIES)
endif()
find_package(UCX)
# UCX
if(ADIOS2_USE_UCX STREQUAL AUTO)
find_package(UCX 1.9.0)
elseif(ADIOS2_USE_UCX)
find_package(UCX 1.9.0)
endif()
if(UCX_FOUND)
set(ADIOS2_SST_HAVE_UCX TRUE)
set(ADIOS2_HAVE_UCX TRUE)
endif()
endif()

Expand Down
26 changes: 21 additions & 5 deletions cmake/FindUCX.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -52,24 +52,40 @@ if(NOT (PC_UCX_FOUND STREQUAL "IGNORE"))
set(UCX_INCLUDE_DIRS ${PC_UCX${_PC_TYPE}_INCLUDE_DIRS})
set(UCX_LIBRARIES ${PC_UCX${_PC_TYPE}_LINK_LIBRARIES})
set(UCX_LIBRARY_DIRS ${PC_UCX${_PC_TYPE}_LIBRARY_DIRS})
set(UCX_FOUND ${PC_UCX_FOUND})
endif()
endif()
endif()

if(NOT ${PC_UCX_VERSION})
set(_UCX_VER_FILE "${UCX_INCLUDE_DIRS}/ucp/api/ucp_version.h")
if(EXISTS "${_UCX_VER_FILE}")
file(READ "${_UCX_VER_FILE}" _ver)
string(REGEX MATCH "#define UCP_API_MAJOR *([0-9]*)" _ ${_ver})
set(_major ${CMAKE_MATCH_1})
string(REGEX MATCH "#define UCP_API_MINOR *([0-9]*)" _ ${_ver})
set(_minor ${CMAKE_MATCH_1})
set(UCX_VERSION "${_major}.${_minor}")
endif()
else()
set(UCX_VERSION ${PC_UCX_VERSION})
endif()

include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LIBXML2_FOUND to TRUE
# handle the QUIETLY and REQUIRED arguments and set UCX_FOUND to TRUE
# if all listed variables are TRUE
find_package_handle_standard_args(UCX DEFAULT_MSG UCX_LIBRARIES)
find_package_handle_standard_args(UCX
FOUND_VAR UCX_FOUND
VERSION_VAR UCX_VERSION
REQUIRED_VARS UCX_LIBRARIES)

if(UCX_FOUND)
message("Found UCX: ")
if(NOT TARGET ucx::ucx)
add_library(ucx::ucx INTERFACE IMPORTED)
if(UCX_INCLUDE_DIRS)
set_target_properties(ucx::ucx PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${UCX_INCLUDE_DIRS}"
)
message("'${UCX_INCLUDE_DIRS}'")
endif()
if(UCX_LIBRARIES)
set_target_properties(ucx::ucx PROPERTIES
Expand All @@ -78,4 +94,4 @@ if(UCX_FOUND)
)
endif()
endif()
endif()
endif()
2 changes: 1 addition & 1 deletion cmake/adios2-config-common.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ if(NOT @BUILD_SHARED_LIBS@)

set(ADIOS2_SST_HAVE_UCX @ADIOS2_SST_HAVE_UCX@)
if(ADIOS2_SST_HAVE_UCX)
find_dependency(UCX)
find_dependency(UCX 1.9.0)
endif()

find_dependency(EVPath)
Expand Down

0 comments on commit 2d823ab

Please sign in to comment.