IEEE Transactions on Parallel and Distributed Systems · 2007 · 76 citations · 16 references
EngineeringComputer EngineeringComputer ScienceComputer ArchitectureField-programmable Gate ArraysReconfigurable ComputingField-programmable Gate Array ArchitectureFpga ArchitectureHardware AccelerationTiming AnalysisArea-efficient DesignArea-efficient Fpga ArchitectureBuffer ConstraintsField-programmable Gate Arrays (Fpgas)Floating-point Unit DesignHardware PipeliningMatrix MultiplicationSequential Operations
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.
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.
16
Adhi Harmoko S, M.Komp, Joseph Marie Jacquard et al. · 2005 · 18.4K citations
Introduction to algorithms [2nd ed.]
Thomas H. Cormen · 2001 · 1.9K citations
R. K. Shyamasundar · Resonance · 1996 · 1.5K citations
Keith D. Underwood · 2004 · 248 citations
Sparse Matrix-Vector multiplication on FPGAs
Ling Zhuo, Viktor K. Prasanna · 2005 · 226 citations