Accelerating Software with Intel® FPGAs

Take a look at how Intel® FPGAs can be used to accelerate complex algorithms using a Mandelbrot fractal image computation design running on a DE10-Nano board.

Hi, I'm Rod Frazer from Intel. In this video, we show you how Intel FPGAs can be used to accelerate complex algorithms using a Mandelbrot fractal image computation design, running on a DE10-nano board. 

To begin, we show fractal images being computed by software running on an ARM processor inside the FPGA on this board. The SoC FPGA combines a hardened processor subsystem surrounded by programmable logic, which can be customized to your application. In this example, there's a video pipeline in the FPGA which reads frames from the DRAM buffers that the CPU writes fractal image data into. The output is then displayed on a monitor connected to the HDMI port. 

The processor is executing software to compute the images. Each frame can take hundreds of milliseconds to compute, depending on the performance of the processor. You can see how the image updates slow down as it zooms in. This is because the processor must calculate more iterations, the deeper it goes. 

Now, I want to show how the FPGA can make it go faster. When I push a button on the board, you will see the fractal images being computed by hardware inside the FPGA. Watch this. If you look in the lower left-hand corner of the screen, you can see the number of frames per second in the processor activity. 

The ARM processor hasn't gone away. It's still there, running Linux and orchestrating the accelerator hardware inside the FPGA. When I push the button, the software stopped computing the fractal on the processor, and it began using the accelerator hardware inside the FPGA. 

Let's take a look at the diagram. The new block, labeled Mandelbrot engine in the FPGA hardware, is only running at 100 megahertz, yet you see how much faster the image is updated. The Cyclone V SoC device we're using is optimized for low cost, not performance. Imagine how much faster the images would be displayed if we were using high-performance FPGA. 

Let's switch back to software operation again. Notice how much slower it's running? Look at the number of frames per second and how heavily loaded the processor is, right now. This example highlights one of the inherent virtues of FPGAs. They can boost system performance by using hardware to process computationally complex algorithms. 

In this case, you can see how much faster the images are computed in hardware versus software, how much of the 100-megahertz FPGA design can outperform an 800-megahertz CPU. When the FPGA is offloading the processor, the processor is free to do other work. The code for this example, both hardware and software, is available as a free download from the Intel Developer Zone, where you will also find other applications, code samples, and tutorials for this board. Thanks for watching. Don't forget to like this video and subscribe to the Intel Software YouTube channel.