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 |
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.