Design Notes - 2024.2 English

Vitis Libraries

Release Date
2024-11-29
Version
2024.2 English
  • Target: \(A=QR\), \(A[M*N]\) is input matrix, \(Q[M*M]\) is orthogonal matrix and \(R[M*N]\) is an upper trapezoidal matrix.
  • DataType supported: cfloat.
  • DataSize supported: input matrix size \(M\) is the times of 4 and no bigger than 512, and \(N\) shoulb be no bigger than 256.
  • Description:
    • For single AIE core, AIE core function calculate the reflection vector in column k, and then update the rest of elements of \(matA\) and update orthogonal matrix math:matQ using the reflection vector.
    • For the whole design, \(N\) AIE cores are used, \(N\) is the number of input matrix’s column number. The reason is that zeros below diagonal is introduced column by column.
    • The previous core’s output is fed to the next core’s input, and on and on, till the last column is computed;
  • Implementation Notes:
    • This design utilzied “HouseHolder” method to solve QR decomposition.
    • This design takes two streams as input interface and two streams as output interface.
    • It takes input of matrix A and matrix I (identity matrix) as inputs, and generate matrix Q and R as output.
    • Matrix A and I are concated in row to form a (m+n) rows x (n) columns matrix, so Elements[0:M-1] of each column are from A and Elements[M:M+N-1] are from I.
    • Matrix Q and R are concated in row to form a (m+n) rows x (n) columns matrix, so Elements[0:M-1] of each column are from Q and Elements[M:M+N-1] are from R.
    • Concated inputs are injected column by column, concated outputs are extracted in the same way.
    • Each column of inputs are injected to two input stream in such way: Elem[N*4] and Elem[N*4+1] to stream 0, Elem[N*4+2], Elem[N*4+3] to stream 1.
    • Each column of outputs are extracted in the same way as inputs, but from output stream 0 and 1.