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

AMS Monitoring and Benchmark #94

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from 7 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
179 changes: 126 additions & 53 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,14 @@ set(AMS_EXAMPLE_LIBRARIES "")
set(AMS_EXAMPLE_DEFINES "")
set(AMS_EXAMPLE_INCLUDES "")

set(AMS_BENCHMARKS_LIBRARIES "")
set(AMS_BENCHMARKS_DEFINES "")
set(AMS_BENCHMARKS_INCLUDES "")

# ------------------------------------------------------------------------------
option(WITH_CUDA "Option to enable CUDA" OFF)
option(WITH_EXAMPLES "Build examples" OFF)
option(WITH_BENCHMARKS "Build benchmarks suite" OFF)
option(WITH_MPI "Option to enable MPI" OFF)
option(WITH_CALIPER "Use Caliper for Profiling" OFF)
option(WITH_FAISS "Use C/C++ FAISS interface for HD Cache" OFF)
Expand Down Expand Up @@ -263,73 +268,141 @@ add_subdirectory(src)

# ------------------------------------------------------------------------------
if (WITH_AMS_LIB)
if (WITH_EXAMPLES)
#The AMS Runtime does not depend on MFEM. The
#examples we use do.
if (WITH_MPI)
list(APPEND AMS_EXAMPLE_LIBRARIES MPI::MPI_CXX)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_MPI__")
endif()
if (WITH_EXAMPLES)
#The AMS Runtime does not depend on MFEM. The
#examples we use do.
if (WITH_MPI)
list(APPEND AMS_EXAMPLE_LIBRARIES MPI::MPI_CXX)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_MPI__")
endif()

list(APPEND AMS_EXAMPLE_LIBRARIES umpire)
list(APPEND AMS_EXAMPLE_INCLUDES ${UMPIRE_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_LIBRARIES umpire)
list(APPEND AMS_EXAMPLE_INCLUDES ${UMPIRE_INCLUDE_DIR})

if (MFEM_DIR)
include(${PROJECT_SOURCE_DIR}/cmake/FindMFEM.cmake)
else()
find_package(MFEM REQUIRED)
endif()
list(APPEND AMS_EXAMPLE_INCLUDES "${MFEM_INCLUDE_DIRS}")
list(APPEND AMS_EXAMPLE_LIBRARIES "${MFEM_LIBRARIES}")
list(APPEND AMS_EXAMPLE_LIB_DIRS "${MFEM_LIB_DIR}")
if (MFEM_DIR)
include(${PROJECT_SOURCE_DIR}/cmake/FindMFEM.cmake)
else()
find_package(MFEM REQUIRED)
endif()
list(APPEND AMS_EXAMPLE_INCLUDES "${MFEM_INCLUDE_DIRS}")
list(APPEND AMS_EXAMPLE_LIBRARIES "${MFEM_LIBRARIES}")
list(APPEND AMS_EXAMPLE_LIB_DIRS "${MFEM_LIB_DIR}")

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

if (WITH_REDIS)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_REDIS__")
if (WITH_RMQ)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_RMQ__")
list(APPEND AMS_EXAMPLE_INCLUDES ${amqpcpp_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_INCLUDES ${OPENSSL_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_INCLUDES ${LIBEVENT_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_LIBRARIES OpenSSL::SSL amqpcpp pthread event_pthreads event)
if (WITH_MPI)
list(APPEND AMS_EXAMPLE_LIBRARIES MPI::MPI_CXX)
endif()
endif()

if (WITH_CUDA)
list(APPEND AMS_EXAMPLE_LIBRARIES ${CUDA_LIBRARIES} cuda)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_CUDA__")
endif()

if (WITH_CALIPER)
list(APPEND AMS_EXAMPLE_INCLUDES ${caliper_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_LIBRARIES caliper)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_CALIPER__")
endif()

if (WITH_FAISS)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_FAISS__")
endif()

if (WITH_TORCH)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_TORCH__")
endif()

if (WITH_PERFFLOWASPECT)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_PERFFLOWASPECT__")
endif()

if (WITH_ADIAK)
find_package(adiak REQUIRED)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_ADIAK__")
list(APPEND AMS_EXAMPLE_INCLUDES ${adiak_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_LIBRARIES adiak::adiak)
endif()

add_subdirectory(examples)
endif()

if (WITH_RMQ)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_RMQ__")
list(APPEND AMS_EXAMPLE_INCLUDES ${amqpcpp_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_INCLUDES ${OPENSSL_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_INCLUDES ${LIBEVENT_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_LIBRARIES OpenSSL::SSL amqpcpp pthread event_pthreads event)
# ----------------------------------------------------------------------------

if (WITH_BENCHMARKS)
if (WITH_MPI)
list(APPEND AMS_EXAMPLE_LIBRARIES MPI::MPI_CXX)
list(APPEND AMS_BENCHMARKS_LIBRARIES MPI::MPI_CXX)
list(APPEND AMS_BENCHMARKS_DEFINES "-D__ENABLE_MPI__")
endif()
endif()

if (WITH_CUDA)
list(APPEND AMS_EXAMPLE_LIBRARIES ${CUDA_LIBRARIES} cuda)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_CUDA__")
endif()
list(APPEND AMS_BENCHMARKS_LIBRARIES umpire)
list(APPEND AMS_BENCHMARKS_INCLUDES ${UMPIRE_INCLUDE_DIR})

if (WITH_CALIPER)
list(APPEND AMS_EXAMPLE_INCLUDES ${caliper_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_LIBRARIES caliper)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_CALIPER__")
endif()
if (MFEM_DIR)
include(${PROJECT_SOURCE_DIR}/cmake/FindMFEM.cmake)
else()
find_package(MFEM REQUIRED)
endif()
list(APPEND AMS_BENCHMARKS_INCLUDES "${MFEM_INCLUDE_DIRS}")
list(APPEND AMS_BENCHMARKS_LIBRARIES "${MFEM_LIBRARIES}")
list(APPEND AMS_BENCHMARKS_LIB_DIRS "${MFEM_LIB_DIR}")

if (WITH_FAISS)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_FAISS__")
endif()
if (WITH_REDIS)
list(APPEND AMS_BENCHMARKS_DEFINES "-D__ENABLE_REDIS__")
endif()

if (WITH_TORCH)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_TORCH__")
endif()
if (WITH_RMQ)
list(APPEND AMS_BENCHMARKS_DEFINES "-D__ENABLE_RMQ__")
list(APPEND AMS_BENCHMARKS_INCLUDES ${amqpcpp_INCLUDE_DIR})
list(APPEND AMS_BENCHMARKS_INCLUDES ${OPENSSL_INCLUDE_DIR})
list(APPEND AMS_BENCHMARKS_INCLUDES ${LIBEVENT_INCLUDE_DIR})
list(APPEND AMS_BENCHMARKS_LIBRARIES OpenSSL::SSL amqpcpp pthread event_pthreads event)
if (WITH_MPI)
list(APPEND AMS_BENCHMARKS_LIBRARIES MPI::MPI_CXX)
endif()
endif()

if (WITH_PERFFLOWASPECT)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_PERFFLOWASPECT__")
endif()
if (WITH_CUDA)
list(APPEND AMS_BENCHMARKS_LIBRARIES ${CUDA_LIBRARIES} cuda)
list(APPEND AMS_BENCHMARKS_DEFINES "-D__ENABLE_CUDA__")
endif()

if (WITH_ADIAK)
find_package(adiak REQUIRED)
list(APPEND AMS_EXAMPLE_DEFINES "-D__ENABLE_ADIAK__")
list(APPEND AMS_EXAMPLE_INCLUDES ${adiak_INCLUDE_DIR})
list(APPEND AMS_EXAMPLE_LIBRARIES adiak::adiak)
endif()
if (WITH_CALIPER)
list(APPEND AMS_BENCHMARKS_INCLUDES ${caliper_INCLUDE_DIR})
list(APPEND AMS_BENCHMARKS_LIBRARIES caliper)
list(APPEND AMS_BENCHMARKS_DEFINES "-D__ENABLE_CALIPER__")
endif()

add_subdirectory(examples)
endif()
if (WITH_FAISS)
list(APPEND AMS_BENCHMARKS_DEFINES "-D__ENABLE_FAISS__")
endif()

if (WITH_TORCH)
list(APPEND AMS_BENCHMARKS_DEFINES "-D__ENABLE_TORCH__")
endif()

if (WITH_PERFFLOWASPECT)
list(APPEND AMS_BENCHMARKS_DEFINES "-D__ENABLE_PERFFLOWASPECT__")
endif()

if (WITH_ADIAK)
find_package(adiak REQUIRED)
list(APPEND AMS_BENCHMARKS_DEFINES "-D__ENABLE_ADIAK__")
list(APPEND AMS_BENCHMARKS_INCLUDES ${adiak_INCLUDE_DIR})
list(APPEND AMS_BENCHMARKS_LIBRARIES adiak::adiak)
endif()

add_subdirectory(benchmarks)
endif()
endif()

if (WITH_TESTS)
Expand Down
28 changes: 28 additions & 0 deletions benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Copyright 2021-2024 Lawrence Livermore National Security, LLC and other
# AMSLib Project Developers
#
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

set(AMS_BENCHMARK_SRC ${MINIAPP_INCLUDES} ams_bench_db.cpp)

function(ADDExec binary_name definitions)
target_include_directories(${binary_name} PRIVATE ${AMS_BENCHMARKS_INCLUDES}
${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_BINARY_DIR}/include "${PROJECT_SOURCE_DIR}/src/AMSlib/" umpire ${caliper_INCLUDE_DIR} ${MPI_INCLUDE_PATH})
target_compile_definitions(${binary_name} PRIVATE ${definitions})
target_link_directories(${binary_name} PRIVATE ${AMS_BENCHMARKS_LIB_DIRS})
target_link_libraries(${binary_name} PUBLIC AMS ${AMS_BENCHMARKS_LIBRARIES})

if (WITH_CUDA)
set_source_files_properties(ams_bench_db.cpp PROPERTIES LANGUAGE CUDA)
set_source_files_properties(ams_bench_db.cpp PROPERTIES COMPILE_FLAGS "--expt-extended-lambda")
set_target_properties(${binary_name} PROPERTIES CUDA_ARCHITECTURES "${AMS_CUDA_ARCH}")
set_property(TARGET ${binary_name} PROPERTY CUDA_SEPARABLE_COMPILATION ON)
endif()
if (WITH_PERFFLOWASPECT)
set_property(SOURCE ${AMS_BENCHMARK_SRC} APPEND_STRING PROPERTY COMPILE_FLAGS " -Xcompiler=-Xclang -Xcompiler=-load -Xcompiler=-Xclang -Xcompiler=${PERFFLOWASPECT_LIB_DIR}/libWeavePass.so")
endif()
endfunction()

# Database benchmark (RMQ and/or HDF5 + MPI/CUDA . No ML model used)
add_executable(ams_benchmark_db ${AMS_BENCHMARK_SRC} ${MINIAPP_INCLUDES})
ADDExec(ams_benchmark_db "${AMS_BENCHMARKS_DEFINES}")
Loading