Skip to content
/ remora Public

A dependently-typed, array-polymorphic language that runs on parallel architectures

Notifications You must be signed in to change notification settings

liam923/remora

Repository files navigation

Remora

Remora is a higher-order, rank-polymorphic array-processing program- ming language, in the same general class of languages as APL and J. It is intended for writing programs to be executed on parallel hardware.

Source: Introduction to Rank-polymorphic Programming in Remora

Remora was designed as the PhD thesis of Justin Slepak, and its semantics and type system are laid out in the paper The Semantics of Rank Polymorphism.

This project, which is currently in-progress, aims to compile Remora code into efficient CUDA C code for GPU execution.

An report is available in this repository at ./thesis-report.pdf that describes how the compiler works.

Usage

Make sure you have the build system Dune installed, as well as all dependencies, which can be installed via opam:

opam install .

Compile a program

The following command will print to stdout a complete CUDA C++ 17 program:

dune exec --display=quiet -- remora /path/to/program.remora

The CUDA C program can then be compiled with nvcc. It is recommended to use the flags -std=c++17 -arch=native -w.

Run Tests

dune runtest

Build

dune build @all

About

A dependently-typed, array-polymorphic language that runs on parallel architectures

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published