I read a very interesting article recently. One of the items that popped out to me the most was:
ARM chips are already integrated with all leading FPGA solutions. ARM chips are low power at the cost of performance but GPU’s are extremely fast and also power efficient so the GPU can provide the processing muscle while the ARM cores can handle the mundane IO and UI management tasks that don’t demand a lot of compute power. The growing body of Big-data, HPC, and especially machine learning applications don’t need Windows and don’t perform on X86.
This got me thinking… is is possible that parts of the LLVM IR could be compiled into a HDL and offloaded to an FPGA or GPU – and the compiler could figure that out for us?
It turns out… you already CAN compile LLVM to HDL: this project allows compiling C99, OpenCL and some of C++ LLVM “down to synthesizable processor RTL (VHDL and Verilog backends supported) and parallel program binaries.”.
I am willing to bet rust would be uniquely positioned as a programming language for automatically optimizing FPGA / GPU code running on hybrid CPUs. The lifetime system could tell the compiler a LOT about where the data dependencies are, which could signiicantly reduce the fpga binary size (I would think). Not to mention that the concurrency primitives are pretty simple as well.