Module overview
This module explores the use and programmability of field-programmable gate arrays (FPGAs) for accelerating data-intensive applications. They are usually found in the datacenter, high-performance computing (HPC) facilities, as well as high-end edge computing including in the automotive industry. Traditionally, FPGAs have mainly been a prototyping platform. The recent advances in semiconductor technology have enabled their use as a competitive accelerator platform in datacenters and on the edge. Their high flexibility can surpass the performance and efficiency of general-purpose processors, but this comes at a cost.
When a task is able to be solved computationally, general-purpose computing is the easiest route due to the maturity of software and hardware stacks, but it may be too slow or inefficient. Would an acceleration platform like an FPGA or even a GPU be able to target the task effectively? Which algorithm would an FPGA solution use, and how could it benefit from its strengths such as the internal parallelism? Are there any programming models and programming languages for such data-intensive designs?
This module covers the programmability aspects of FPGAs in the context of HPC and high-end edge devices. It covers the computer architecture of highly-heterogeneous SoCs and HPC systems, soft and hard interconnects relating to FPGA acceleration, and the steps required to develop and finally deploy data-intensive hardware accelerators.