Compiling Higher Order Functional Programs to Composable Digital Hardware
Eduardo Aguilar–Pelaez, Samuel Bayliss, Alex Smith, Felix Winterstein, Dan R. Ghica, David Thomas, George Anthony Constantinides · 2014
This work demonstrates the capabilities of a high-level synthesis tool-chain that allows the compilation of higher order functional programs to gate-level hardware descriptions. Higher order programming allows functions to take functions as parameters. In a hardware context, the latency-insensitive interfaces generated between compiled modules enable late-binding with libraries of pre-existing functions at the place-and-route compilation stage. We demonstrate the completeness and utility of our approach using a case study; a recursive k-means clustering algorithm. The algorithm features complex data-dependent control flow and opportunities to exploit both coarse and fine-grained parallelism.