Everywhere I turn these days, someone is touting Field Programmable Gate Arrays (FPGAs) and programming them with OpenCL.
I hear it from the two leaders in the field, Intel/Altera and Xilinx.
If both leaders are in agreement, I felt I had to dive in to understand what all the hype is about. Here’s what I learned:OpenCL is really C (or C++, if you prefer) with two things added:
APIs (OpenCL library functions) for the host to call (find FPGA, download kernel to FPGA, copy data to/from FPGA memory, start kernel, stop kernel, etc.)
Syntactic magic around functions (kernels) that we want to run on the FPGA.
An FPGA provides a reconfigurable sea of gates on which anyone can design their own custom hardware accelerator, deploy it for a single application, and then quickly reconfigure the device as a new accelerator for a different application.
I have verified to my own satisfaction that new tools centered on OpenCL really do bring the benefits of FPGA hardware platforms to software developers. We aren’t limited to the data types (or operations) that are hard baked into CPU or GPU designs.
FPGAs are much more versatile to match my application needs.To read this article in full, please click here