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:
- It accelerated the development of the initial versions of the compiler
(because Dragos knew
C,Fortran,OpenCLandCUDA, but was less confortable with low-level machine languages). - 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:
- It complicates the set-up of a
GeLBworking environment (because users also need to install a compiler for the target language they choose). - It complicates the build process (because we have to invoke
gelbcfirst, and then the compiler for the chosen target language). - Some performance may be left on the table (but hopefully not much).