Our software stack is driven by the OpenCilk compiler, which is a more robust production version of Tapir/LLVM. It supports the same languages (including C, C++, and Cilk) and backends as Tapir/LLVM and has support for parallelism, productivity tools, and instrumentation technology.

Visit our GitHub page for more information.

ML-POD image description

ML-POD is a new software package in LAMMPS for training machine-learning interatomic potentials based on proper orthogonal descriptors (POD) and running MD simulations with the trained POD potentials. The ML-POD package has the features:

  • Implement a variety of many-body (up to seven-body) POD and SNAP descriptors
  • Allow users to fit ML potentials directly in LAMMPS
  • Allow users to run MD simulations and structure optimizations with the trained potentials

Exasim image description

Exasim is an open-source software for generating discontinuous Galerkin codes to numerically solve parametrized partial differential equations (PDEs) on different computing platforms with distributed memory. It combines high-level languages and low-level languages to easily cunstruct parametrized PDE models and automatically produce high-performance C++ codes. The construction of parametrized PDE models and the generation of the stand-alone C++ production code are handled by high-level languages, while the production code itself can run on various machines, from laptops to the largest supercomputers, with both CPU and Nvidia GPU processors.

Exasim

LAMMPS image description

QuantumESPRESSO image description

DFTK image description

OpenCilk task-parallel programming platform image description

OpenCilk logo

OpenCilk is a state-of-the-art open-source implementation of the Cilk task-parallel programming platform. OpenCilk supports writing fast parallel programs using the Cilk task-parallel language extensions to C/C++. In addition, OpenCilk provides a platform to develop compilers, runtime systems, and program-analysis tools for task-parallel code.

The OpenCilk system has three core components: a compiler, a runtime-system library, and a suite of Cilk tools.

The OpenCilk compiler is based on the LLVM compiler infrastructure. The OpenCilk compiler extends LLVM with Tapir, a compiler IR for task parallelism that enables effective compiler analysis and optimization of task-parallel programs. Tapir provides a generic representation of task-parallel control flow that is independent of the Cilk language and the runtime implementation.

The OpenCilk runtime library is based on the Cheetah runtime system. This runtime system schedules and load-balances the Cilk computation using an efficient randomized work-stealing scheduler. The scheduler offers a mathematical guarantee to schedule efficiently on the available parallel processors on a shared-memory multicore. Furthermore, the OpenCilk runtime system ensures that this theoretical efficiency is borne out in practice.

The OpenCilk tool suite includes two tools for analyzing Cilk programs. The Cilksan race detector implements an extension of the SP-bags algorithm to check a Cilk program’s execution on a given input for determinacy races. The Cilkscale scalability analyzer implements a parallel version of the Cilkview algorithm to analyze the parallel scalability of a Cilk program.

Although all OpenCilk components are integrated with each other, OpenCilk’s system architecture aims to make it easy to modify and extend individual components. OpenCilk’s tools use compiler-inserted instrumentation hooks that instrument LLVM’s IR and Tapir instructions. Furthermore, the OpenCilk compiler implements a general Tapir-lowering infrastructure that makes use of LLVM bitcode — a binary representation of LLVM IR — to make it easy to compile Cilk programs to use different parallel runtime systems. For more information, see the OpenCilk paper.

Dagger image description