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
,OpenCL
andCUDA
, 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
GeLB
working 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
gelbc
first, and then the compiler for the chosen target language). - Some performance may be left on the table (but hopefully not much).