矩阵乘法、矩阵伪逆及VivadoHLS介绍

10月 16日, 2019 LinearAlgebra VivadoHLS


1.矩阵乘法

1.1任意规模矩阵乘法并行计算

窦勇,国防科技大学. 64-bit Floating-Point FPGA Matrix Multiplication. 发表于FPGA '05 Proceedings of the 2005 ACM/SIGDA 13th international symposium on Field-programmable gate arrays

1.2矩阵乘法具体并行策略和资源分析

邬贵明,国防科技大学,FPGA矩阵计算并行算法与结构。
P51

2.矩阵伪逆

对任意矩阵\(A\)\(A\)的伪逆矩阵\(A^\dagger\)必然存在,且\(A^\dagger\)必然满足以下四个条件:
\(AA^\dagger A=A\)
\(A^\dagger AA^\dagger =A^\dagger\)
\((AA^\dagger)^*=AA^\dagger\)
\((A^\dagger A)^*=A^\dagger A\)
这四条蕴含了:\(AA^\dagger\)是一个效果等同与单位矩阵\(I\)的矩阵。

2.1求矩阵伪逆的SVD方法

目前最好的矩阵伪逆求解方法,SVD分解: \(A=U\Sigma V^T\), 其中\(U\)\(V\)是正交矩阵,\(S\)是对角阵但不一定是方阵,正交阵的逆为其转置,对角阵的逆为非零元素求倒数。 则\(A^\dagger=V\Sigma ^\dagger U^T\)

2.2求矩阵伪逆的QR分解方法

适用于稀疏矩阵,速度快,但不如SVD稳定。

\(A=QR\),其中\(Q\)为正交矩阵,\(R\)为上三角矩阵,正交阵的逆为其转置,上三角阵的逆也是上三角阵。 则\(A^\dagger =(R^{T}R)^{-1}R^{T}Q^{T}\)

2.3其他方法待寻找

3.硬件实现

Vivado 高层次综合(HLS)

通过启用 C、C++ 和 System C 规范,加速 IP 创建

当今无线、医疗、军用产品和消费类产品应用中使用的高级算法比以往更加复杂。 Vivado® 高层次综合(HLS)在所有 Vivado HLx 版本中以免费升级形式提供, 可以实现直接使用 C,C++ 以及 System C 语言规范对赛灵思可编程器件进行编程, 无需手动创建 RTL,从而可加速 IP 创建。 Vivado 高层次综合使系统和设计架构师支持ISE® 和 Vivado 设计环境,能够以更快速的方式创建 IP。

  • 算法描述摘要、数据类型规格 (整数、定点或浮点) 以及接口 (FIFO, AXI4, AXI4-Lite, AXI4-Stream)
  • 支持任意精度数据类型、视频以及 DSP 等的广泛库,查看各种库下的以下部分
  • 指令驱动型架构感知综合可提供最优的 QoR。
  • 在竞争对手还在手动开发 RTL 的时候快速实现 QoR。
  • 使用 C/C++ 测试平台仿真、自动 VHDL 或 Verilog 仿真和测试平台生成加速验证
  • 多语言支持和业界最广泛的语种覆盖率。
  • 自动使用 Xilinx 片上存储器、DSP 元素和浮点库
库:
名称 说明
任意精度的数据类型 整数和定点 (ap_cint.h, ap_int.h and systemc.h)
HLS 流 面向流数据结构的模型。旨在实现最佳性能和面积 (hls_stream.h)
HLS Math 广泛支持标准 C (math.h) 和 C++ (cmath.h) 数学库的综合。支持浮点和定点功能:abs, atan, atanf, atan2, atan2, ceil, ceilf, copysign, copysignf, cos, cosf, coshf, expf, fabs, fabsf, floorf, fmax, fmin, logf, fpclassify, isfinite, isinf, isnan, isnormal, log, log10, modf, modff, recip, recipf, round, rsqrt, rsqrtf, 1/sqrt, signbit, sin, sincos, sincosf, sinf, sinhf, sqrt, tan, tanf, trunc
HLS IP 基于 C 的超采样率 FFT 与 hls_ssr_lib.h, 集成 LogiCORE IP FFT 和 FIR Compiler (hls_fft.h, hls_fir.h, ap_shift_reg.h)
HLS 线性代数 支持以下功能:cholesky, cholesky_inverse, matrix_multiply, qrf, qr_inverse, svd (hls_linear_algebra.h)
HLS DSP 支持以下功能:atan2, awgn, cmpy, convolution_encoder, nco, qam_demod, qam_mod, sqrt, viterbi_decoder (hls_dsp.h)