The Dendro Project
Dendro (from the greek word, δενδρο, for tree) is a suite of parallel algorithm for the discretization and solution of partial differential equations that require discretization of second-order elliptic operators. It supports trilinear finite element discretizations constructed using octees. The package comprises of four main modules: a templated parallel utilities module ('par'), a bottom-up octree generation and 2:1 balancing module ('oct'), a meshing module ('oda'), a geometric multiplicative multigrid module ('omg'). It supports the PETSc (Argonne National Laboratories) objects 'Mat' and 'Vec' and provides interfaces to PETSc's linear and non-linear solvers. Dendro can be best viewed as an extension of PETSc's DA and DMMG modules that supports octree discretizations. The package is written entirely in C++ using the Standard Template Library (STL) and the Message Passing standard, MPI .
Highly scalable distributed sorting and selection library. The package implements BitonicSort, MergeSort, SampleSort and HykSort.
Parallel fast multipole method (FMM) for volume potentials based on the kernel independent FMM variant. Uses OpenMP, SSE, MPI, and integration with Intel Xeon Phi and NVIDIA GPUs.
Parallel machine learning tools: nearest neighbors, kernel matrix approximations, high dimensional FMM