GSLIB is a library for Gather/Scatter-type nearest neighbor data exchanges for SEM, FEM, and finite-difference applications. It can also be used for efficient transpose and reduction operations and for smoothing, prolongation, and restriction in AMG and other solvers.

Any global-to-local map, $l(i) = g(j(i))$, can be expressed as the matrix-vector product $l=Qg$, where $Q$ is a Boolean matrix. GSLIB supports the parallel matrix-vector products $Q$, $Q^T$, and $QQ^T$. Users simply provide the local-to-global map $j(i)$ on each processor. GSLIB identifies shared global vertices across multiple processors and sets up the required communication exchange to use the fastest of three available algorithms. The user does not need to know or express data locality to efficiently establish communication on anywhere from one to millions of ranks.

GSLIB supports

Additional features include:

Applications and libraries using GSLIB include Nek5000, NekCEM, Nektar++, and MOAB.

In CEED, GSLIB is primarily involved in the efforts of the Software thrust.

For more information, see the GSLIB GitHub repository: