Code Synthesis: Fast Code. In A Hurry.

code synthesis for high performance computing

Noddle technology reduces the time and effort needed to develop and deploy applications that realize the full potential of modern parallel computing platforms.  We allow you to leverage the latest developments in algorithm, data structure, and parallel processing research to boost the performance of your analytical and modeling applications.  By making use of code synthesis techniques, we allow you to focus your time and effort on your domain application.



Highly-specialized, high-performance code is generated using automated code-synthesis. Synthesis combines deep code analysis, domain specific program transformations, and automated search to explore the space of potential realizations of an algorithm for a given computing platform.  Our tools integrate performance models for algorithms, data structures, and specific computing platforms to drive the search and optimization process necessary to yield high performance.


Using the Noddle tool suite, programmers work in the familiar Python programming language with the rich ecosystem of Python libraries and tools used across industry, research, and academic settings.  Noddle synthesis technologies reduce the long term life-cycle cost of maintaining code in an rapidly changing high performance computing platform landscape by creating a separation of general application logic from platform-specific specialization.



The Noddle tool suite is based on the industry standard Python programming language and common libraries for data analytics and computational modeling.  Noddle tools target the latest GPGPU accelerator and cluster-based HPC platforms.  

We currently provide tools for:

  • Graph algorithms based on a parallel functional programming API with support for frontier and gather-apply-scatter algorithm models.
  • Graph and column-oriented database query specification based on the Datalog declarative query language.
  • Array-based algorithms that cleanly separate algorithmic structures from data layout and parallel distribution decisions.

Noddle tools are designed to interoperate and compose, allowing applications to take advantage of optimizations at many levels.