Skip to main content

TODO Organize

gelbc is a transpiler#

To be more precise, since gelbc translates from the high(er)-level GeLB source language into high-level target languages (C, Fortran, CUDA, etc.), is is a source-to-source compiler (also known as a transpiler).

This approach had two main advantages:

  1. It accelerated the development of the initial versions of the compiler (because Dragos knew C, Fortran, OpenCL and CUDA, but was less confortable with low-level machine languages).
  2. It allowed us to leverage the great amount of work that went into creating optimizing compilers for our target languages -- there is no point in attempting to duplicate this work.

Granted, there are also disadvantages with this approach:

  1. It complicates the set-up of a GeLB working environment (because users also need to install a compiler for the target language they choose).
  2. It complicates the build process (because we have to invoke gelbc first, and then the compiler for the chosen target language).
  3. Some performance may be left on the table (but hopefully not much).