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.
Make sure you have the build system Dune installed, as well as all dependencies, which can be installed via opam:
opam install .
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
.
dune runtest
dune build @all