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

Hermes 1.1 #615

Closed
wants to merge 214 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
214 commits
Select commit Hold shift + click to select a range
7a8e605
Change serving location
lukemartinlogan Jun 13, 2023
521d6af
Synchronous full flush
lukemartinlogan Jun 13, 2023
721cdd6
Try scoped mutex on mpsc queue
lukemartinlogan Jun 13, 2023
e0e7e32
Try updating hermes_shm
lukemartinlogan Jun 13, 2023
000b651
fix current source dir
lukemartinlogan Jun 13, 2023
8ffc121
Add hermes_posix as a dependency of posix_simple_io
lukemartinlogan Jun 13, 2023
b455230
Link to hermes_shm_data_structures
lukemartinlogan Jun 13, 2023
e7d1212
Initial commit
lukemartinlogan Sep 15, 2023
6cabe2f
Update spack
lukemartinlogan Sep 15, 2023
491eb66
Merge pull request #589 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 15, 2023
01601cc
Fix spack repo file
lukemartinlogan Sep 15, 2023
2c3ad4b
Merge pull request #590 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 15, 2023
735ea4c
Add hermes_shm package
lukemartinlogan Sep 15, 2023
bff7651
Merge pull request #591 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 15, 2023
208362a
Add gettid wrapper
lukemartinlogan Sep 15, 2023
bf422bc
Merge pull request #592 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 15, 2023
08f75ba
Load client config test
lukemartinlogan Sep 15, 2023
7451316
Load client config test
lukemartinlogan Sep 15, 2023
e6b2e8a
Merge pull request #594 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 15, 2023
b70c290
Use hermes/hermes.h
lukemartinlogan Sep 16, 2023
808b668
Make it so bucket size always gets updated after PUT and GET
lukemartinlogan Sep 16, 2023
82490f4
IOR read seems to pass again
lukemartinlogan Sep 16, 2023
9bb593c
Merge pull request #595 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 16, 2023
2158144
Partially fix file size inconsistency
lukemartinlogan Sep 17, 2023
fce5da2
Use catch2 instaed of specific version
lukemartinlogan Sep 20, 2023
92a3275
hermes_api_bench
lukemartinlogan Sep 21, 2023
447aad0
Fix minor compile error
lukemartinlogan Sep 21, 2023
d1cbfe5
Add debug statement to remote_queue
lukemartinlogan Sep 22, 2023
1b0d1eb
Change worker catch statement
lukemartinlogan Sep 22, 2023
25c2234
Add node_id to thallium
lukemartinlogan Sep 22, 2023
b951b31
Print more node info for thallium error
lukemartinlogan Sep 22, 2023
c18ad61
Use const std::string
lukemartinlogan Sep 22, 2023
f24cb51
Add run context
lukemartinlogan Sep 22, 2023
68189cb
Improve bucket operation throughput by dividing unordered_map into pa…
lukemartinlogan Sep 23, 2023
c421806
Small-scale, single-node concurrency seems to work again
lukemartinlogan Sep 23, 2023
f51aed4
Remove mem_ptr
lukemartinlogan Sep 23, 2023
9304931
Use delete instead of free
lukemartinlogan Sep 23, 2023
e869db5
Add finished put log
lukemartinlogan Sep 23, 2023
fc2405f
Add TestHermesConnect to ipc test
lukemartinlogan Sep 23, 2023
58072a9
Try making it so only one RPC group at a time per-node
lukemartinlogan Sep 23, 2023
a4dd782
Use a group other than 0?
lukemartinlogan Sep 23, 2023
ff36953
Add more debug logging to remote_queue
lukemartinlogan Sep 23, 2023
6dc06fc
Unset long running
lukemartinlogan Sep 23, 2023
b42b0b2
Made ConstructTask blocking
lukemartinlogan Sep 23, 2023
a1859cc
Begin supporting blocking tasks
lukemartinlogan Sep 23, 2023
4a8f3eb
Make remote queue push a blocking task
lukemartinlogan Sep 23, 2023
4717b88
don't constantly spawn async threads
lukemartinlogan Sep 23, 2023
f67d230
don't constantly spawn async threads
lukemartinlogan Sep 23, 2023
c803896
Make CreateTaskState unordered again
lukemartinlogan Sep 23, 2023
5e2d8e9
Add cooperative tasking using boost
lukemartinlogan Sep 24, 2023
576c9a6
Add high-performance co-routines for complex tasks
lukemartinlogan Sep 24, 2023
57abb5b
Use a 16KB stack size
lukemartinlogan Sep 24, 2023
75e3e14
Keep work entry when jumping to new context
lukemartinlogan Sep 24, 2023
530e17b
Make network unordered again
lukemartinlogan Sep 24, 2023
8d85235
Print the nodes which finished blob_mdm
lukemartinlogan Sep 24, 2023
35b0f5b
Print the nodes which finished blob_mdm
lukemartinlogan Sep 24, 2023
954374a
Use 64KB stack size
lukemartinlogan Sep 24, 2023
192dbd9
Use 256KB stack size
lukemartinlogan Sep 24, 2023
0208c3d
Use 256KB stack size
lukemartinlogan Sep 24, 2023
719adab
Use 256KB stack size
lukemartinlogan Sep 24, 2023
d5e4c45
Make RunContext apart of task for now
lukemartinlogan Sep 24, 2023
41eb1a3
Irresponsibly destroy DelTask
lukemartinlogan Sep 24, 2023
61d0d60
Make PUT and GET have async option
lukemartinlogan Sep 24, 2023
49a3e23
Use kDebug for jumping into function
lukemartinlogan Sep 24, 2023
3d26319
Add flags_ to putblob
lukemartinlogan Sep 24, 2023
c22b4ab
Lower debug logging
lukemartinlogan Sep 24, 2023
8a1b8f0
Support ASYNC
lukemartinlogan Sep 24, 2023
c47e91b
Re-merge putget test
lukemartinlogan Sep 24, 2023
8edff15
Re-merge putget test
lukemartinlogan Sep 24, 2023
289dd56
Make it so task can be hashed using ID or name
lukemartinlogan Sep 24, 2023
aff44a6
Remove some unneeded info logs
lukemartinlogan Sep 24, 2023
fc128f3
Allow GetBlobSize to be done using the blob name directly
lukemartinlogan Sep 24, 2023
26efc0f
Add blob_name to GetBlob and GetBlobSize
lukemartinlogan Sep 24, 2023
5e9b6d7
Try asynchronous push
lukemartinlogan Sep 24, 2023
78bf9ac
dont rely on HERMES_GET_BLOB_ID flag
lukemartinlogan Sep 24, 2023
b1d8f8e
Include blob size
lukemartinlogan Sep 25, 2023
2eb22d1
Use async partial put in filesystem adapter
lukemartinlogan Sep 25, 2023
b93a60a
Merge pull request #597 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 25, 2023
528f826
Add TimespecLatency
lukemartinlogan Sep 25, 2023
7c1f3f1
re-enable task frees
Sep 27, 2023
534fde9
Comment out a few deltasks
Sep 27, 2023
da4bcef
Remove all DelTasks from cc files
Sep 27, 2023
f1727e8
Only DelTask
Sep 27, 2023
87cc20e
Remove FreeBuffer and DelTask
Sep 27, 2023
1398fdb
Bring FreeBuffer back
Sep 27, 2023
77e33dc
Comment out all DelTasks in tasks
Sep 27, 2023
a2c75b1
Don't free proc_queue
Sep 27, 2023
1ec1f39
Comment out free buffer
Sep 27, 2023
00278ef
Comment out admin frees
Sep 27, 2023
5c7cdd9
Comment out remote queue deltasks
Sep 27, 2023
403d7cc
Enable proc_queue fress
Sep 27, 2023
1fe0024
Disable proc queue free
Sep 27, 2023
7c2178b
Add back all other deltasks
Sep 27, 2023
0ec5964
Remove all deltasks from cc files
Sep 27, 2023
6183357
Uncomment asynccreatecomplete
Sep 28, 2023
92da310
Comment out asynccreaetcomplete
Sep 28, 2023
e3d8c04
Use stack allocator instead of page allocator
Sep 28, 2023
cecea75
Deltask increments
Sep 28, 2023
6639d7e
Make delete counter more accurate
Sep 28, 2023
e77c8a4
Add Del method to TaskState
Sep 28, 2023
6976313
Inequal one?
Sep 28, 2023
073266e
Uncomment DelObj for task ptr
Sep 28, 2023
029b79b
Change TaskPointer to LPointer
Sep 28, 2023
cd77365
Try running it using PutTask as coroutingg
Sep 28, 2023
3acb1b8
Don't free sync put blob
Sep 28, 2023
8dc9469
PushTask wait
Sep 28, 2023
353ef38
Freeing task print
Sep 28, 2023
01e970a
Comment out put blob task
Sep 28, 2023
d60beac
Don't do fire & forget frees
Sep 28, 2023
68b2a46
Remove a few deltasks from hermes_blob_mdm
Sep 28, 2023
efaf2ce
Remove blob registration and bucket updates
Sep 28, 2023
bfb1531
Remove deltsk from remote queue
Sep 28, 2023
40bf8f1
Remove del of allocts
Sep 28, 2023
50fe590
ensure its not stack overflow
Sep 28, 2023
7f93491
Place blob in buffers
Sep 28, 2023
2560369
Support all deltasks
Sep 28, 2023
6568e4e
Slightly change access order in remote queue
Sep 28, 2023
2d96735
Comment out all HSHM_DESTROY_AR
Sep 28, 2023
0c7bb45
Re-enable remote queue
Sep 28, 2023
cb4a685
Null check in empty task
Sep 28, 2023
87f7b3b
Req respond
Sep 28, 2023
e3b9f66
Change to debug
Sep 28, 2023
22ab17c
Begin remote task debug
Sep 29, 2023
9c71182
Fix remote coroutine double-free problem
lukemartinlogan Sep 29, 2023
7b13e29
Don't do remote debug by default
lukemartinlogan Sep 29, 2023
d51d6f5
Use debug for prints in RPC
lukemartinlogan Sep 29, 2023
3c16457
Re-enable remote deltask
lukemartinlogan Sep 29, 2023
0e1afa2
Merge pull request #599 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 29, 2023
d7a34f0
Lower the stack size for tasks
lukemartinlogan Sep 29, 2023
1285edd
Free buffer data for get and append
lukemartinlogan Sep 29, 2023
76a4bb3
Merge pull request #600 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 29, 2023
e5ce5f4
Made it HermesConfig.cmake and change LABSTOR -> HERMES in CMake
lukemartinlogan Sep 29, 2023
32f84a6
Merge pull request #601 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 29, 2023
e860ec7
Fix cmake slightly
lukemartinlogan Sep 29, 2023
8c30179
Merge pull request #602 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 29, 2023
b14d937
Test serialized put + get
lukemartinlogan Sep 29, 2023
c3887c0
Merge pull request #603 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 29, 2023
3a33115
Add async serialized put + get
lukemartinlogan Sep 29, 2023
c1053ad
Add boost
lukemartinlogan Sep 30, 2023
250213b
Merge pull request #604 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 30, 2023
9d9c740
Fix the straggling header in hshm_queue
lukemartinlogan Sep 30, 2023
ccec33c
Merge pull request #605 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 30, 2023
772dae7
Add thallium
lukemartinlogan Sep 30, 2023
6a879fe
Merge pull request #606 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 30, 2023
5745dff
Add compile tester
lukemartinlogan Sep 30, 2023
9479ae0
Fix some headers
lukemartinlogan Sep 30, 2023
6580ff0
Install adapter headers in hermes_adapters dir
lukemartinlogan Sep 30, 2023
bb61ef9
POSIX adapter enabled by default
lukemartinlogan Sep 30, 2023
13e212e
include
lukemartinlogan Sep 30, 2023
76f70cd
Add Hermes to the hermesconfig.cmake
lukemartinlogan Sep 30, 2023
41548a8
Merge pull request #607 from lukemartinlogan/hermes-1.1
lukemartinlogan Sep 30, 2023
ad40a38
Begin making staging trait
lukemartinlogan Sep 30, 2023
f902796
Continue staging
lukemartinlogan Sep 30, 2023
3659452
Make stager factory
lukemartinlogan Sep 30, 2023
14ff601
Initial stager
lukemartinlogan Oct 1, 2023
561decf
Create stager
lukemartinlogan Oct 1, 2023
35a52b7
First draft of TASK_LANE_ALL
lukemartinlogan Oct 2, 2023
1c27741
Change stager
lukemartinlogan Oct 3, 2023
8d7ff60
Use -DCMAKE_BUILD_TYPE=Release
lukemartinlogan Oct 3, 2023
5a27ab9
Merge pull request #608 from lukemartinlogan/hermes-1.1
lukemartinlogan Oct 3, 2023
6fa97b7
GetContainedBlobIds works again
lukemartinlogan Oct 3, 2023
7a8466e
Merge pull request #609 from lukemartinlogan/hermes-1.1
lukemartinlogan Oct 3, 2023
532196e
Make it so bkt is hashed using bkt.hash
lukemartinlogan Oct 3, 2023
11c9acd
Create many buckets
lukemartinlogan Oct 3, 2023
39f34d3
Serialize blob_ids
lukemartinlogan Oct 4, 2023
e91a2a5
Barrier
lukemartinlogan Oct 4, 2023
03566f5
Merge pull request #610 from lukemartinlogan/hermes-1.1
lukemartinlogan Oct 4, 2023
ee2cfd1
enable MPI adapter by default
lukemartinlogan Oct 4, 2023
025ecbe
Fix compile
lukemartinlogan Oct 4, 2023
cb45bc9
Fix compile
lukemartinlogan Oct 4, 2023
2e0771d
Begin testing stager
lukemartinlogan Oct 7, 2023
d6690f7
Add latency tests for different time types
lukemartinlogan Oct 8, 2023
3d2146e
Staging in and out work again
lukemartinlogan Oct 9, 2023
712b034
Untested long-running remote tasks
lukemartinlogan Oct 9, 2023
a751703
Used remote debug macro for testing current staging in Hermes
lukemartinlogan Oct 9, 2023
91e64bf
Use getsec
lukemartinlogan Oct 10, 2023
b6caaf3
Remove timer for this second
lukemartinlogan Oct 10, 2023
c5eff87
Long running tasks always run
lukemartinlogan Oct 10, 2023
b35a43e
Timer before worker iteration
lukemartinlogan Oct 10, 2023
b275a67
Add timer todo
lukemartinlogan Oct 10, 2023
22a527f
Add data op tasks
lukemartinlogan Oct 11, 2023
01855e8
Testing the bucket
lukemartinlogan Oct 11, 2023
7d4938c
Segfault at GetPendingData
lukemartinlogan Oct 11, 2023
8493091
Min derived quantity is available
Oct 11, 2023
760f3ce
Add flush task
Oct 12, 2023
e3603de
Flush didn't deadlock at least
lukemartinlogan Oct 12, 2023
85a0b8a
Add check for the derived op
lukemartinlogan Oct 12, 2023
5ef9b25
Add full libfabric to hermes_shm
lukemartinlogan Oct 13, 2023
ec3ac69
Fix fabric +ares
lukemartinlogan Oct 13, 2023
35be57b
Remove some stuff from libfabric
lukemartinlogan Oct 13, 2023
7d8f27a
Simplify fabric install
lukemartinlogan Oct 13, 2023
0a1d49d
Simplify fabric install
lukemartinlogan Oct 13, 2023
c09bcab
First draft of poll blob info query
lukemartinlogan Oct 14, 2023
9e58452
Begin target metadata collection
lukemartinlogan Oct 15, 2023
f434096
Target info task compiles
lukemartinlogan Oct 15, 2023
cbcc7e6
Single-node metadata queries work
lukemartinlogan Oct 15, 2023
ce4c4c7
labstor -> hrun
lukemartinlogan Oct 15, 2023
a5bacc5
change configuration names to hrun
lukemartinlogan Oct 15, 2023
6740957
Change codegens to use hrun
lukemartinlogan Oct 15, 2023
9ef9968
Repo reorganization
lukemartinlogan Oct 15, 2023
2d87f6d
Tested restructure on compiling external program
lukemartinlogan Oct 15, 2023
5a8991c
Make it so the hrun and hermes can use the same exact config
lukemartinlogan Oct 15, 2023
13e0ffa
Merge pull request #612 from lukemartinlogan/hermes-1.1
lukemartinlogan Oct 15, 2023
3ce70d0
Add python binding infrastructure
lukemartinlogan Oct 15, 2023
f48679c
Change wrapper api
lukemartinlogan Oct 15, 2023
6c4625a
Comment out python bindings
lukemartinlogan Oct 15, 2023
0d17fe5
Only add pybind if python
lukemartinlogan Oct 15, 2023
b14b6d2
Python bindings pass import
lukemartinlogan Oct 15, 2023
b6e9326
Fix linter issues
lukemartinlogan Oct 16, 2023
0f8d146
Move lint and docs to ci
lukemartinlogan Oct 16, 2023
ff279d5
Merge pull request #613 from lukemartinlogan/hermes-1.1
lukemartinlogan Oct 16, 2023
821905e
Improve actions
lukemartinlogan Oct 16, 2023
78414ca
Install hermes_shm
lukemartinlogan Oct 16, 2023
9576f34
Merge pull request #614 from lukemartinlogan/hermes-1.1
lukemartinlogan Oct 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 4 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
with:
path: |
~/build
key: ${{ runner.os }}-${{ hashFiles('wrapper', 'traits', 'test', 'src', 'hermes_shm', 'benchmarks', 'adapter') }}
key: ${{ runner.os }}-${{ hashFiles('wrapper', 'test', 'tasks', 'src', 'include', 'hrun', 'hermes_adapters', 'benchmark') }}

- name: Install APT Dependencies
run: |
Expand All @@ -71,9 +71,9 @@ jobs:
if: steps.spack-cache.outputs.cache-hit != 'true'
run: ci/install_deps.sh

- name: Build
if: steps.hermes-cache.outputs.cache-hit != 'true'
run: ci/build_hermes.sh
# - name: Build
# if: steps.hermes-cache.outputs.cache-hit != 'true'
# run: ci/build_hermes.sh
#
# - name: Test
# run: bash ci/test_hermes.sh
Expand Down
20 changes: 17 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
cmake*
.idea
*.cmd
*.symvers
*.cmd
*.mod
*.mod.c
*.ko
*.order
*.o
*.o.cmd
*.o.d
build

build/
benchmarks/HermesVFD

Expand All @@ -15,8 +29,8 @@ cmake-build-*
.idea
.clang-format
__pycache__/
/src/adapter/posix/cmake-build-debug-system/CMakeFiles/clion-log.txt
/adapter/test/posix/Testing/Temporary/LastTest.log
/hrun/src/hermes_adapters/posix/cmake-build-debug-system/CMakeFiles/clion-log.txt
/hermes_adapters/test/posix/Testing/Temporary/LastTest.log
.cache

wrapper/java/out
Expand All @@ -25,7 +39,7 @@ Testing

.gradle
**/build/
!src/**/build/
!hrun/src/**/build/

# Ignore Gradle GUI config
gradle-app.setting
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "external/pybind11"]
path = external/pybind11
url = https://github.com/pybind/pybind11.git
67 changes: 0 additions & 67 deletions .travis.yml

This file was deleted.

167 changes: 87 additions & 80 deletions CMake/HermesConfig.cmake
Original file line number Diff line number Diff line change
@@ -1,96 +1,103 @@
# Find hermes header and library.
# Find Hermes header and library.
#

# This module defines the following uncached variables:
# Hermes_FOUND, if false, do not try to use hermes.
# Hermes_INCLUDE_DIRS, where to find hermes.h.
# Hermes_LIBRARIES, the libraries to link against to use the hermes library
# Hermes_LIBRARY_DIRS, the directory where the hermes library is found.
# Hermes_FOUND, if false, do not try to use Hermes.
# Hermes_INCLUDE_DIRS, where to find Hermes.h.
# Hermes_LIBRARIES, the libraries to link against to use the Hermes library
# Hermes_LIBRARY_DIRS, the directory where the Hermes library is found.

#-----------------------------------------------------------------------------
# Version Strings
#-----------------------------------------------------------------------------
set(HERMES_VERSION_STRING @HERMES_PACKAGE_VERSION@)
set(HERMES_VERSION_MAJOR @HERMES_VERSION_MAJOR@)
set(HERMES_VERSION_MINOR @HERMES_VERSION_MINOR@)
set(HERMES_VERSION_PATCH @HERMES_VERSION_PATCH@)
find_path(
Hermes_INCLUDE_DIR
hermes/hermes_types.h
)
message("Hermes_INCLUDE_DIR: ${Hermes_INCLUDE_DIR}")

#-----------------------------------------------------------------------------
# C++ Version
#-----------------------------------------------------------------------------
set(CMAKE_CXX_STANDARD 17)
if( Hermes_INCLUDE_DIR )
get_filename_component(Hermes_DIR ${Hermes_INCLUDE_DIR} PATH)

#-----------------------------------------------------------------------------
# Find hermes.h
#-----------------------------------------------------------------------------
find_path(Hermes_INCLUDE_DIR hermes.h)
if (NOT Hermes_INCLUDE_DIR)
set(Hermes_FOUND OFF)
message(SEND_ERROR "FindHermes: Could not find hermes.h")
else()
#-----------------------------------------------------------------------------
# Find hermes install dir and hermes.so
#-----------------------------------------------------------------------------
get_filename_component(Hermes_DIR ${Hermes_INCLUDE_DIR} PATH)
find_library(
Hermes_LIBRARY
NAMES hermes
)
#-----------------------------------------------------------------------------
# Find all packages needed by Hermes
#-----------------------------------------------------------------------------
find_library(
Hermes_LIBRARY
NAMES hrun_client hrun_server
)

#-----------------------------------------------------------------------------
# Mark hermes as found
#-----------------------------------------------------------------------------
if( Hermes_LIBRARY )
set(Hermes_LIBRARY_DIR "")
get_filename_component(Hermes_LIBRARY_DIRS ${Hermes_LIBRARY} PATH)
# Set uncached variables as per standard.
set(Hermes_FOUND ON)
set(Hermes_INCLUDE_DIRS ${Hermes_INCLUDE_DIR})
set(Hermes_LIBRARIES ${Hermes_LIBRARY})
endif(Hermes_LIBRARY)
message("Hermes_LIBRARY: ${Hermes_LIBRARY}")

#-----------------------------------------------------------------------------
# Find all packages needed by hermes
#-----------------------------------------------------------------------------
# thallium
if(@HERMES_RPC_THALLIUM@)
find_package(thallium CONFIG REQUIRED)
if(thallium_FOUND)
message(STATUS "found thallium at ${thallium_DIR}")
endif()
endif()
# HermesShm
find_package(HermesShm CONFIG REQUIRED)
message(STATUS "found hermes_shm.h at ${HermesShm_INCLUDE_DIRS}")

#YAML-CPP
find_package(yaml-cpp REQUIRED)
if(yaml-cpp_FOUND)
message(STATUS "found yaml-cpp at ${yaml-cpp_DIR}")
endif()
# YAML-CPP
find_package(yaml-cpp REQUIRED)
message(STATUS "found yaml-cpp at ${yaml-cpp_DIR}")

#Cereal
find_package(cereal REQUIRED)
if(cereal)
message(STATUS "found cereal")
endif()
# Catch2
find_package(Catch2 3.0.1 REQUIRED)
message(STATUS "found catch2.h at ${Catch2_CXX_INCLUDE_DIRS}")

#if(HERMES_COMMUNICATION_MPI)
# MPICH
if(BUILD_MPI_TESTS)
find_package(MPI REQUIRED COMPONENTS C CXX)
message(STATUS "found mpi.h at ${MPI_CXX_INCLUDE_DIRS}")
#endif()
endif()

# librt
if(NOT APPLE)
find_library(LIBRT rt)
if(NOT LIBRT)
message(FATAL_ERROR "librt is required for POSIX shared memory")
endif()
endif()
# OpenMP
if(BUILD_OpenMP_TESTS)
find_package(OpenMP REQUIRED COMPONENTS C CXX)
message(STATUS "found omp.h at ${OpenMP_CXX_INCLUDE_DIRS}")
endif()

#-----------------------------------------------------------------------------
# Set all packages needed by hermes
#-----------------------------------------------------------------------------
# Cereal
find_package(cereal REQUIRED)
if(cereal)
message(STATUS "found cereal")
endif()

# Set the Hermes library dependencies
set(Hermes_LIBRARIES yaml-cpp thallium
MPI::MPI_CXX stdc++fs dl cereal::cereal
hermes_shm_data_structures hermes)
endif()
# Boost
find_package(Boost REQUIRED COMPONENTS regex system filesystem fiber REQUIRED)
if (Boost_FOUND)
message(STATUS "found boost at ${Boost_INCLUDE_DIRS}")
endif()

# Thallium
find_package(thallium CONFIG REQUIRED)
if(thallium_FOUND)
message(STATUS "found thallium at ${thallium_DIR}")
endif()

#-----------------------------------------------------------------------------
# Mark hermes as found and set all needed packages
#-----------------------------------------------------------------------------
if( Hermes_LIBRARY )
set(Hermes_LIBRARY_DIR "")
get_filename_component(Hermes_LIBRARY_DIRS ${Hermes_LIBRARY} PATH)
# Set uncached variables as per standard.
set(Hermes_FOUND ON)
set(Hermes_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${Hermes_INCLUDE_DIR})
set(Hermes_LIBRARIES
${HermesShm_LIBRARIES}
yaml-cpp
cereal::cereal
-ldl -lrt -lc -pthread
thallium
hermes
${Boost_LIBRARIES} ${Hermes_LIBRARY})
set(Hermes_CLIENT_LIBRARIES ${Hermes_LIBRARIES})
endif(Hermes_LIBRARY)

else(Hermes_INCLUDE_DIR)
message(STATUS "FindHermes: Could not find Hermes.h")
endif(Hermes_INCLUDE_DIR)

if(Hermes_FOUND)
if(NOT Hermes_FIND_QUIETLY)
message(STATUS "FindHermes: Found both Hermes.h and libhrun_client.so")
endif(NOT Hermes_FIND_QUIETLY)
else(Hermes_FOUND)
if(Hermes_FIND_REQUIRED)
message(STATUS "FindHermes: Could not find Hermes.h and/or libhrun_client.so")
endif(Hermes_FIND_REQUIRED)
endif(Hermes_FOUND)
33 changes: 0 additions & 33 deletions CMake/UseDoxygenDoc.cmake

This file was deleted.

Loading