"Dendro" in Greek language means tree. The Dendro library is a large scale (262K cores on ORNL's Titan) distributed memory adaptive octree framework. The main goal of Dendro is to perform large scale multiphysics simulations efficiently in mordern supercomputers. Dendro consists of efficient parallel data structures and algorithms to perform variational (finite element) methods and finite difference mthods on 2:1 balanced arbitary adaptive octrees which enables the users to perform simulations raning from black holes (binary black hole mergers) to blood flow in human body, where applications ranging from relativity, astrophysics to biomedical engineering.
This repository contains the C++ Dendro library. There are a few examples included, but the majority of the simulations that use this library are housed in a separate repository. You can check out Dendro-GR, a large portion of the General Relativity project that does the full physics simulations. In particular, be sure to check out the examples in the README, such as the NLSigma
simulation.
You can clone the repository using git clone https://github.com/paralab/Dendro-5.01.git
You need CMake to build dendro. Create a build directory using mkdir build
. Then go into the build directory by cd build
then execute ccmake ..
to generate the make files. You can build Dendro-5.0 with several options (via ccmake
or CMake flags of the same name).
ALLTOALLV_FIX
:OFF
, This must be set toOFF
.DIM_2
:OFF
, This can be turned on if you need to run Dendro-5.0 in a 2D simulation. When set toOFF
, it assumes a 3D domain.HILBERT_ORDERING
:ON
, This specify which SFC to use to partition the data. Seetting it toON
means it will use the Hilbert curve, otherwise it will use the Morton curve for partitioning.PROFILE_TREE_SORT
:OFF
NUM_NPES_THRESHOLD
: the square root ofP
(number of processors)SPLITTER_SELECTION_FIX
:ON
. This will perform the data exchange in the octree partitioning in stages. This is mandatory when you run Dendro in very large scale.
We are in the process of writing more complete documentation for how to build a project with Dendro. This repository should be included as a whole submodule or as its own folder.
You can see the Dendro-GR repository (especially the NLSigma
case) for multiple working examples of how Dendro is incorporated.
We have performed octree generation and partitioning up to 262144 cores in ORNL's titan super computer. We have managed to partition 1.3x10^12 octants among 262144 processors with in 4 seconds.
- Milinda Fernando, David Neilsen, Hyun Lim, Eric Hirschmann, Hari Sundar, ”Massively Parallel Simulations of Binary Black Hole Intermediate-Mass-Ratio Inspirals” SIAM Journal on Scientific Computing 2019. 'https://doi.org/10.1137/18M1196972'
- Milinda Fernando, David Neilsen, Hari Sundar, ”A scalable framework for Adaptive Computational General Relativity on Heterogeneous Clusters”, (ACM International Conference on Supercomputing, ICS’19)
- Milinda Fernando, Dmitry Duplyakin, and Hari Sundar. 2017. ”Machine and Application Aware Partitioning for Adaptive Mesh Refinement Applications”. In Proceedings of the 26th International Symposium on High-Performance Parallel and Distributed Computing (HPDC ’17). ACM, New York, NY, USA, 231-242. DOI: 'https://doi.org/10.1145/3078597.3078610'