FPGA’s, Field Programmable Gate Arrays, are reprogrammable digital logic circuits able to shape shift into just about any digital circuit you can imagine: neural networks, image processors, CPU’s… the possibilities are endless. The idea is that adding an FPGA to an architecture allows one to expand on the generalized functionality offered in the modern CPU, adding custom hardware features to a system. Would your application benefit from hundreds of tiny processor cores, hardware purpose built for machine learning, the ability to manipulate bits rather than bytes, or an inherently parallel architecture? FPGA’s can do all of that assuming you can dream up the circuit, write the HDL to describe it, and find an FPGA large enough to hold the design. If all this sounds too good to be true, it kind of is for the time being: at least if you are deploying to the cloud.
While not known for being easy to work with, FPGA’s have come a long way in recent years. Getting into FPGA development without serious electronics chops can be a non-starter, but prices have come down and many development boards with integrated components have changed the landscape and made learning hardware design easier than ever. In addition, some programming options have opened up beyond the infamously fussy VHDL/Verilog. Even AWS began offering instances with FPGA’s in early 2017, and FPGA-based cloud startups are beginning to pop up.
From a distance, it might seem like the FPGA stars have aligned, but the truth is that a lot needs to settle in this field and anybody wanting to get into cloud-based FPGA solutions has a steep, meandering learning curve ahead of them. The recent introduction of new HDL’s is promising for those frustrated with VHDL/Verilog, but ultimately adds confusion to the market. The introduction of cloud-based FPGA’s might sound good on paper, but so far these solutions are even harder to work with than local FPGA’s: the aws-fpga hello world example is about 500 lines long, and that’s not including the custom kernel driver required to interact with it.
I think FPGA’s can be a game changer, especially if somebody figures out how to scale them and make them accessible in the cloud, but that just hasn’t materialized yet. While FPGA’s are something worth paying attention to, until something better comes along those needing hardware acceleration in the cloud are likely better off with more mature GPU-based services.