Skip to content

Commit

Permalink
Fixes compilation issues when interfaces are disabled. (#17)
Browse files Browse the repository at this point in the history
* Fixed no_ams example version, fixed WITH_*=Off options

* Added CI commands to test different build settings
  • Loading branch information
koparasy authored Nov 6, 2023
1 parent bb4f2d2 commit 96570d8
Show file tree
Hide file tree
Showing 11 changed files with 346 additions and 195 deletions.
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

0 comments on commit 96570d8

Please sign in to comment.