Construction Costs

The development of a production-quality synthesis system, even when limited to addressing restricted domains, and reusing existing tools, can easily consume 15-20 person-years.

Sinapse today consists of 37,000 lines of code (LOC) built on top of the commercial Mathematica [#!Wolfram88a:mathematica-user-guide!#] system. It was developed at the cost of 12 person-years, spread over 4 elapsed years. We intend to reach a production system that can be reliably used by physicists and engineers this year.

To provide the barest indication of where the effort goes, we include a system breakdown as an LOC percentage of subsystem vs. total system:

5% Textual User Interface
9% Graphical User Interface
5% Synthesis control
25% Domain-specific synthesis knowledge
5% Local optimizer: type inference, simplification
16% Conversion of ASTs to target languages: C, Fortran, CM Fortran, Lisp
27% Global optimizer: parallelization, code motion, CSE
4% Computation partial order management (used by optimizer)
4% Utilities/debugging tools
We caution the reader not to interpret these percentages as effort, because the tasks had differing complexities, and considerable activity occurred outside of coding.

It should come as no surprise that much of the effort went into domain-specific knowledge acquisition. It may be more of a surprise that significant effort went into domain-independent optimizing technology.