Search papers, labs, and topics across Lattice.
This paper introduces an efficient method for dynamically packing multiple (un-)signed inputs with arbitrary bitwidths into wide multiplier paths on FPGA DSP slices, addressing the underutilization of fixed-width datapaths in low-precision deep neural network workloads. By leveraging the DSP's internal pre-adder, the authors present two optimized architectures tailored for matrix-vector multiplications and convolutions, integrated into AMD's FINN framework. The proposed approach achieves a 21% reduction in LUT utilization and a 36% increase in FPS/DSP for the UltraNet model compared to existing FINN implementations.
Packing arbitrary bitwidths into wide DSP paths boosts performance and efficiency, achieving significant resource savings in FPGA implementations of deep learning models.
Deep Neural Networks increasingly employ low-precision quantization to reduce computational requirements. While FPGAs are well suited for workloads with heterogeneous precisions, their dedicated digital signal processing (DSP) slices only feature fixed-width datapaths that are significantly underutilized by low-bitwidth arithmetic. While previous approaches have already introduced the packing of multiple values onto the same wide DSP datapath, they either only support specific fixed bitwidths or are wasteful regarding the use of additional support logic external to the DSP. This paper proposes an efficient method to dynamically pack multiple (un-)signed inputs with arbitrary bitwidths into a wide multiplier path by leveraging the DSP's internal pre-adder. Building on this, we present two distinct architectures, one optimized for matrix-vector multiplications and the other for convolutions. Our implementations are integrated into AMD's FINN framework. With these optimizations, we reduce the LUT utilization by 21% and increase the FPS/DSP by 36% for the UltraNet model compared to the FINN reference.