1

Along with Vivado HLS installation a linear algebra library is provided. Within this library there is this function QRF_ALT, which is supposed to be a high throughput version of Qrf-basic: QR decomposition which uses givens rotations.

My question is that how does it achieves high throughput? From the brief comments that are provided with the code, my guess is that it uses parallel processing of batches of matrix rows, but how does it schedule it, I could not understand.

Does anyone has any prior experience with Vivado HLS who could help me? At this point any help would be greatly appreciated.

The library is located at (linux) in

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

Files can also be found here :

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

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

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

user3666197
  • 1
  • 6
  • 50
  • 92
aamir
  • 21
  • 3

1 Answers1

1

Could you please look into or paste here what is the kernel function body of hls::qrf_top called in qrf_alt.cpp at line 53? That hls::qrf_top is the function that really performs QR factorization. The files you provided don't contain the algorithm part.

Sibyl
  • 11
  • 1
  • I must have missed it, I'm really sorry. hls_qrf top is defined here, along with qrf_alt, etc https://filebin.ca/5h1VvDvsxlso/hls_qrf.h – aamir Nov 11 '20 at 22:18
  • I think the optimization is that both Q and R matrices are updated in a high-throughput way along the column dimension. You can see in line 661-675, Q matrix and R matrix are multiplied with the rotation matrix G are pipelined with UPDATE_II (which is 4 in this specification). And one necessary prior step is to partition the Q and R matrices along the column dimension (line 582-583). – Sibyl Nov 15 '20 at 16:00