The SENSEI project takes aim at a set of research challenges for enabling scientific knowledge discovery within the context of in situ processing at extreme-scale concurrency. This work is motivated by a widening gap between FLOPs and I/O capacity which will make full-resolution, I/O-intensive post hoc analysis prohibitively expensive, if not impossible.
We focus on new algorithms for analysis, and visualization - topological, geometric, statistical analysis, flow field analysis, pattern detection and matching - suitable for use in an in situ context aimed specifically at enabling scientific knowledge discovery in several exemplar application areas of importance to DOE. Complementary to the in situ algorithmic work, we focus on several leading in situ infrastructures, and tackle research questions germane to enabling new algorithms to run at scale across a diversity of existing in situ implementations.
Our intent is to move the field of in situ processing in a direction where it may ultimately be possible to write an algorithm once, then have it execute in one of several different in situ software implementations. The combination of algorithmic and infrastructure work is grounded in direct interactions with specific application code teams, all of which are engaged in their own R&D aimed at evolving to the exascale.
Quick links |
---|
Project Organization |
Build and Install |
Using the SENSEI Library |
The SENSEI library contains core base classes that declare the AnalysisAdaptor API which is used to interface to in situ infrastructures and implement custom analyses; the DataAdaptor API which AnalysisAdaptors use to access simulation data in a consistent way; and a number of implementations of both. For more information see our SC16 paper.
Class | Description |
---|---|
DataAdaptor | Base class declaring data adaptor API |
VTKDataAdaptor | Implementation for use with VTK data sets. This adaptor can be used to pass VTK data sets from the simulation to the Analysis. |
ADIOSDataAdaptor | Implementation that serves up data from ADIOS. For use in an ADIOS End point. |
Class | Description |
---|---|
AnalysisAdaptor | Base class declaring analysis adaptor API |
ADIOSAnalysisAdaptor | Implementation for using ADIOS from your simulation. |
LibsimAnalysisAdaptor | Implementation for using Libsim from your simulation. |
CatalystAnalysisAdaptor | Implementation for using Catalyst from your simulaiton. |
Autocorrelation | Implementation that computes autocorrelation |
Histogram | Implementation that computes histograms. |
PosthocIO | Implementation that writes uniform meshes using VTK or MPI I/O. This was used in year II miniapp campaign. |
VTKPosthocIO | Implementation that writes VTK data sets using VTK XML format to the ".visit" format readable by VisIt, or ".pvd" format readable by ParaView. |
ConfigurableAnalysis | Implementation that reads an XML configuration to select and configure one or more of the other analysis adaptors. This can be used to quickly switch between the analysis adaptors at run time. |
SENSEI ships with a number of mini-apps that demonstrate use of the SENSEI library with custom analyses and the supported in situ infrastructures. When the SENSEI library is enabled the mini-apps will make use of any of the supported in situ infrastructures that are enabled. When the SENSEI library is disabled mini-apps are restricted to the custom analysis such as histogram and autocorrelation.
More information on each mini-app is provided in the coresponding README in the mini-app's source directory.
-
Parallel3D The miniapp from year I generates data on a uniform mesh and demonstrates usage with in situ infrasturctures and histogram analysis.
-
Oscillators The miniapp from year II generates time varying data on a uniform mesh and demonstrates usage with in situ infrasturctures, histogram, and autocorrelation analyses.
-
Newton This Python n-body miniapp demonstrates usage of in situ infrastructures and custom analyses from Python.
End points are programs that receive and analyze simulation data through ADIOS. The end point reads data being serialized by the ADIOS analysis adaptor and pass it back into a SENSEI bridge for further analysis.
The SENSEI project uses CMake 3.0 or later. The CMake build options allow you to choose which of the mini-apps to build as well as which frameworks to enable. It is fine to enable multiple infrastructures, however note that Catalyst and Libsim are currently mutually exclusive options due to their respective use of different versions of VTK.
$ mkdir build
$ cd build
$ ccmake .. # set one or more -D options as needed
$ make
$ make install
Build Option | Default | Description |
---|---|---|
ENABLE_SENSEI | ON | Enables the core SENSEI library. Requires VTK |
ENABLE_PYTHON | OFF | Enables Python bindings. Requires VTK, Python, Numpy, mpi4py, and SWIG. |
ENABLE_VTK_GENERIC_ARRAYS | OFF | Enables use of VTK's generic array feature. |
ENABLE_CATALYST | OFF | Enables the Catalyst analysis adaptor. Depends on ParaView Catalyst. Set ParaView_DIR. |
ENABLE_CATALYST_PYTHON | OFF | Enables Python features of the Catalyst analysis adaptor. |
ENABLE_ADIOS | OFF | Enables ADIOS adaptors and endpoints. Set ADIOS_DIR. |
ENABLE_LIBSIM | OFF | Enables Libsim data and analysis adaptors. Requires Libsim. Set VTK_DIR and LIBSIM_DIR. |
ENABLE_VTK_IO | OFF | Enables adaptors to write to VTK XML format. |
ENABLE_VTK_MPI | OFF | Enables MPI parallel VTK filters, such as parallel I/O. |
ENABLE_PARALLEL3D | ON | Enables the parallel 3D mini-app. |
ENABLE_OSCILLATORS | ON | Enables the oscillators mini-app. |
VTK_DIR | Set to the directory containing VTKConfig.cmake. | |
ParaView_DIR | Set to the directory containing ParaViewConfig.cmake. | |
ADIOS_DIR | Set to the directory containing ADIOSConfig.cmake | |
LIBSIM_DIR | Path to libsim install. |
cmake -DENABLE_SENSEI=ON -DENABLE_ADIOS=ON -DVTK_DIR=[your path] -DADIOS_DIR=[your path] ..
Can be used with either ParaView_DIR
when configuring in conjunction with
Catalyst, or VTK_DIR
otherwise.
cmake -DENABLE_SENSEI=ON -DENABLE_LIBSIM=ON -DVTK_DIR=[your path] -DLIBSIM_DIR=[your path] ..
VTK_DIR
should point to the VTK used by Libsim.
cmake -DENABLE_SENSEI=ON -DENABLE_CATALYST=ON -DParaView_DIR=[your path] ..
Optionally, -DENABLE_CATALYST_PYTHON=ON
will enable Catalyst Python scripts.
cmake -DENABLE_SENSEI=ON -DENABLE_VTK_IO=ON -DVTK_DIR=[your path] ..
Can be used with either ParaView_DIR
or VTK_DIR
.
In essence this is as simple as adding -DENABLE_PYTHON=ON
. However, VTK (or
ParaView when used with Catalyst) needs to be built with Python enabled, and
NumPy, mpi4py, and SWIG are required. Note that there are some caveats when
used with Catalyst and Libsim. These are described in more detail in the Newton
mini app README.
To use SENSEI from your CMake based project include the SENSEI CMake config in your CMakeLists.txt.
find_package(SENSEI REQUIRED)
add_executable(myexec ...)
target_link_libraries(myexec sensei ...)
Additionally, your source code may need to include senseiConfig.h
to capture
compile time configuration.
The SENSEI framework includes the following software:
- DIY2, Copyright (c) 2015, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy).
- {fmt}, Copyright (c) 2012-2016, Victor Zverovich.
- pugixml, Copyright (c) 2006-2016 Arseny Kapoulkine.
The SENSEI framework makes use of (links to) the following software:
- ADIOS, Copyright (c) 2008 - 2009. UT-BATTELLE, LLC. Copyright (c) 2008 - 2009. Georgia Institute of Technology.
- ParaView/Catalyst, Copyright (c) 2005-2008 Sandia Corporation, Kitware Inc.
- VisIt/libsim, Copyright (c) 2000 - 2016, Lawrence Livermore National Security, LLC.
- VTK, Copyright (c) 1993-2015 Ken Martin, Will Schroeder, Bill Lorensen.
For full license information regarding included and used software please refer to the file THIRDPARTY_SOFTWARE_LICENSES.