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 .
Download Dendro
Dendro Manual
Dendro Documentation
Dendro FAQ 


Parallel Kernel Independent Fast Multipole Method (pKIFMM).  This package implements a point FMM version using MPI, OpenMP, and GPU acceleration.  pKIFMM requires Dendro 3.0.1PETSc 3.0.0, and FFTW 3.x.
Download pKIFMM


Highly scalable distributed sorting and selection library. The package implements BitonicSort, MergeSort, SampleSort and HykSort.
Download 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.
Download pvfmm


Parallel machine learning tools: nearest neighbors, kernel matrix approximations, high dimensional FMM
libaskit page