Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

- Community Forums
- :
- Forums
- :
- Software Development and Acceleration
- :
- Vitis Acceleration, SDAccel, SDSoC
- :
- What is the algorithm used in QRF_ALT function in ...

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

Highlighted
##
What is the algorithm used in QRF_ALT function in linear Algebra library provided with the Xilinx Vivado_HLS?

aamir_sheikh

Visitor

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

11-17-2020 03:11 AM

82 Views

Registered:
11-02-2020

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

1 Reply

Highlighted
##

wenchen

Moderator

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

11-17-2020 08:24 PM

52 Views

Registered:
05-27-2018

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

This is an out-of-date lib that no one is working on it now. If you're interested in this example. Just run it and refer to the analysis window.

If you want to explore the algorithm, please refer to the hls_qrf.h file.

XAPP1317 would be a good reference for matrix multiplication.

Now it is moved to the Vitis solver library.

https://github.com/Xilinx/Vitis_Libraries/tree/b894e62a9749c0aa9ddca49e3d72a4261d5655de/solver/L2

void qrf_alt_top(const MATRIX_IN_T A[A_ROWS][A_COLS], MATRIX_OUT_T Q[A_ROWS][A_ROWS], MATRIX_OUT_T R[A_ROWS][A_COLS]){ MATRIX_IN_T a_i[A_ROWS][A_COLS]; MATRIX_OUT_T q_i[A_ROWS][A_ROWS]; MATRIX_OUT_T r_i[A_ROWS][A_COLS]; // Copy input data to local memory a_row_loop : for (int r=0;r<A_ROWS;r++) { a_col_loop : for (int c=0;c<A_COLS;c++) { a_i[r][c] = A[r][c]; } } // Call QR Factorization, Q is produced such that Q*R = A const bool TRANSPOSED_Q = false; hls::qrf_top<TRANSPOSED_Q, A_ROWS, A_COLS, QRF_CONFIG, MATRIX_IN_T, MATRIX_OUT_T>(a_i, q_i, r_i); // Copy local memory contents to outputs r_row_loop : for (int r=0;r<A_ROWS;r++) { r_col_loop : for (int c=0;c<A_COLS;c++) { R[r][c] = r_i[r][c]; } } q_row_loop : for (int r=0;r<A_ROWS;r++) { q_col_loop : for (int c=0;c<A_ROWS;c++) { Q[r][c] = q_i[r][c]; } } }

Wen

-------------------------------------------------------------------------

Don’t forget to reply, kudo, and accept as solution.

-------------------------------------------------------------------------

如果提供的信息能解决您的问题，请标记为“接受为解决方案”。

如果您认为帖子有帮助，请点击“奖励”。谢谢！

-------------------------------------------------------------------------------------------------

Don’t forget to reply, kudo, and accept as solution.

-------------------------------------------------------------------------

如果提供的信息能解决您的问题，请标记为“接受为解决方案”。

如果您认为帖子有帮助，请点击“奖励”。谢谢！

-------------------------------------------------------------------------------------------------