Get a quick overview of the latest and greatest technologies for application acceleration!
An FPGA is a kind of programmable hardware that in a very effective way can be used to implement algorithms and computations. By offloading a CPU from the performance critical or computational heavy parts to an FPGA, an overall acceleration of 10x-100x can typically be reached. FPGAs can also quickly be reprogrammed – switching from being tailored for one type of algorithm to another takes less than a second.
The strength of FPGAs is that they offer a possibility to implement a computational architecture that is tailored to a specific algorithm, instead of the more normal approach, like for CPUs, where the algorithm has to be adapted to a fixed architecture. This is of course also the challange – programming an FPGA starts with a blank sheet of paper!
Solutions for FPGA computing
FPGAs can be integrated with CPUs in many different ways – what solution is best for a specific situation very much depend on the requirements and the problem to solve:
- PCIe boards with one or multiple FPGAs
- External FPGA cluster that communicates with the CPU over Ethernet or PCIe cable
- FPGA modules that replace one or several CPUs in a dual or quad CPU server
- Dedicated systems where the CPU(s) and FPGA(s) are tightly integrated
Critical parameters are of course bandwidth and latency for the communication between the FPGAs and the CPUs, where the different solutions have different strengths and weaknesses.
Synective offer FPGA based platforms from many different manufacturers – some of the most interesting are presented here.