Software & Data

Geogram is a programming library of geometric algorithms. It includes a simple yet efficient Mesh data structure (for surfacic and volumetric meshes), exact computer arithmetics (a-la Shewchuck, implemented in GEO::expansion ), a predicate code generator ( PCK : Predicate Construction Kit), standard geometric predicates (orient/insphere), Delaunay triangulation, Voronoi diagram, spatial search data structures, spatial sorting) and less standard ones (more general geometric predicates, intersection between a Voronoi diagram and a triangular or tetrahedral mesh embedded in n dimensions). The latter is used by FWD/WarpDrive, the first algorithm that computes semi-discrete Optimal Transport in 3d that scales up to 1 million Dirac masses.

Latest release: Geogram-0.9 (2014/11/25)

[Download] [Documentation]

The Concurrent Number Cruncher


The Concurrent Number Cruncher (CNC): a general purpose symmetric sparse solver on the GPU. This library demonstrates how to combine recent GPU programming techniques and new GPU dedicated APIs with high performance computing strategies to implement a sparse general-purpose linear solver. The CNC was developped by Luc Buatois during his Ph.D.

CNC is now part of the OpenNL library.

[Link: CNC coupled with the OpenFoam FEM solver]




OpenNL (Open Numerical Library) is a library for solving sparse linear systems, especially designed for the Computer Graphics community. The goal for OpenNL is to be as small as possible, while offering the subset of functionalities required by this application field. The Makefiles of OpenNL can generate a single .c + .h file, very easy to integrate in other projects. The distribution includes an implementation of our Least Squares Conformal Maps parameterization method.

New version: OpenNL 3.2.1, includes support for CUDA and Fermi architecture (Concurrent Number Cruncher and Nathan Bell's ELL formats)


OpenNL offers the following set of functionalities:

  • Efficient sparse matrix data structure (for non-symmetric and symmetric matrices)
  • Iterative builder for sparse linear system
  • Iterative builder for sparse least-squares problems
  • Iterative solvers: conjugate gradient, BICGStab, GMRES
  • Preconditionners: Jacobi, SSOR
  • Iterative solver on the GPU (Concurrent Number Cruncher and Nathan Bell's ELL)
  • Sparse direct solvers: OpenNL can be linked with SuperLU
  • Simple demo program with LSCM (Least Squares Conformal Maps)

Page 1 of 4