High-Performance Reduction Circuits Using Deeply Pipelined Operators on FPGAs

Ling Zhuo, Gerald R. Morris, Viktor K. Prasanna

IEEE Transactions on Parallel and Distributed Systems · 2007 · 76 citations · 16 references

Concepts

TL;DR

FPGAs are increasingly used to accelerate scientific computations, yet many operations such as matrix‑vector multiplication require reductions of sequential streams, which can trigger data hazards in pipelined floating‑point units and lead to performance loss, excessive buffering, and high area consumption. This work identifies two serial‑reduction design strategies—tree‑traversal and striding—and proposes high‑performance, area‑efficient implementations for each. The authors analyze trade‑offs among adder count, buffer size, and latency using accumulation as an example, then implement the designs on a Xilinx Virtex‑II Pro FPGA to report performance and area metrics. The resulting circuits reduce multiple sets of sequential floating‑point values without stalling the pipeline or requiring unrealistic buffers, achieving efficient throughput and area usage.

Abstract

Field-programmable gate arrays (FPGAs) have become an attractive option for accelerating scientific applications. Many scientific operations such as matrix-vector multiplication and dot product involve the reduction of a sequentially produced stream of values. Unfortunately, because of the pipelining in FPGA-based floating-point units, data hazards may occur during these sequential reduction operations. Improperly designed reduction circuits can adversely impact the performance, impose unrealistic buffer requirements, and consume a significant portion of the FPGA. In this paper, we identify two basic methods for designing serial reduction circuits: the tree-traversal method and the striding method. Using accumulation as an example, we analyze the design trade-offs among the number of adders, buffer size, and latency. We then propose high-performance and area-efficient designs using each method. The proposed designs reduce multiple sets of sequentially delivered floating-point values without stalling the pipeline or imposing unrealistic buffer requirements. Using a Xilinx Virtex-ll Pro FPGA as the target device, we implemented our designs and present performance and area results.

References

16