Skip to content
/ helix Public

Formally verified operator language and rewriting engine for high-performance computing

Notifications You must be signed in to change notification settings

vzaliva/helix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2f5aac7 · Jun 13, 2024
Jan 2, 2021
Oct 13, 2023
Mar 22, 2023
Jun 8, 2022
Oct 12, 2023
Dec 29, 2022
Nov 28, 2017
Apr 25, 2019
Oct 12, 2023
Sep 1, 2023
Mar 30, 2021
Jun 13, 2024
Nov 24, 2022
Jun 13, 2024
May 27, 2021
May 27, 2022

Repository files navigation

HELIX

https://travis-ci.com/vzaliva/helix.svg?token=x87izvm44MdTPLHzuxzF&branch=master

The HELIX project enables the synthesis of high-performance implementations of numerical algorithms by providing a certified compiler for formally specified domain-specific languages (DSLs). Building on the existing SPIRAL system, HELIX enhances the rigour of formal verification using the Coq proof assistant to ensure correctness. It formally defines a series of domain-specific languages, starting with HCOL, which represents computational data flow. HELIX then transforms the original program through a series of intermediate languages, culminating in LLVM IR.

  • HELIX focuses on the automatic translation of a class of mathematical expressions to code.
  • It works by revealing implicit iteration constructs and reshaping them to match the target platform’s parallelism and vectorization capabilities.
  • HELIX is rigorously defined and formally verified.
  • HELIX is implemented using the Coq proof assistant.
  • It supports non-linear operators.
  • Presently, HELIX uses SPIRAL as an optimization oracle, but it certifies its findings.
  • LLVM is used as a machine code generation backend.
  • Main application: Cyber-physical systems.

Example

An application of HELIX to a real-life situation of high-assurance vehicle control (paper) using a dynamic window vehicle control approach (paper)​ is shown below:

doc/bigpicture.png

Dependencies

Clone the repository and install dependencies:

git clone --recurse-submodules https://github.com/vzaliva/helix
cd helix

To install all required dependencies:

opam repo add coq-released https://coq.inria.fr/opam/released
make -j 4 install-deps

(if some package fails to install due to missing OS dependencies, use opam depext pkgname to install the required OS packages)

To install optional dependencies:

opam install coq-dpdgraph

Building and Running

Build:

make

Run unit tests:

make test

People

  • Vadim Zaliva
  • Franz Franchetti
  • Yannick Zakowski
  • Ilia Zaichuk
  • Valerii Huhnin
  • Calvin Beck
  • Irene Yoon
  • Steve Zdancewic

HELIX was originally developed as a PhD thesis project by Vadim Zaliva under the supervision of Franz Franchetti. Ilia Zaichuk and Valerii Huhnin contributed to the proofs related to RHCOL and FHCOL compilation. Additionally, Ilia Zaichuk developed the numerical analysis module for the Dynamic Window Monitor example. Yannick Zakowski, Irene Yoon, Calvin Beck, and Steve Zdancewic performed most of the work on proving the correctness of the LLVM IR compilation pass. After completing this work, Yannick Zakowski took on the task of assembling and proving the final high-level correctness theorem.

Papers

How to cite

Recommended citation:

@phdthesis{zaliva2020helix,
  title  = {{HELIX}: From Math to Verified Code},
  author = {Zaliva, Vadim},
  year   = {2020},
  school = {Carnegie Mellon University}
}

Contact

Vadim Zaliva

About

Formally verified operator language and rewriting engine for high-performance computing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published