Skip to content
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

Fixes compilation issues when interfaces are disabled. #17

Merged
merged 2 commits into from
Nov 6, 2023
Merged
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
110 changes: 106 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- uses: actions/checkout@v3
- name: Build AMS
- name: Build Torch=On FAISS=On HDF5=On AMS
shell: bash -l {0}
run: |
module load gcc/11.2.1
source /spack/share/spack/setup-env.sh
spack env activate -p /ams-spack-env
rm -rf build/
mkdir build
cd build
export AMS_MFEM_PATH=$(spack location -i mfem)
Expand All @@ -35,7 +36,6 @@ jobs:
-DBUILD_SHARED_LIBS=On \
-DCMAKE_PREFIX_PATH=$INSTALL_DIR \
-DWITH_CALIPER=On \
-DWITH_DB=On \
-DWITH_HDF5=On \
-DWITH_EXAMPLES=On \
-DHDF5_Dir=$AMS_HDF5_PATH \
Expand All @@ -49,13 +49,115 @@ jobs:
-DWITH_TORCH=On \
-DWITH_TESTS=On \
-DTorch_DIR=$AMS_TORCH_PATH \
-DFAISS_DIR=$AMS_FAISS_PATH \
-DWITH_AMS_DEBUG=On \
$GITHUB_WORKSPACE
make
- name: Run tests Torch=On FAISS=On HDF5=On AMS
run: |
cd build
make test
- name: Build Torch=Off FAISS=On HDF5=On AMS
shell: bash -l {0}
run: |
module load gcc/11.2.1
source /spack/share/spack/setup-env.sh
spack env activate -p /ams-spack-env
rm -rf build/
mkdir build
cd build
export AMS_MFEM_PATH=$(spack location -i mfem)
export AMS_FAISS_PATH=$(spack location -i faiss)
export AMS_UMPIRE_PATH=$(spack location -i umpire)
export AMS_HDF5_PATH=$(spack location -i hdf5)
cmake \
-DBUILD_SHARED_LIBS=On \
-DCMAKE_PREFIX_PATH=$INSTALL_DIR \
-DWITH_CALIPER=On \
-DWITH_HDF5=On \
-DWITH_EXAMPLES=On \
-DHDF5_Dir=$AMS_HDF5_PATH \
-DCMAKE_INSTALL_PREFIX=./install \
-DCMAKE_BUILD_TYPE=Release \
-DWITH_CUDA=Off \
-DUMPIRE_DIR=$AMS_UMPIRE_PATH \
-DMFEM_DIR=$AMS_MFEM_PATH \
-DWITH_FAISS=On \
-DWITH_MPI=On \
-DWITH_TORCH=Off \
-DWITH_TESTS=On \
-DFAISS_DIR=$AMS_FAISS_PATH \
-DWITH_AMS_DEBUG=On \
-DWITH_WORKFLOW=On \
$GITHUB_WORKSPACE
make
- name: Run tests
- name: Run tests Torch=Off FAISS=On HDF5=On AMS
run: |
cd build
make test
- name: Build Torch=Off FAISS=Off HDF5=On AMS
shell: bash -l {0}
run: |
module load gcc/11.2.1
source /spack/share/spack/setup-env.sh
spack env activate -p /ams-spack-env
rm -rf build/
mkdir build
cd build
export AMS_MFEM_PATH=$(spack location -i mfem)
export AMS_UMPIRE_PATH=$(spack location -i umpire)
export AMS_HDF5_PATH=$(spack location -i hdf5)
cmake \
-DBUILD_SHARED_LIBS=On \
-DCMAKE_PREFIX_PATH=$INSTALL_DIR \
-DWITH_CALIPER=On \
-DWITH_EXAMPLES=On \
-DHDF5_Dir=$AMS_HDF5_PATH \
-DWITH_HDF5=On \
-DCMAKE_INSTALL_PREFIX=./install \
-DCMAKE_BUILD_TYPE=Release \
-DWITH_CUDA=Off \
-DUMPIRE_DIR=$AMS_UMPIRE_PATH \
-DMFEM_DIR=$AMS_MFEM_PATH \
-DWITH_FAISS=Off \
-DWITH_MPI=On \
-DWITH_TORCH=Off \
-DWITH_TESTS=On \
-DWITH_AMS_DEBUG=On \
$GITHUB_WORKSPACE
make
- name: Run tests Torch=Off FAISS=Off HDF5=On AMS
run: |
cd build
make test
- name: Build Torch=Off FAISS=Off HDF5=Off AMS
shell: bash -l {0}
run: |
module load gcc/11.2.1
source /spack/share/spack/setup-env.sh
spack env activate -p /ams-spack-env
rm -rf build/
mkdir build
cd build
export AMS_MFEM_PATH=$(spack location -i mfem)
export AMS_UMPIRE_PATH=$(spack location -i umpire)
cmake \
-DBUILD_SHARED_LIBS=On \
-DCMAKE_PREFIX_PATH=$INSTALL_DIR \
-DWITH_CALIPER=On \
-DWITH_EXAMPLES=On \
-DCMAKE_INSTALL_PREFIX=./install \
-DCMAKE_BUILD_TYPE=Release \
-DWITH_CUDA=Off \
-DUMPIRE_DIR=$AMS_UMPIRE_PATH \
-DMFEM_DIR=$AMS_MFEM_PATH \
-DWITH_FAISS=Off \
-DWITH_MPI=On \
-DWITH_TORCH=Off \
-DWITH_TESTS=On \
-DWITH_AMS_DEBUG=On \
$GITHUB_WORKSPACE
make
- name: Run tests Torch=Off FAISS=Off HDF5=Off AMS
run: |
cd build
make test
141 changes: 67 additions & 74 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ set(AMS_EXAMPLE_INCLUDES "")
option(WITH_CUDA "Option to enable CUDA" OFF)
option(WITH_EXAMPLES "Build examples" OFF)
option(WITH_MPI "Option to enable MPI" OFF)
option(WITH_DB "Use Database for Caching Simulation Results" OFF)
option(WITH_CALIPER "Use Caliper for Profiling" OFF)
option(WITH_FAISS "Use C/C++ FAISS interface for HD Cache" OFF)
option(WITH_TORCH "Use C/C++ Torch interface for Surrogate Model Inference" OFF)
Expand Down Expand Up @@ -93,77 +92,75 @@ if (WITH_AMS_DEBUG)
endif()

# ------------------------------------------------------------------------------
if (WITH_DB)
list(APPEND AMS_APP_DEFINES "-D__ENABLE_DB__")
list(APPEND AMS_APP_DEFINES "-D__ENABLE_DB__")

if (WITH_REDIS)
# Temprorary fix for:= the following error which happens when using Cuda 11.6 and Redis backend
# error: #error The version of CUB in your include path is not compatible with this release of Thrust.
if (WITH_CUDA)
add_compile_definitions(THRUST_IGNORE_CUB_VERSION_CHECK)
endif()
if (HIREDIS_DIR)
find_path(HIREDIS_HEADER NAMES hiredis HINTS ${HIREDIS_DIR} PATH_SUFFIXES include)
find_library(HIREDIS_LIB NAMES hiredis HINTS ${HIREDIS_DIR} PATH_SUFFIXES lib)
else()
find_package(hiredis REQUIRED)
find_path(HIREDIS_HEADER hiredis)
find_library(HIREDIS_LIB hiredis)
endif()
message(STATUS "Hiredis library is ${HIREDIS_LIB}")
message(STATUS "Hiredis headers are ${HIREDIS_HEADER}")
list(APPEND AMS_APP_INCLUDES ${HIREDIS_HEADER})
list(APPEND AMS_APP_LIBRARIES ${HIREDIS_LIB})
list(APPEND AMS_APP_DEFINES "-D__ENABLE_REDIS__")

if (REDIS_PLUS_PLUS_DIR)
find_path(REDIS_PLUS_PLUS_HEADER NAMES sw PATHS ${REDIS_PLUS_PLUS_DIR} PATH_SUFFIXES include)
find_library(REDIS_PLUS_PLUS_LIB NAMES redis++ PATHS ${REDIS_PLUS_PLUS_DIR} PATH_SUFFIXES lib)
else()
find_path(REDIS_PLUS_PLUS_HEADER sw)
find_library(REDIS_PLUS_PLUS_LIB redis++)
endif()
message(STATUS "Redis++ library is ${REDIS_PLUS_PLUS_LIB}")
list(APPEND AMS_APP_INCLUDES ${REDIS_PLUS_PLUS_HEADER})
list(APPEND AMS_APP_LIBRARIES ${REDIS_PLUS_PLUS_LIB})
endif() # WITH_REDIS

if (WITH_HDF5)
find_package(HDF5 NAMES hdf5 COMPONENTS C shared REQUIRED NO_DEFAULT_PATH PATHS ${HDF5_Dir} ${HDF5_Dir}/share/cmake)
list(APPEND AMS_APP_INCLUDES ${HDF5_INCLUDE_DIR})
list(APPEND AMS_APP_LIBRARIES ${HDF5_C_SHARED_LIBRARY})
list(APPEND AMS_APP_DEFINES "-D__ENABLE_HDF5__")
message(STATUS "HDF5 Shared Library: ${HDF5_C_SHARED_LIBRARY}")
message(STATUS "HDF5 Include directories: ${HDF5_INCLUDE_DIR}")
endif() # WITH_HDF5
if (WITH_REDIS)
# Temprorary fix for:= the following error which happens when using Cuda 11.6 and Redis backend
# error: #error The version of CUB in your include path is not compatible with this release of Thrust.
if (WITH_CUDA)
add_compile_definitions(THRUST_IGNORE_CUB_VERSION_CHECK)
endif()
if (HIREDIS_DIR)
find_path(HIREDIS_HEADER NAMES hiredis HINTS ${HIREDIS_DIR} PATH_SUFFIXES include)
find_library(HIREDIS_LIB NAMES hiredis HINTS ${HIREDIS_DIR} PATH_SUFFIXES lib)
else()
find_package(hiredis REQUIRED)
find_path(HIREDIS_HEADER hiredis)
find_library(HIREDIS_LIB hiredis)
endif()
message(STATUS "Hiredis library is ${HIREDIS_LIB}")
message(STATUS "Hiredis headers are ${HIREDIS_HEADER}")
list(APPEND AMS_APP_INCLUDES ${HIREDIS_HEADER})
list(APPEND AMS_APP_LIBRARIES ${HIREDIS_LIB})
list(APPEND AMS_APP_DEFINES "-D__ENABLE_REDIS__")

if (REDIS_PLUS_PLUS_DIR)
find_path(REDIS_PLUS_PLUS_HEADER NAMES sw PATHS ${REDIS_PLUS_PLUS_DIR} PATH_SUFFIXES include)
find_library(REDIS_PLUS_PLUS_LIB NAMES redis++ PATHS ${REDIS_PLUS_PLUS_DIR} PATH_SUFFIXES lib)
else()
find_path(REDIS_PLUS_PLUS_HEADER sw)
find_library(REDIS_PLUS_PLUS_LIB redis++)
endif()
message(STATUS "Redis++ library is ${REDIS_PLUS_PLUS_LIB}")
list(APPEND AMS_APP_INCLUDES ${REDIS_PLUS_PLUS_HEADER})
list(APPEND AMS_APP_LIBRARIES ${REDIS_PLUS_PLUS_LIB})
endif() # WITH_REDIS

if (WITH_HDF5)
find_package(HDF5 NAMES hdf5 COMPONENTS C shared REQUIRED NO_DEFAULT_PATH PATHS ${HDF5_Dir} ${HDF5_Dir}/share/cmake)
list(APPEND AMS_APP_INCLUDES ${HDF5_INCLUDE_DIR})
list(APPEND AMS_APP_LIBRARIES ${HDF5_C_SHARED_LIBRARY})
list(APPEND AMS_APP_DEFINES "-D__ENABLE_HDF5__")
message(STATUS "HDF5 Shared Library: ${HDF5_C_SHARED_LIBRARY}")
message(STATUS "HDF5 Include directories: ${HDF5_INCLUDE_DIR}")
endif() # WITH_HDF5

if (WITH_RMQ)
if (WITH_CUDA)
add_compile_definitions(THRUST_IGNORE_CUB_VERSION_CHECK)
endif()
list(APPEND AMS_APP_DEFINES "-D__ENABLE_RMQ__")

find_package(amqpcpp REQUIRED)
get_target_property(amqpcpp_INCLUDE_DIR amqpcpp INTERFACE_INCLUDE_DIRECTORIES)
list(APPEND AMS_APP_INCLUDES ${amqpcpp_INCLUDE_DIR})

find_package(OpenSSL REQUIRED)
if (OPENSSL_FOUND)
list(APPEND AMS_APP_INCLUDES ${OPENSSL_INCLUDE_DIR})
list(APPEND AMS_APP_LIBRARIES "${OPENSSL_LIBRARIES}")
list(APPEND AMS_APP_LIBRARIES ssl)
message(STATUS "OpenSSL includes found: " ${OPENSSL_INCLUDE_DIR})
message(STATUS "OpenSSL libraries found: " ${OPENSSL_LIBRARIES})
else()
message(STATUS "OpenSSL Not Found")
endif()
if (WITH_RMQ)
if (WITH_CUDA)
add_compile_definitions(THRUST_IGNORE_CUB_VERSION_CHECK)
endif()
list(APPEND AMS_APP_DEFINES "-D__ENABLE_RMQ__")

find_package(libevent REQUIRED) # event loop library
list(APPEND AMS_APP_INCLUDES ${LIBEVENT_INCLUDE_DIR})
list(APPEND AMS_APP_LIBRARIES "${LIBEVENT_LIBRARIES}")
list(APPEND AMS_APP_LIBRARIES amqpcpp event_pthreads event)
endif() # WITH_RMQ
endif() # WITH_DB
find_package(amqpcpp REQUIRED)
get_target_property(amqpcpp_INCLUDE_DIR amqpcpp INTERFACE_INCLUDE_DIRECTORIES)
list(APPEND AMS_APP_INCLUDES ${amqpcpp_INCLUDE_DIR})

find_package(OpenSSL REQUIRED)
if (OPENSSL_FOUND)
list(APPEND AMS_APP_INCLUDES ${OPENSSL_INCLUDE_DIR})
list(APPEND AMS_APP_LIBRARIES "${OPENSSL_LIBRARIES}")
list(APPEND AMS_APP_LIBRARIES ssl)
message(STATUS "OpenSSL includes found: " ${OPENSSL_INCLUDE_DIR})
message(STATUS "OpenSSL libraries found: " ${OPENSSL_LIBRARIES})
else()
message(STATUS "OpenSSL Not Found")
endif()

find_package(libevent REQUIRED) # event loop library
list(APPEND AMS_APP_INCLUDES ${LIBEVENT_INCLUDE_DIR})
list(APPEND AMS_APP_LIBRARIES "${LIBEVENT_LIBRARIES}")
list(APPEND AMS_APP_LIBRARIES amqpcpp event_pthreads event)
endif() # WITH_RMQ

# ------------------------------------------------------------------------------
if(NOT DEFINED UMPIRE_DIR)
Expand Down Expand Up @@ -304,14 +301,10 @@ if (WITH_EXAMPLES)
list(APPEND AMS_EXAMPLE_LIBRARIES "${MFEM_LIBRARIES}")
list(APPEND AMS_EXAMPLE_LIB_DIRS "${MFEM_LIB_DIR}")

if (WITH_DB)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_DB__")
endif()

if (WITH_REDIS)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_REDIS__")
endif()

if (WITH_RMQ)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_RMQ__")
list(APPEND AMS_EXAMPLE_INCLUDES ${amqpcpp_INCLUDE_DIR})
Expand Down
69 changes: 39 additions & 30 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,43 @@
file(GLOB_RECURSE AMS_CURRENT_EXAMPLE_INCLUDES "*.hpp")

set(AMS_EXAMPLE_SRC ${MINIAPP_INCLUDES} main.cpp)
add_executable(ams_example ${AMS_EXAMPLE_SRC} ${MINIAPP_INCLUDES})

if (WITH_RZ)
list(APPEND AMS_EXAMPLE_SRC ${RZ_AMS_SOURCES} ${AMS_CURRENT_EXAMPLE_INCLUDES})
endif()

target_include_directories(ams_example PRIVATE ${AMS_EXAMPLE_INCLUDES}
${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_BINARY_DIR}/include)
target_compile_definitions(ams_example PRIVATE ${AMS_EXAMPLE_DEFINES})
target_link_directories(ams_example PRIVATE ${AMS_EXAMPLE_LIB_DIRS})
target_link_libraries(ams_example PUBLIC AMS ${AMS_EXAMPLE_LIBRARIES})
if (WITH_PERFFLOWASPECT)
target_link_libraries(ams_example PUBLIC perfflowaspect_full)
endif()

if (WITH_CUDA)
set_source_files_properties(main.cpp PROPERTIES LANGUAGE CUDA)
set_source_files_properties(main.cpp PROPERTIES COMPILE_FLAGS "--expt-extended-lambda")
set_source_files_properties(app/eos_idealgas.hpp PROPERTIES COMPILE_FLAGS "--expt-extended-lambda")
set_target_properties(ams_example PROPERTIES CUDA_ARCHITECTURES "${AMS_CUDA_ARCH}")

if (WITH_RZ)
set_source_files_properties(${RZ_AMS_SOURCES} PROPERTIES LANGUAGE CUDA)
set_source_files_properties(${RZ_AMS_SOURCES} PROPERTIES COMPILE_FLAGS "--expt-extended-lambda")
set_property(TARGET ams_example PROPERTY CUDA_SEPARABLE_COMPILATION ON)
endif()

if (WITH_PERFFLOWASPECT)
set_property(SOURCE ${AMS_EXAMPLE_SRC} APPEND_STRING PROPERTY COMPILE_FLAGS " -ccbin clang++ -Xcompiler=-Xclang -Xcompiler=-load -Xcompiler=-Xclang -Xcompiler=${PERFFLOWASPECT_LIB_DIR}/libWeavePass.so")
endif()
endif()

function(ADDExec binary_name definitions)
if (WITH_RZ)
list(APPEND AMS_EXAMPLE_SRC ${RZ_AMS_SOURCES} ${AMS_CURRENT_EXAMPLE_INCLUDES})
endif()

target_include_directories(${binary_name} PRIVATE ${AMS_EXAMPLE_INCLUDES}
${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_BINARY_DIR}/include)
target_compile_definitions(${binary_name} PRIVATE ${definitions})
target_link_directories(${binary_name} PRIVATE ${AMS_EXAMPLE_LIB_DIRS})
target_link_libraries(${binary_name} PUBLIC AMS ${AMS_EXAMPLE_LIBRARIES})
if (WITH_PERFFLOWASPECT)
target_link_libraries(${binary_name} PUBLIC perfflowaspect_full)
endif()

if (WITH_CUDA)
set_source_files_properties(main.cpp PROPERTIES LANGUAGE CUDA)
set_source_files_properties(main.cpp PROPERTIES COMPILE_FLAGS "--expt-extended-lambda")
set_source_files_properties(app/eos_idealgas.hpp PROPERTIES COMPILE_FLAGS "--expt-extended-lambda")
set_target_properties(${binary_name} PROPERTIES CUDA_ARCHITECTURES "${AMS_CUDA_ARCH}")

if (WITH_RZ)
set_source_files_properties(${RZ_AMS_SOURCES} PROPERTIES LANGUAGE CUDA)
set_source_files_properties(${RZ_AMS_SOURCES} PROPERTIES COMPILE_FLAGS "--expt-extended-lambda")
set_property(TARGET ${binary_name} PROPERTY CUDA_SEPARABLE_COMPILATION ON)
endif()

if (WITH_PERFFLOWASPECT)
set_property(SOURCE ${AMS_EXAMPLE_SRC} APPEND_STRING PROPERTY COMPILE_FLAGS " -ccbin clang++ -Xcompiler=-Xclang -Xcompiler=-load -Xcompiler=-Xclang -Xcompiler=${PERFFLOWASPECT_LIB_DIR}/libWeavePass.so")
endif()
endif()
endfunction()

add_executable(no_ams_example ${AMS_EXAMPLE_SRC} ${MINIAPP_INCLUDES})
ADDExec(no_ams_example "${AMS_EXAMPLE_DEFINES}")

list(APPEND AMS_EXAMPLE_DEFINES "-DUSE_AMS")
add_executable(ams_example ${AMS_EXAMPLE_SRC} ${MINIAPP_INCLUDES})
ADDExec(ams_example "${AMS_EXAMPLE_DEFINES}")
Loading