In today's widely used parallel programming models, subtle programming errors can lead to unintended nondeterministic behavior and hard to catch bugs. In contrast, we argue for a parallel programming model that is deterministic by default: deterministic behavior is guaranteed using primarily compile-time checking.
The goal of project Hippocrates is to solve the compile time deterministic checking problem by developing a static source code analyzer working with existing Autodesk C++ code base (e.g. Maya). We introduce a non-intrusive approach to existing large code base by relying on annotation of code using attributes as metadata as we strongly believe metadata to code can capture design knowledge in existing and new code so it can be easily leveraged by an ever increasing number of tools, and metadata (annotations or attributes) add value to code by expressing design decisions which can be validated (either statically or dynamically) to assure that assumptions and requirements of developers are respected, with a bonus that it allows us to catch design errors and not just coding errors. Also metadata is easy to add, incremental and low risk.
The approach we are taking differs from academic endeavor (e.g. DPJ/C++ project in UIUC) in that the academic approach is more theoretical and involves a deeper study on the programming model side to write new deterministically correct code, whereas our approach is more practical, geared towards fixing existing legacy code. We believe that with Hippocrates we can leverage it to improve code quality and lower defect rates, reduce time and effort to restructure large code base and enforce design rules, and reduce testing complexity where other tools (e.g. Intel Thread Checker) fail due to application size.
Marco Fais, Francesco Iorio (2011)Fast Fluid Dynamics on the Single-chip Cloud Computer