Matrix Xilinx Vivado_HLS提供的线性代数库中的QRF_ALT函数使用的算法是什么?

Matrix Xilinx Vivado_HLS提供的线性代数库中的QRF_ALT函数使用的算法是什么?,matrix,parallel-processing,xilinx,vivado-hls,qr-decomposition,Matrix,Parallel Processing,Xilinx,Vivado Hls,Qr Decomposition,随着Vivado HLS的安装,提供了一个线性代数库。在这个库中有一个函数QRF_ALT,它应该是qrfbasic的高通量版本:QR分解,它使用givens旋转 我的问题是,它如何实现高吞吐量?从代码附带的简短注释中,我猜它使用了对成批矩阵行的并行处理,但它是如何安排的,我不理解 有没有人以前有过Vivado HLS的经验可以帮助我?在这一点上,任何帮助都将不胜感激 该库位于中的(linux) /opt/Xilinx/Vivado//examples/design/linear_代数/qrf_a

随着Vivado HLS的安装,提供了一个线性代数库。在这个库中有一个函数QRF_ALT,它应该是qrfbasic的高通量版本:QR分解,它使用givens旋转

我的问题是,它如何实现高吞吐量?从代码附带的简短注释中,我猜它使用了对成批矩阵行的并行处理,但它是如何安排的,我不理解

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

该库位于中的(linux)

/opt/Xilinx/Vivado//examples/design/linear_代数/qrf_alt
文件也可以在此处找到:


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

我一定错过了,非常抱歉。这里定义了hls_qrf top,以及qrf_alt,等等。我认为优化是,Q和R矩阵都沿着列维度以高通量方式更新。您可以在第661-675行中看到,Q矩阵和R矩阵与旋转矩阵G相乘,并使用UPDATE_II(在本规范中为4)进行管道化。一个必要的优先步骤是沿着列维度划分Q和R矩阵(第582-583行)。
/opt/Xilinx/Vivado/<installation version>/examples/design/linear_algebra/qrf_alt