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

209-in-situ-vis #210

Open
wants to merge 113 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
bca511e
enable vtk output and set timestep accordingly
felixschurk Aug 24, 2023
34a80a7
uncomment unused variable dxFines, nrMax to allow build
felixschurk Aug 25, 2023
4081d41
add CatalystAdaptor.h from CxxMultiChannelInputExample of ParaView
felixschurk Aug 28, 2023
b1b0474
update CMakeLists to include catalyst and print message about C compiler
Aug 28, 2023
9407ff3
add C as a language in IPPL to have the C compiler available
felixschurk Aug 29, 2023
7b6e9de
clean up import of target to have them better debuggable with Jens
felixschurk Aug 29, 2023
dec963d
update CMakeLists to "work" with Catalyst
Aug 29, 2023
90a93cd
resolve import problem of Catalyst 2.0 API
Aug 30, 2023
4ef47d5
cleanup CMake files for catalyst install
felixschurk Aug 30, 2023
053e3b9
update CMakeLists to follow scheme similar to ENABLE_HEFFTE, reindent
felixschurk Aug 30, 2023
6504e3c
add basic folder structure and CMakeLists for in-situ stream
felixschurk Aug 30, 2023
394a06c
add build, .cache, .idea and CMakeFiles folder to .gitignore
felixschurk Aug 30, 2023
1c094bd
add TestCatalystAdaptor copied from TestFieldBC
felixschurk Aug 30, 2023
fe5d3c2
move CatalystAdaptor to Stream folder
felixschurk Aug 30, 2023
fdb3933
comment out whole CatalystAdaptorExecute
felixschurk Aug 31, 2023
17c11ab
move find_package(catalyst) to lower src/CMakeList
felixschurk Aug 31, 2023
d6e30fd
move Heffte find_packge in sub directory
felixschurk Aug 31, 2023
74f5a25
read in environmental variables with getenv
felixschurk Aug 31, 2023
5070b58
add catalyst_pipeline python script to have test environment
felixschurk Aug 31, 2023
28cd653
include IpplException to take care of possible getenv failures
felixschurk Aug 31, 2023
f843c29
add catalyst node to print out time and cycle
felixschurk Aug 31, 2023
87f0593
include varios temporary files into the gitignore
felixschurk Aug 31, 2023
5bca762
add function call to export node information
felixschurk Sep 1, 2023
c2156c2
add coords for three dimensional mesh
felixschurk Sep 1, 2023
ba12d51
set topological definition based on loop over strings
felixschurk Sep 1, 2023
31991ba
fix index in spacing, check with different index dimensions
felixschurk Sep 1, 2023
b0215bb
describe topology and add fields as subscription, not yet working
felixschurk Sep 1, 2023
757798d
include values to catalyst node
felixschurk Sep 4, 2023
e4cf681
change channel names and blueprint according to CxxFullExample
felixschurk Sep 4, 2023
efffac8
remove commented out sections
felixschurk Sep 4, 2023
bf91622
conduit nodes according to conduit schemas, not working with catalyst
felixschurk Sep 4, 2023
a67839e
prefix every node with catalyst, pipeline can now be connected
felixschurk Sep 4, 2023
52748a2
change naming according to catalyst documentation and examples
felixschurk Sep 4, 2023
186b200
fix problem with wrong node
felixschurk Sep 4, 2023
4cf4508
fix tuple missmatch in CatalystAdaptor
felixschurk Sep 5, 2023
0c62fd9
add 2D catalyst adaptor test
felixschurk Sep 5, 2023
2125e42
cleanup CatalystAdaptor and add small comments to functions
felixschurk Sep 5, 2023
a64d32e
adapt daming of field_type to ippl conventions
felixschurk Sep 5, 2023
f28ff10
add Field_t as template argument to be able to compile both 2D and 3D…
felixschurk Sep 5, 2023
cf86898
include dumpVTK to TestCatalystAdaptor
felixschurk Sep 5, 2023
e89be9b
add script which would create pictures of our output
felixschurk Sep 5, 2023
0587081
add shifting of origin to local values to allow execution with MPI
felixschurk Sep 6, 2023
bca1f02
remove duplicated for domain_id
felixschurk Sep 6, 2023
c02f34c
fix indexing by spacing with usage of length function
felixschurk Sep 6, 2023
4384e88
cleanup in TestCatalystAdaptor
felixschurk Sep 6, 2023
8038ed2
add copy to cpu for cuda
felixschurk Sep 7, 2023
c9ddd5b
change pipeline to produce pictures for TestCatalystAdaptor
felixschurk Sep 7, 2023
3642453
change PenningTrap to use Catalyst
felixschurk Sep 7, 2023
237854f
change template from typename to class in Execute function and adhere to
felixschurk Sep 11, 2023
fad90fb
add python script for dumping csv of density
felixschurk Sep 11, 2023
5f81366
fix overlooked rename of Field_t to Field
felixschurk Sep 11, 2023
257ab27
change templation to Field class
felixschurk Sep 11, 2023
8e1adef
add shrinkview call to catalyst adaptor
felixschurk Sep 11, 2023
93c40b2
remove ghost cells from dimensions
felixschurk Sep 11, 2023
f580ba2
add script for extracting penningtrap pictures for paraview
felixschurk Sep 13, 2023
e5ebc18
add data and datasets folder to gitignore
felixschurk Sep 13, 2023
de8f4b7
add copy from GPU to CPU and then apply the striping of the ghost cells
felixschurk Sep 13, 2023
23078ae
change from create_mirror_view to create_mirror_view_and_copy
Sep 13, 2023
2dcb3cf
change to subview to kickout ghost cells
felixschurk Sep 13, 2023
4b51599
remove ghost cells by loops on the host device
felixschurk Sep 13, 2023
2870f69
minor cleanup
felixschurk Sep 13, 2023
0731d4b
add static assertion for dimension3
felixschurk Sep 14, 2023
06d603e
update extract script which does not have glitches
felixschurk Sep 14, 2023
3f49b8c
update extract catalyst to include ghost cells
felixschurk Sep 14, 2023
e79ab79
kick out files and only subscripbe to registration name..
Sep 14, 2023
a0382c7
add super messy extension for vector field
felixschurk Sep 19, 2023
f7654c3
try setting data with stride and offset
felixschurk Sep 19, 2023
8150ae6
update assignment, however that is now empty but 'runs'
felixschurk Sep 19, 2023
62d76f4
change subscription to data for vector field
felixschurk Sep 19, 2023
365b526
fix lenght of vfield conduit node
felixschurk Sep 19, 2023
dc7f9cc
remove unused lines of code from testing
felixschurk Sep 19, 2023
5c0b0b0
cleanup CatalystAdaptor
felixschurk Sep 19, 2023
2321ce1
move assignment of data values to separate function
felixschurk Sep 19, 2023
4360f8a
add simple extract script for vector field values
felixschurk Sep 19, 2023
9e49b7f
add changes from #6788218f5f93cdeb751947d2c1e2a56876868d23
felixschurk Sep 20, 2023
ce6fe89
add overload of setData function for scalar and vector field
felixschurk Sep 20, 2023
5a3d4bd
fix shock that went thru rendering when updating the field
felixschurk Sep 21, 2023
04921b3
remove cast to in, as there is no longer an error thrown
felixschurk Sep 22, 2023
ab0a994
add first draft of catalyst adaptor passing in the particles
felixschurk Sep 28, 2023
18716b6
add lenght of description for connectivity an extractor fields
felixschurk Sep 28, 2023
8628bb7
add particle extractor
felixschurk Sep 28, 2023
2ef303f
update extractor as vtm dump fails
felixschurk Sep 28, 2023
07665ab
add particle velocity to data description
felixschurk Sep 28, 2023
e8a0afe
add padding to fit the memory layout
felixschurk Sep 28, 2023
23b3bcd
add adios_initialize function copied from example
felixschurk Sep 28, 2023
ee3e476
change set to set_external for coordset to have zero copy access
felixschurk Sep 28, 2023
b8e7d40
include adios file and minor changes
felixschurk Sep 28, 2023
00e5c5c
add dump particle script
felixschurk Sep 28, 2023
895df6a
add upper method to call both field and particle at once
felixschurk Sep 28, 2023
ed58383
update script to extract both particles and field
felixschurk Sep 28, 2023
ef82ad2
add optional return of node to catalyst execute functions
felixschurk Sep 28, 2023
db6d598
rename Execute to Execute_Field to have it better clarified
felixschurk Sep 28, 2023
13887f7
change position of catalyst adaptor to extract both density field and…
felixschurk Sep 29, 2023
a61ef64
cleanup CatalystAdaptor
felixschurk Sep 29, 2023
6bc5d8f
add guard to print node information only once
felixschurk Sep 29, 2023
012fe6d
add test script for running ont he cluster and extracting field as pa…
felixschurk Sep 29, 2023
e589617
change est to set_string to allow the constant reference
felixschurk Oct 4, 2023
6ae7a19
add position as a value for the adaptor for the particles
felixschurk Oct 5, 2023
f869bd7
add pragma guard around CatalystCalls, cleanup header
felixschurk Oct 10, 2023
e2042ec
remove extractor scripts
felixschurk Oct 17, 2023
9e0960e
add extractor script for density field and particles
felixschurk Oct 17, 2023
1d71137
add extractor for electric field
felixschurk Oct 17, 2023
cd96009
update adaptor and testcatalyst to try out adios catalyst
felixschurk Oct 17, 2023
274d4e6
fix particles with only using the particle catalyst execute function
felixschurk Oct 29, 2023
e414f19
Merge branch 'dev-3.2.0' into 209-in-situ-vis
felixschurk Dec 8, 2023
0840647
remove spurious sutff created by merge
felixschurk Dec 8, 2023
b9857ec
rework files to work with new classes
felixschurk Dec 8, 2023
26367d0
add DefaultExecution space to ParticleContainer
felixschurk Dec 13, 2023
444277a
update catalyst adaptor to work with new particlecontainer
felixschurk Dec 13, 2023
d4dc69a
fix deletion of lines from merge commit
felixschurk Dec 14, 2023
ba5b00d
add initial draft for IN-SITU documentation
felixschurk Jan 10, 2024
a0de909
Merge branch 'master' into 209-in-situ-vis
felixschurk May 15, 2024
593b5f9
update catalyst call arguments
felixschurk May 23, 2024
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
20 changes: 18 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,22 @@ manual/*.idx
manual/*.lof
manual/*.lot
manual/ippl_user_guide.pdf
*~
*.~

# ignure vtk dump stuff
data/
datasets*/
*.vtk

# CMake and Build folder
CMakeFiles/
build*
tags
compile_commands.json

# temporary folder
.cache/
.idea/
*.dat
__pycache__

*.~
12 changes: 9 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
cmake_minimum_required (VERSION 3.20.3)
project (IPPL CXX)
cmake_minimum_required (VERSION 3.24)
project (IPPL LANGUAGES C CXX)

set (IPPL_VERSION_MAJOR 3)
set (IPPL_VERSION_MINOR 0.2)
include(FetchContent)
Expand Down Expand Up @@ -142,8 +143,10 @@ endif()
set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules")

find_package (MPI REQUIRED)
message (STATUS "The C compiler identification is: ${CMAKE_C_COMPILER_ID}")
message (STATUS "The C++ compiler identification is: ${CMAKE_CXX_COMPILER_ID}")
message (STATUS "The C++ compiler version is: ${CMAKE_CXX_COMPILER_VERSION}")
message (STATUS "The MPI C compiler is: ${MPI_C_COMPILER}")
message (STATUS "The MPI C++ compiler is: ${MPI_CXX_COMPILER}")
message (STATUS "The underlying C++ compiler is: ${CMAKE_CXX_COMPILER}")

Expand All @@ -154,6 +157,7 @@ endif()


option (ENABLE_FFT "Enable FFT transform" OFF)

if (ENABLE_FFT)
add_definitions (-DENABLE_FFT)
if(NOT Heffte_VERSION)
Expand Down Expand Up @@ -200,6 +204,7 @@ if (ENABLE_FFT)
endif ()

option (ENABLE_SOLVERS "Enable IPPL solvers" OFF)
option (ENABLE_CATALYST "Build example with Catalyst enabled" OFF)

add_subdirectory (src)

Expand All @@ -220,6 +225,7 @@ if (ENABLE_ALPINE)
add_subdirectory (alpine)
endif ()


option (ENABLE_UNIT_TESTS "Enable unit tests" OFF)
if (ENABLE_UNIT_TESTS)
if (NOT ENABLE_FFT)
Expand Down Expand Up @@ -252,7 +258,7 @@ install (
RENAME ${PROJECT_NAME}Config.cmake
)

# vi: set et ts=4 sw=4 sts=4:
# vim: set et ts=4 sw=4 sts=4:

# Local Variables:
# mode: cmake
Expand Down
90 changes: 90 additions & 0 deletions IN-SITU.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# In Situ Visualization with Catalyst
If Catalyst is not available as a module on the machine, this is the first to build.
For a more indepth documentation on how to build catalyst check the documentation, here are only minimal steps described.
## Build and Install Catalyst
### Requirements for Catalyst
* MPI

1. Configuration
```sh
git clone https://gitlab.kitware.com/paraview/catalyst.git
cd catalyst
git checkout v2.0.0-rc4
cmake -S . \
-B build \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCATALYST_USE_MPI=ON \
-DCMAKE_INSTALL_PREFIX=../catalyst_install
```
2. Build and Test
`-j` flag is for parallel build and parallel test
```sh
cmake --build build -j 4
cmake --install build
ctest --test-dir build/tests -j 4
```
The tests should all pass, however for some of them you need to export the `catalyst_DIR` path.
So inspect the output of the failed ones why they failed!

## Build IPPL with Catalyst
I would recommend to use the install script from IPPL for building IPPL and then after that setting `ENABLE_CATALYST` to `ON`, this procedure would then be:
```sh
./ippl-build-scripts/999-build-everything -t serial -i
cmake ippl/build_serial
```
Now in order you need to pass the `Catalyst_Dir` path to the install script.
You can do that in the cli over:
```sh
cmake build_serial\
-DENABLE_CATALYST=ON \
-DCATALYST_DIR=<absolute_path_to_catalyst_install>
```
or using the cmake gui over:
```sh
ccmake build_serial
```

Now build again and you will have catalyst enabled.


## Starting a simulation with Catalyst
An general set for examples can be seen on [https://gitlab.kitware.com/paraview/paraview/-/tree/master/Examples/Catalyst2](https://gitlab.kitware.com/paraview/paraview/-/tree/master/Examples/Catalyst2).
Generally the setup is always similar and starting a simulation is usually as:
```sh
./some-program <program_args> ./<path_to_python_script>
```
Some sample scripts for ippl do lay under the `./test/stream/` directory.
For all scripts the `CATALYST_IMPLEMENTATION_NAME` should be set to `paraview` and `CATALYST_IMPLEMENTATION_PATHS` should be set to the proper library in the ParaView folder.
```sh
export CATALYST_IMPLEMENTATION_PATHS="<path_to_downlaod_folder_of_paraview>/ParaView-5.11.1-MPI-Linux-Python3.9-x86_64/lib/catalyst"
export CATALYST_IMPLEMENTATION_NAME="ParaView"
```

I assume that you are familiar with the examples and manage to start them with catalyst.

# Tips and Tricks
## ParaView Live
In order to use the ParaView live feature with an existing Catalyst script the following options need to be set
```python
# Catalyst options
from paraview import catalyst
options = catalyst.Options()
options.GlobalTrigger = 'TimeStep'
options.EnableCatalystLive = 1
options.CatalystLiveTrigger = 'TimeStep'
```
After these settings you can start `ParaView -> Catalyst -> Connect`, accept the port and then ParaView is waiting for catalyst to connect.
Now also set the simulation to pause over `ParaView -> Catalyst -> Pause Simulation`, then start the simulation.
Now when it worked out you can see on Pipeline Browser of ParaView a small symbol left from catalyst stuff, this needs to be activated to then access the catalyst data.

## Creating a new script
Using ParaView Live you can quite easy get the data into the position and angle that you like for the simulation and depending on that you can then create different filter to exporting data.
Some choices do include dumping a csv, creating a vtp or also dumping images.

General workflow would be:
1. Add `CatalystAdaptor::Initialize()` directly after the MPI/IPPL initialize
2. Add `CatalystAdaptor::Execute.....()` where you want your data to be extracted
3. Add `CatalystAdaptor::Finalize()` directly before the MPI/IPPL finalize
4. Start simulation with matching channel names in live mode
5. Generate extraction / dump script
6. Pass the script as argument to the program executable
37 changes: 37 additions & 0 deletions adios2.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0"?>

<!-- For more details about how configure it : -->
<!-- https://adios2.readthedocs.io/en/latest/engines/engines.html#sst-sustainable-staging-transport -->
<adios-config>
<!-- For Simulation Nodes -->
<io name="Writer">
<engine type="SST">
<!-- Define the number of readers needed to start the simulation -->
<!-- This should correspond to as many readers launched an not the number of processes per reader -->
<parameter key="RendezvousReaderCount" value="1" />

<!-- Define max number of step cached for the Reader -->
<parameter key="QueueLimit" value="5" />
<!-- Define the number of step stored for late-arriving readers -->
<parameter key="ReserveQueueLimit" value="3" />

<!-- Define writer's behavior when the queue is full -->
<parameter key="QueueFullPolicy" value="Block" />

<!-- First and last step will never be discarded -->
<parameter key="FirstTimestepPrecious" value="true" />
<parameter key="AlwaysProvideLatestTimestep" value="true" />

<!-- Specify the timeout -->
<parameter key="OpenTimeoutSecs" value="100.0" />
</engine>
</io>

<!-- For Analysis Nodes -->
<io name="Reader">
<engine type="SST">
<!-- Specify the timeout -->
<parameter key="OpenTimeoutSecs" value="100.0" />
</engine>
</io>
</adios-config>
2 changes: 1 addition & 1 deletion alpine/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ set (IPPL_LIBS ippl ${MPI_CXX_LIBRARIES})
set (COMPILE_FLAGS ${OPAL_CXX_FLAGS})

add_executable (PenningTrap PenningTrap.cpp)
target_link_libraries (PenningTrap ${IPPL_LIBS})
target_link_libraries (PenningTrap PUBLIC ${IPPL_LIBS})

add_executable (LandauDamping LandauDamping.cpp)
target_link_libraries (LandauDamping ${IPPL_LIBS})
Expand Down
4 changes: 2 additions & 2 deletions alpine/ParticleContainer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@

// Define the ParticlesContainer class
template <typename T, unsigned Dim = 3>
class ParticleContainer : public ippl::ParticleBase<ippl::ParticleSpatialLayout<T, Dim>>{
using Base = ippl::ParticleBase<ippl::ParticleSpatialLayout<T, Dim>>;
class ParticleContainer : public ippl::ParticleBase<ippl::ParticleSpatialLayout<T, Dim>,Kokkos::DefaultExecutionSpace>{
using Base = ippl::ParticleBase<ippl::ParticleSpatialLayout<T, Dim>, Kokkos::DefaultExecutionSpace>;

public:
ippl::ParticleAttrib<double> q; // charge
Expand Down
19 changes: 16 additions & 3 deletions alpine/PenningTrap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,7 @@ const char* TestName = "PenningTrap";
#include <Kokkos_Random.hpp>
#include <chrono>
#include <iostream>
#include <random>
#include <set>
#include <string>
#include <vector>

#include "datatypes.h"

Expand All @@ -42,9 +39,18 @@ const char* TestName = "PenningTrap";
#include "Manager/PicManager.h"
#include "PenningTrapManager.h"

#ifdef ENABLE_CATALYST
#include "Stream/InSitu/CatalystAdaptor.h"
#endif

int main(int argc, char* argv[]) {
ippl::initialize(argc, argv);
{

#ifdef ENABLE_CATALYST
CatalystAdaptor::Initialize(argc, argv);
#endif

Inform msg(TestName);
Inform msg2all(TestName, INFORM_ALL_NODES);

Expand Down Expand Up @@ -72,12 +78,19 @@ int main(int argc, char* argv[]) {

manager.setTime(0.0);


msg << "Starting iterations ..." << endl;


manager.run(manager.getNt());

msg << "End." << endl;

#ifdef ENABLE_CATALYST
CatalystAdaptor::Finalize();
#endif


IpplTimings::stopTimer(mainTimer);
IpplTimings::print();
IpplTimings::print(std::string("timing.dat"));
Expand Down
9 changes: 9 additions & 0 deletions alpine/PenningTrapManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@
#include "Random/NormalDistribution.h"
#include "Random/Randn.h"

#ifdef ENABLE_CATALYST
#include <optional>
#include "Stream/InSitu/CatalystAdaptor.h"
#endif

using view_type = typename ippl::detail::ViewType<ippl::Vector<double, Dim>, 1>::view_type;

template <typename T, unsigned Dim>
Expand Down Expand Up @@ -279,6 +284,10 @@ class PenningTrapManager : public AlpineManager<T, Dim> {

// scatter the charge onto the underlying grid
this->par2grid();
#ifdef ENABLE_CATALYST
std::optional<conduit_cpp::Node> node = std::nullopt;
CatalystAdaptor::Execute_Particle(it, this->time_m, ippl::Comm->rank(), pc, node);
#endif

// Field solve
IpplTimings::startTimer(SolveTimer);
Expand Down
29 changes: 25 additions & 4 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,9 @@ add_ippl_sources (Ippl.cpp)

add_subdirectory (Communicate)
if (ENABLE_FFT)

set (HEFFTE_LIBRARY Heffte)
add_subdirectory (FFT)
else()
set (HEFFTE_LIBRARY "")
endif()
add_subdirectory (Field)
add_subdirectory (FieldLayout)
Expand All @@ -82,6 +81,8 @@ add_subdirectory (Utility)
add_subdirectory (Expression)
add_subdirectory (Types)
add_subdirectory (Partition)
add_subdirectory (Stream)
add_subdirectory (Stream/InSitu)
add_subdirectory (Random)

if (ENABLE_SOLVERS)
Expand All @@ -91,6 +92,15 @@ if (ENABLE_SOLVERS)
add_subdirectory (LinearSolvers)
endif ()

if (ENABLE_CATALYST)
find_package(catalyst 2.0 REQUIRED)
message (STATUS "Enable Catalyst")
message (STATUS "Found catalyst_DIR: ${catalyst_DIR}")
endif()

if (ENABLE_AMR)
add_subdirectory(AmrParticle)
endif ()
include_directories (
BEFORE ${CMAKE_CURRENT_SOURCE_DIR}
)
Expand All @@ -103,9 +113,20 @@ string(REPLACE "SERIAL;" "" KokkosAccelerators "${KokkosAccelerators}")
if ("${KokkosAccelerators}" MATCHES ".+;.+")
set(TimerFences false)
endif()

message("Timer fences for this build: ${TimerFences}")
target_compile_definitions(ippl PUBLIC IPPL_ENABLE_TIMER_FENCES=${TimerFences})
target_link_libraries(ippl PUBLIC Kokkos::kokkos ${HEFFTE_LIBRARY})

target_compile_definitions(ippl PUBLIC
$<$<BOOL:${ENABLE_FFT}>:-DENABLE_FFT>
$<$<BOOL:${ENABLE_CATALYST}>:-DENABLE_CATALYST>
IPPL_ENABLE_TIMER_FENCES=${TimerFences}
)

target_link_libraries(ippl PUBLIC
Kokkos::kokkos
$<$<BOOL:${ENABLE_FFT}>:Heffte::Heffte>
$<$<BOOL:${ENABLE_CATALYST}>:catalyst::catalyst>
)

install (TARGETS ippl DESTINATION lib)
install (FILES ${IPPL_BASEDIR_HDRS} DESTINATION include)
Expand Down
24 changes: 24 additions & 0 deletions src/Stream/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
set (_SRCS
)

set (_HDRS
)

include_DIRECTORIES (
${CMAKE_CURRENT_SOURCE_DIR}
)

add_ippl_sources (${_SRCS})
add_ippl_headers (${_HDRS})

install (FILES ${_HDRS} DESTINATION include/Stream)


# vi: set et ts=4 sw=4 sts=4:

# Local Variables:
# mode: cmake
# cmake-tab-width: 4
# indent-tabs-mode: nil
# require-final-newline: nil
# End:
Loading