Skip to content

Add ADIOS2 support #1389

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: develop
Choose a base branch
from
Draft
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
13 changes: 13 additions & 0 deletions src/cmake/Setup3rdParty.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,19 @@ if(ADIOS_DIR)
endif()
endif()

################################
# Setup ADIOS2 if available
################################
# Search for ADIOS2.
if(ADIOS2_DIR)
include(cmake/thirdparty/SetupADIOS2.cmake)
include_directories(${ADIOS2_INCLUDE_DIRS})
# if we don't find ADIOS2, throw a fatal error
if(NOT ADIOS2_FOUND)
message(FATAL_ERROR "ADIOS2_DIR is set, but ADIOS2 wasn't found.")
endif()
endif()

################################
# Setup Zfp if available
################################
Expand Down
14 changes: 14 additions & 0 deletions src/cmake/thirdparty/SetupADIOS2.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright (c) Lawrence Livermore National Security, LLC and other Conduit
# Project developers. See top-level LICENSE AND COPYRIGHT files for dates and
# other details. No copyright assignment is required to contribute to Conduit.
#
# Setup ADIOS2
#

MESSAGE(STATUS "Looking for ADIOS2 using ADIOS2_DIR=${ADIOS2_DIR}...")

IF(ENABLE_MPI)
find_package(ADIOS2 REQUIRED COMPONENTS CXX MPI)
ELSE()
find_package(ADIOS2 REQUIRED COMPONENTS CXX)
ENDIF()
9 changes: 5 additions & 4 deletions src/config/ConduitConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,11 @@ if(NOT CONDUIT_FOUND)
set(CONDUIT_USE_OPENMP "@ENABLE_OPENMP@")
set(CONDUIT_INSTALL_PREFIX "@CONDUIT_INSTALL_PREFIX@")
set(CONDUIT_PYTHON_MODULE_DIR "@CONDUIT_INSTALL_PYTHON_MODULE_DIR@")
set(CONDUIT_ZLIB_DIR "@ZLIB_DIR@")
set(CONDUIT_HDF5_DIR "@HDF5_DIR@")
set(CONDUIT_ADIOS_DIR "@ADIOS_DIR@")
set(CONDUIT_SILO_DIR "@SILO_DIR@")
set(CONDUIT_ZLIB_DIR "@ZLIB_DIR@")
set(CONDUIT_HDF5_DIR "@HDF5_DIR@")
set(CONDUIT_ADIOS_DIR "@ADIOS_DIR@")
set(CONDUIT_ADIOS2_DIR "@ADIOS2_DIR@")
set(CONDUIT_SILO_DIR "@SILO_DIR@")
set(CONDUIT_METIS_DIR "@METIS_DIR@")
set(CONDUIT_PARMETIS_DIR "@PARMETIS_DIR@")
set(CONDUIT_ADIAK_DIR "@ADIAK_DIR@")
Expand Down
29 changes: 20 additions & 9 deletions src/config/conduit_config.mk.in
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@ CONDUIT_USE_FMT = @CONDUIT_USE_FMT@
CONDUIT_USE_CALIPER = @CONDUIT_USE_CALIPER@
CONDUIT_USE_OPENMP = @CONDUIT_USE_OPENMP@

CONDUIT_SILO_DIR = @SILO_DIR@
CONDUIT_ADIOS_DIR = @ADIOS_DIR@
CONDUIT_ZFP_DIR = @ZFP_DIR@
CONDUIT_SILO_DIR = @SILO_DIR@
CONDUIT_ADIOS_DIR = @ADIOS_DIR@
CONDUIT_ADIOS2_DIR = @ADIOS2_DIR@
CONDUIT_ZFP_DIR = @ZFP_DIR@

CONDUIT_METIS_DIR = @METIS_DIR@
CONDUIT_PARMETIS_DIR = @PARMETIS_DIR@
Expand All @@ -47,10 +48,11 @@ CONDUIT_LINK_RPATH = -Wl,-rpath,$(CONDUIT_DIR)/lib

# two steps are used b/c there are commas in the linker commands
# which will undermine parsing of the makefile
CONDUIT_SILO_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_SILO_DIR)/lib
CONDUIT_HDF5_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_HDF5_DIR)/lib
CONDUIT_ADIOS_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_ADIOS_DIR)/lib
CONDUIT_ZFP_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_ZFP_DIR)/lib
CONDUIT_SILO_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_SILO_DIR)/lib
CONDUIT_HDF5_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_HDF5_DIR)/lib
CONDUIT_ADIOS_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_ADIOS_DIR)/lib
CONDUIT_ADIOS2_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_ADIOS2_DIR)/lib
CONDUIT_ZFP_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_ZFP_DIR)/lib
CONDUIT_METIS_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_METIS_DIR)/lib
CONDUIT_PARMETIS_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_PARMETIS_DIR)/lib
CONDUIT_CALIPER_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_CALIPER_DIR)/lib
Expand All @@ -59,6 +61,7 @@ CONDUIT_ADIAK_RPATH_FLAGS_VALUE = -Wl,-rpath,$(CONDUIT_ADIAK_DIR)/lib
CONDUIT_LINK_RPATH += $(if $(CONDUIT_SILO_DIR), $(CONDUIT_SILO_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_HDF5_DIR), $(CONDUIT_HDF5_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_ADIOS_DIR), $(CONDUIT_ADIOS_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_ADIOS2_DIR), $(CONDUIT_ADIOS2_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_ZFP_DIR), $(CONDUIT_ZFP_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_METIS_DIR), $(CONDUIT_METIS_RPATH_FLAGS_VALUE))
CONDUIT_LINK_RPATH += $(if $(CONDUIT_PARMETIS_DIR), $(CONDUIT_PARMETIS_RPATH_FLAGS_VALUE))
Expand All @@ -84,6 +87,8 @@ CONDUIT_INCLUDE_FLAGS += -I $(CONDUIT_DIR)/include

CONDUIT_INCLUDE_FLAGS += $(if $(CONDUIT_ADIOS_DIR),-I$(CONDUIT_ADIOS_DIR)/include)

CONDUIT_INCLUDE_FLAGS += $(if $(CONDUIT_ADIOS2_DIR),-I$(CONDUIT_ADIOS2_DIR)/include)

CONDUIT_INCLUDE_FLAGS += $(if $(CONDUIT_SILO_DIR),-I$(CONDUIT_SILO_DIR)/include)

CONDUIT_INCLUDE_FLAGS += $(if $(CONDUIT_HDF5_DIR),-I$(CONDUIT_HDF5_DIR)/include)
Expand Down Expand Up @@ -112,6 +117,12 @@ CONDUIT_ZLIB_LIB_FLAGS = $(if $(CONDUIT_ZLIB_DIR),-L $(CONDUIT_ZLIB_DIR)/lib -l
CONDUIT_ADIOS_LIB_FLAGS = $(if $(CONDUIT_ADIOS_DIR),@CONDUIT_ADIOS_NOMPI_MAKE_LIBS_STR@)
CONDUIT_ADIOS_MPI_LIB_FLAGS = $(if $(CONDUIT_ADIOS_DIR),@CONDUIT_ADIOS_MPI_MAKE_LIBS_STR@)

##########
# ADIOS2
##########
CONDUIT_ADIOS2_LIB_FLAGS = $(if $(CONDUIT_ADIOS2_DIR),@CONDUIT_ADIOS2_NOMPI_MAKE_LIBS_STR@)
CONDUIT_ADIOS2_MPI_LIB_FLAGS = $(if $(CONDUIT_ADIOS2_DIR),@CONDUIT_ADIOS2_MPI_MAKE_LIBS_STR@)

##########
# Silo
##########
Expand Down Expand Up @@ -147,7 +158,7 @@ CONDUIT_CALIPER_LIB_FLAGS = $(if $(CONDUIT_CALIPER_DIR),-L $(CONDUIT_CALIPER_DI
CONDUIT_LIB_FLAGS = -L $(CONDUIT_DIR)/lib \
-lconduit_relay \
-lconduit_blueprint \
-lconduit $(CONDUIT_ADIOS_LIB_FLAGS) $(CONDUIT_SILO_LIB_FLAGS) $(CONDUIT_HDF5_LIB_FLAGS) $(CONDUIT_ZFP_LIB_FLAGS) $(CONDUIT_CALIPER_LIB_FLAGS) $(CONDUIT_ADIAK_LIB_FLAGS) $(CONDUIT_ZLIB_LIB_FLAGS) $(CONDUIT_EXTRA_LIB_FLAGS) $(CONDUIT_OPENMP_LINK_FLAGS)
-lconduit $(CONDUIT_ADIOS_LIB_FLAGS) $(CONDUIT_ADIOS2_LIB_FLAGS) $(CONDUIT_SILO_LIB_FLAGS) $(CONDUIT_HDF5_LIB_FLAGS) $(CONDUIT_ZFP_LIB_FLAGS) $(CONDUIT_CALIPER_LIB_FLAGS) $(CONDUIT_ADIAK_LIB_FLAGS) $(CONDUIT_ZLIB_LIB_FLAGS) $(CONDUIT_EXTRA_LIB_FLAGS) $(CONDUIT_OPENMP_LINK_FLAGS)

# All conduit libs, with MPI
CONDUIT_MPI_LIB_FLAGS = -L $(CONDUIT_DIR)/lib \
Expand All @@ -156,4 +167,4 @@ CONDUIT_MPI_LIB_FLAGS = -L $(CONDUIT_DIR)/lib \
-lconduit_relay \
-lconduit_blueprint_mpi \
-lconduit_blueprint \
-lconduit $(CONDUIT_ADIOS_MPI_LIB_FLAGS) $(CONDUIT_SILO_LIB_FLAGS) $(CONDUIT_HDF5_LIB_FLAGS) $(CONDUIT_ZFP_LIB_FLAGS) $(CONDUIT_METIS_LIB_FLAGS) $(CONDUIT_PARMETIS_LIB_FLAGS) $(CONDUIT_CALIPER_LIB_FLAGS) $(CONDUIT_ZLIB_LIB_FLAGS) $(CONDUIT_ADIAK_LIB_FLAGS) $(CONDUIT_EXTRA_LIB_FLAGS) $(CONDUIT_OPENMP_LINK_FLAGS)
-lconduit $(CONDUIT_ADIOS_MPI_LIB_FLAGS) $(CONDUIT_ADIOS2_MPI_LIB_FLAGS) $(CONDUIT_SILO_LIB_FLAGS) $(CONDUIT_HDF5_LIB_FLAGS) $(CONDUIT_ZFP_LIB_FLAGS) $(CONDUIT_METIS_LIB_FLAGS) $(CONDUIT_PARMETIS_LIB_FLAGS) $(CONDUIT_CALIPER_LIB_FLAGS) $(CONDUIT_ZLIB_LIB_FLAGS) $(CONDUIT_ADIAK_LIB_FLAGS) $(CONDUIT_EXTRA_LIB_FLAGS) $(CONDUIT_OPENMP_LINK_FLAGS)
29 changes: 28 additions & 1 deletion src/libs/relay/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,14 @@ if(ADIOS_FOUND AND MPI_FOUND)
SET(CONDUIT_RELAY_IO_MPI_ADIOS_ENABLED TRUE)
endif()

if(ADIOS2_FOUND AND NOT MPI_FOUND)
SET(CONDUIT_RELAY_IO_ADIOS2_ENABLED TRUE)
endif()

if(ADIOS2_FOUND AND MPI_FOUND)
SET(CONDUIT_RELAY_IO_MPI_ADIOS2_ENABLED TRUE)
endif()

if(ZFP_FOUND)
SET(CONDUIT_RELAY_ZFP_ENABLED TRUE)
endif()
Expand Down Expand Up @@ -135,6 +143,13 @@ if(ADIOS_FOUND AND NOT MPI_FOUND)
list(APPEND conduit_relay_sources conduit_relay_io_adios.cpp)
endif()

if(ADIOS2_FOUND AND NOT MPI_FOUND)
list(APPEND conduit_relay_headers
conduit_relay_io_adios2.hpp
)
list(APPEND conduit_relay_sources conduit_relay_io_adios2.cpp)
endif()

if(ZFP_FOUND)
list(APPEND conduit_relay_headers conduit_relay_zfp.hpp)
list(APPEND conduit_relay_sources conduit_relay_zfp.cpp)
Expand Down Expand Up @@ -180,7 +195,7 @@ endif()
mark_as_advanced(CONDUIT_MAKE_EXTRA_LIBS)

#
# Link with silo and hdf5 and adios if these are enabled
# Link with silo, hdf5, adios, and adios2 if these are enabled
#
if(SILO_FOUND)
list(APPEND conduit_relay_deps silo)
Expand All @@ -202,6 +217,11 @@ if(ADIOS_FOUND AND NOT MPI_FOUND)
list(APPEND conduit_relay_deps adios_nompi)
endif()

if(ADIOS2_FOUND AND NOT MPI_FOUND)
# Link with the serial ADIOS2 libraries.
list(APPEND conduit_relay_deps adios2::cxx11)
endif()

if(ZFP_FOUND)
list(APPEND conduit_relay_deps zfp)
endif()
Expand Down Expand Up @@ -401,6 +421,13 @@ if(ADIOS_FOUND)
# Link with parallel versions of ADIOS
list(APPEND conduit_relay_mpi_io_deps adios_mpi)
endif()

if(ADIOS2_FOUND)
list(APPEND conduit_relay_mpi_io_headers conduit_relay_mpi_io_adios2.hpp)
list(APPEND conduit_relay_mpi_io_sources conduit_relay_io_adios2.cpp)
# Link with parallel versions of ADIOS2
list(APPEND conduit_relay_mpi_io_deps adios2::cxx11_mpi MPI::MPI_CXX)
endif()


#
Expand Down
4 changes: 4 additions & 0 deletions src/libs/relay/conduit_relay_config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@

#cmakedefine CONDUIT_RELAY_IO_MPI_ADIOS_ENABLED

#cmakedefine CONDUIT_RELAY_IO_ADIOS2_ENABLED

#cmakedefine CONDUIT_RELAY_IO_MPI_ADIOS2_ENABLED

#cmakedefine CONDUIT_RELAY_IO_HDF5_ENABLED

#cmakedefine CONDUIT_RELAY_IO_H5ZZFP_ENABLED
Expand Down
Loading