【问题标题】:What is the algorithm used in QRF_ALT function in linear Algebra library provided with the Xilinx Vivado_HLS?Xilinx Vivado_HLS 提供的线性代数库中的 QRF_ALT 函数中使用的算法是什么?
【发布时间】:2020-11-10 18:58:17
【问题描述】:

在安装 Vivado HLS 的同时,还提供了一个线性代数库。在这个库中有这个函数 QRF_ALT,它应该是 Qrf-basic 的高吞吐量版本:使用给定旋转的 QR 分解。

我的问题是它如何实现高吞吐量?从随代码提供的简要 cmets 来看,我的猜测是它使用批量矩阵行的并行处理,但它是如何调度的,我无法理解。

有没有人有任何 Vivado HLS 的经验可以帮助我?在这一点上,任何帮助将不胜感激。

该库位于(linux)中

/opt/Xilinx/Vivado/<installation version>/examples/design/linear_algebra/qrf_alt

文件也可以在这里找到:

https://filebin.ca/5gtV16lXK4ZT/qrf_alt.h

https://filebin.ca/5gtVEqUqccsx/qrf_alt.cpp

https://filebin.ca/5gtVLiMVGsbv/qrf_alt_tb.cpp

【问题讨论】:

    标签: matrix parallel-processing xilinx vivado-hls qr-decomposition


    【解决方案1】:

    您能否在此处查看或粘贴在第 53 行的 qrf_alt.cpp 中调用的hls::qrf_top 的内核函数体是什么? hls::qrf_top 是真正执行 QR 分解的函数。您提供的文件不包含算法部分。

    【讨论】:

    • 我一定是错过了,真的很抱歉。 hls_qrf top 在这里定义,还有 qrf_alt 等filebin.ca/5h1VvDvsxlso/hls_qrf.h
    • 我认为优化是 Q 和 R 矩阵都以高吞吐量的方式沿列维度进行更新。您可以在第 661-675 行看到,Q 矩阵和 R 矩阵乘以旋转矩阵 G 与 UPDATE_II(在本规范中为 4)进行流水线化。一个必要的先前步骤是沿列维度划分 Q 和 R 矩阵(第 582-583 行)。
    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多