
You don't need to be a chip developer to program for FPGA, just as you don't need to be a C++ programmer to write Java code. However, in both cases, having some background knowledge would likely be beneficial.
The goal of commercializing both technologies, Java and FPGA, is to challenge the latter statement. The good news for FPGA is that, using appropriate levels of abstraction and toolsets, for the last 35 years since programmable logic devices were invented, it has become increasingly easier to create algorithms and data flows for FPGAs instead of CPUs, DSPs, GPUs, or any other form of specialized ASIC.
The surprising timeliness of their creation is that just as CPUs could no longer remain the sole computational module, data centers to handle multiple tasks—for various reasons—FPGAs achieved their efficiency, offering high performance, low latency, networking capabilities, and memory—heterogeneous computing capabilities of modern FPGA SoCs, which are essentially complete computing systems. However, FPGAs also integrate well with other devices in hybrid systems, and we believe they are just beginning to find their rightful place in the computing hierarchy.
That’s why we organized The Next FPGA Platform conference in San Jose on January 22. Naturally, one of the leading suppliers of FPGA in the world and a pioneer in this field is Xilinx. Ivo Bolsens, Senior Vice President and CTO of Xilinx, spoke at the conference and shared his current thoughts on how Xilinx is helping to create reconfigurable computing systems for data centers.
System architects and programmers have spent considerable time developing a heterogeneous data center that will host various types of computing power to address tasks related to computation, storage, and network organization. This seems necessary as it becomes increasingly challenging to keep up with Moore's Law using different CMOS technologies. While our language still depends on CPU, and we continue to speak of 'application acceleration', we mean improving program performance compared to what can be achieved using only CPUs. Eventually, data centers will evolve into collections of computing resources, data storage, and protocols that connect everything, and we will revert to terms like 'computing' and 'applications'. Hybrid computing will become as standard as today's 'cloud' services built on traditional or of virtual machines, and at some point we will simply use the word 'computing' to describe their operation. At some point – and probably the advent of this era will be significantly aided by FPGAs – we will again refer to this as data processing.
Introducing FPGAs into data centers will require a shift in mindset. 'When considering ways to accelerate today's applications, one must dig into the fundamentals of how they execute, what resources are used, and where time is spent,' explains Bolesans. 'You need to examine the overall problem you are trying to solve. Many applications running in data centers today scale by consuming a vast amount of resources. Take, for example, machine learning, which utilizes a huge number of computing nodes. But when talking about acceleration, one must think not only about accelerating computations but also about accelerating the infrastructure.'
For instance, in the operations related to machine learning that Bolesans studied in practice, about 50% of the time is spent on transferring data back and forth between distributed computing capacities, while only the remaining half of the time is spent on the computations themselves.
I believe this is where FPGA can help, as we can optimize both computational aspects and data transmission aspects for an application. We can do this at both the overall infrastructure level and at the chip level. This is one of the major advantages of FPGA, allowing the creation of communication networks tailored to the specific needs of an application. Observing the typical patterns of data movement in AI-related tasks, I don't see the need for a complex architecture based on switches. A network can be built with a high data flow. The same applies to neural network training tasks – a mesh network can be constructed with packet sizes adapting to the specific task. With FPGA, data transmission protocols and circuit topology can be very precisely scaled and tailored for a specific application. And in the case of machine learning, it is also clear that we do not require double precision floating-point numbers, and we can adjust that as well.
The difference between FPGA and CPU or specialized ASIC is that the latter are programmed during manufacturing, and after that, you can't rethink the types of computed data or computed elements, or the nature of the data flow through the device. FPGA allows you to reconsider if the working conditions change.
In the past, this advantage was costly, as programming for FPGA was not for the faint of heart. It required opening FPGA compilers to integrate better with the tools used by programmers to create applications with parallel computing for CPUs in C, C++, or Python, and delegating part of the work to libraries that accelerate procedures on FPGA. This is what the Vitis machine learning stack does, which underpins platforms for ML like Caffe and TensorFlow, and provides libraries for running standard AI models or adding FPGA capabilities to tasks like video transcoding, object recognition in videos, data analysis, financial risk management, and any third-party libraries.
This concept is not much different from Nvidia's CUDA project launched ten years ago, which shifted parallel computing to GPU accelerators, or from AMD's ROCm toolset, or from Intel's promises with its OneAPI project, designed to work across various CPUs, GPUs, and FPGAs.
The question is simply how all these tools will be interconnected so that anyone can program a set of computing resources at their discretion. This is important because FPGAs have become much more complex, far more so than any available CPU. They are manufactured using the most advanced technology processes and the latest chip packaging techniques. They will find their niche because we can no longer afford to waste time, money, energy, and intelligence — all of these are too expensive resources.
FPGA offers technological advantages, says Bolesens. And it’s not just a typical sales pitch about adaptability and reconfigurability. In all critical applications — machine learning, graph analysis, high-frequency trading, etc. — they have the potential to tailor not only the data flow paths to specific tasks but also the memory architecture — how data moves within the chip. Additionally, FPGAs come with significantly more memory than other devices. It should also be noted that if a task cannot fit into one FPGA, it can be scaled across multiple chips without encountering the drawbacks associated with scaling tasks across multiple CPUs or GPUs.
Source: habr.com
