namespace xf::blas

Overview

namespace blas {

// global functions

template  <typename t_DataType, unsigned int t_ParEntries, int t_LastRowIdx = 0>
void processUpSbMatStream(unsigned int p_n, unsigned int p_k, hls::stream<WideType<t_DataType, t_ParEntries>>& p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void processLoSbMatStream(unsigned int p_n, unsigned int p_k, hls::stream<WideType<t_DataType, t_ParEntries>>& p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void forwardSbMatStream(unsigned int p_n, unsigned int p_k, hls::stream<WideType<t_DataType, t_ParEntries>>& p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void mergeGbMatStream(unsigned int p_n, unsigned int p_ku, unsigned int p_kl, hls::stream<WideType<t_DataType, t_ParEntries>>& p_inUp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_inLo, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void readUpSbMat2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outUp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outLo);

template  <typename t_DataType, unsigned int t_ParEntries>
void readLoSbMat2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outUp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outLo);

template  <typename t_DataType, unsigned int t_ParEntries>
void readVec2GbStream(unsigned int p_n, unsigned int p_ku, unsigned int p_kl, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outUp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outLo);

template  <typename t_DataType, unsigned int t_ParEntries>
void readGbMat2Stream(unsigned int p_n, unsigned int p_ku, unsigned int p_kl, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outUp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outLo);

template  <typename t_DataType, unsigned int t_ParEntries, unsigned int t_ParBlocks = 1>
void sbmSuper2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries, unsigned int t_ParBlocks = 1>
void sbmSub2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries, unsigned int t_ParBlocks = 1>
void gbm2Stream(unsigned int p_n, unsigned int p_kl, unsigned int p_ku, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2GbMatStream(unsigned int p_n, unsigned int p_kl, unsigned int p_ku, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void readTbMat2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void readVec2TbStream(unsigned int p_n, unsigned int p_k, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries, unsigned int t_ParBlocks = 1>
void tbmSuper2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries, unsigned int t_ParBlocks = 1>
void tbmSub2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2TbUpMatStream(unsigned int p_n, unsigned int p_k, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2TbLoMatStream(unsigned int p_n, unsigned int p_k, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void gem2Stream(unsigned int p_m, unsigned int p_n, t_DataType* p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2GemStream(unsigned int p_m, unsigned int p_n, t_DataType* p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void readSymUp2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outSymUpTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outForward);

template  <typename t_DataType, unsigned int t_ParEntries>
void mergeSymUpMat(unsigned int p_n, hls::stream<WideType<t_DataType, t_ParEntries>>& p_inSymUpTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_inTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_inForward, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void readSymLo2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outSymUpTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outForward);

template  <typename t_DataType, unsigned int t_ParEntries>
void mergeSymLoMat(unsigned int p_n, hls::stream<WideType<t_DataType, t_ParEntries>>& p_inSymUpTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_inTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_inForward, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void readSpmUp2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outSymUpTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outForward);

template  <typename t_DataType, unsigned int t_ParEntries>
void readSpmLo2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outSymUpTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outTransp, hls::stream<WideType<t_DataType, t_ParEntries>>& p_outForward);

template  <typename t_DataType, unsigned int t_ParEntries>
void symUp2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void symLo2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void spmUp2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void spmLo2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2SymStream(unsigned int p_n, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void transpSymUpMatBlocks(unsigned int p_blocks, hls::stream<WideType<t_DataType, t_ParEntries>>& p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void transpSymLoMatBlocks(unsigned int p_blocks, hls::stream<WideType<t_DataType, t_ParEntries>>& p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void transpMatBlocks(unsigned int p_blocks, hls::stream<WideType<t_DataType, t_ParEntries>>& p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void fwdMatBlocks(unsigned int p_blocks, hls::stream<WideType<t_DataType, t_ParEntries>>& p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_MemWidth, unsigned int t_Rows, unsigned int t_Cols>
void transpMemWordBlocks(unsigned int p_blocks, hls::stream<WideType<t_DataType, t_MemWidth>>& p_in, hls::stream<WideType<t_DataType, t_MemWidth>>& p_out);

template  <typename t_DataType, unsigned int t_MemWidth, unsigned int t_Rows, unsigned int t_Cols>
void transpMemBlocks(unsigned int p_blocks, hls::stream<WideType<t_DataType, t_MemWidth>>& p_in, hls::stream<WideType<t_DataType, t_MemWidth>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void trmUp2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void trmLo2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void tpmUp2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void tpmLo2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2TrmUpStream(unsigned int p_n, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2TrmLoStream(unsigned int p_n, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <unsigned int t_NumStreams, typename t_DataType>
void duplicateStream(unsigned int p_n, hls::stream<t_DataType>& p_inputStream, hls::stream<t_DataType> p_streams [t_NumStreams]);

template  <unsigned int t_NumStreams, typename t_DataType>
void splitStream(unsigned int p_n, hls::stream<WideType<t_DataType, t_NumStreams>>& p_wideStream, hls::stream<WideType<t_DataType, 1>> p_stream [t_NumStreams]);

template  <unsigned int t_NumStreams, typename t_DataType>
void combineStream(unsigned int p_n, hls::stream<WideType<t_DataType, 1>> p_stream [t_NumStreams], hls::stream<WideType<t_DataType, t_NumStreams>>& p_wideStream);

template  <typename t_DataType, typename t_DesDataType = t_DataType>
void mem2stream(unsigned int p_n, t_DataType* p_in, hls::stream<t_DesDataType>& p_out);

template  <typename t_DataType, typename t_DesDataType = t_DataType>
void stream2mem(unsigned int p_n, hls::stream<t_DataType>& p_in, t_DesDataType* p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void readVec2Stream(t_DataType* p_in, unsigned int p_n, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out);

template  <typename t_DataType, unsigned int t_ParEntries>
void writeStream2Vec(hls::stream<WideType<t_DataType, t_ParEntries>>& p_in, unsigned int p_n, t_DataType* p_out);

} // namespace blas

Detailed Documentation

Global Functions

sbmSuper2Stream

template  <typename t_DataType, unsigned int t_ParEntries, unsigned int t_ParBlocks = 1>
void sbmSuper2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

sbmSuper2Stream function that moves symmetric banded matrix with super diagonals from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
t_ParBlocks number of t_ParEntries, p_n must be multiple t_ParEntries * t_ParBlocks
p_n number of rows/cols in a square matrix
p_k number of superdiagonals
p_a a p_n x p_n symmetric banded matrix with on-chip column-major storage and corresponding 0 paddings
p_out output stream, which is row-aligned with 0 paddings along subdiagonals

sbmSub2Stream

template  <typename t_DataType, unsigned int t_ParEntries, unsigned int t_ParBlocks = 1>
void sbmSub2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

sbmSub2Stream function that moves symmetric banded matrix with sub diagonals from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
t_ParBlocks number of t_ParEntries, p_n must be multiple t_ParEntries * t_ParBlocks
p_n number of rows/cols in a square matrix
p_k number of subdiagonals
p_a a p_n x p_n symmetric banded matrix with on-chip column-major storage and corresponding 0 paddings
p_out output stream, which is row-aligned with 0 paddings along subdiagonals

gbm2Stream

template  <typename t_DataType, unsigned int t_ParEntries, unsigned int t_ParBlocks = 1>
void gbm2Stream(unsigned int p_n, unsigned int p_kl, unsigned int p_ku, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

gbm2Stream function that moves symmetric banded matrix with from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
t_ParBlocks number of t_ParEntries, p_n must be multiple t_ParEntries * t_ParBlocks
p_n number of rows/cols in a square matrix
p_kl number of subdiagonals
p_ku number of superdiagonals
p_a a p_m x p_n symmetric banded matrix with on-chip column-major storage and corresponding 0 paddings
p_out output stream, which is row-aligned with 0 paddings along subdiagonals

vec2GbMatStream

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2GbMatStream(unsigned int p_n, unsigned int p_kl, unsigned int p_ku, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

vec2SbMatStream function that moves vector from memory to stream that matches the sbMat2Stream outputs

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
p_n number of rows/cols in a square matrix
p_ku number of superdiagonals
p_kl number of subdiagonals
p_x vector input
p_out output stream, which matches the outputs of gbMat2Stream or sbMat2Stream

tbmSuper2Stream

template  <typename t_DataType, unsigned int t_ParEntries, unsigned int t_ParBlocks = 1>
void tbmSuper2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

tbmSuper2Stream function that moves triangular banded matrix with super diagonals from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
t_ParBlocks number of t_ParEntries, p_n must be multiple t_ParEntries * t_ParBlocks
p_n number of rows/cols in a square matrix
p_k number of superdiagonals
p_a a p_n x p_n triangular banded matrix with on-chip column-major storage and corresponding 0 paddings
p_out output stream, which is row-aligned with 0 paddings along subdiagonals

tbmSub2Stream

template  <typename t_DataType, unsigned int t_ParEntries, unsigned int t_ParBlocks = 1>
void tbmSub2Stream(unsigned int p_n, unsigned int p_k, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

tbmSub2Stream function that moves triangular banded matrix with sub diagonals from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
t_ParBlocks number of t_ParEntries, p_n must be multiple t_ParEntries * t_ParBlocks
p_n number of rows/cols in a square matrix
p_k number of subdiagonals
p_a a p_n x p_n triangular banded matrix with on-chip column-major storage and corresponding 0 paddings
p_out output stream, which is row-aligned with 0 paddings along subdiagonals

vec2TbUpMatStream

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2TbUpMatStream(unsigned int p_n, unsigned int p_k, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

vec2TbUpMatStream function that moves vector from memory to stream that matches the sbMat2Stream outputs

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
p_n number of rows/cols in a square matrix
p_k number of super/sub-diagonals
p_x vector input
p_out output stream

vec2TbLoMatStream

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2TbLoMatStream(unsigned int p_n, unsigned int p_k, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

vec2TbLoMatStream function that moves vector from memory to stream that matches the sbMat2Stream outputs

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
p_n number of rows/cols in a square matrix
p_k number of sub-diagonals
p_x vector input
p_out output stream

gem2Stream

template  <typename t_DataType, unsigned int t_ParEntries>
void gem2Stream(unsigned int p_m, unsigned int p_n, t_DataType* p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

gem2Stream function that moves row-major matrix from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
p_m number of rows in a matrix
p_n number of cols in a matrix
p_in a p_m x p_n matrix with on-chip row-major storage
p_out output stream

vec2GemStream

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2GemStream(unsigned int p_m, unsigned int p_n, t_DataType* p_in, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

vec2GemStream function that moves vector from memory to stream that matches the gem2Stream outputs

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
p_m number of rows in a matrix
p_n number of cols in a matrix
p_in vector input
p_out output stream

symUp2Stream

template  <typename t_DataType, unsigned int t_ParEntries>
void symUp2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

symUp2Stream function that moves super-symmetric matrix from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallel processed entries in the matrix
p_n number of rows/cols in a symmetric matrix
p_a point to a p_n x p_n symmetric matrix
p_out output stream

symLo2Stream

template  <typename t_DataType, unsigned int t_ParEntries>
void symLo2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

symLo2Stream function that moves sub-symmetric matrix from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallel processed entries in the matrix
p_n number of rows/cols in a symmetric matrix
p_a point to a p_n x p_n symmetric matrix
p_out output stream

spmUp2Stream

template  <typename t_DataType, unsigned int t_ParEntries>
void spmUp2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

spmUp2Stream function that moves packed super-symmetric matrix from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallel processed entries in the matrix
p_n number of rows/cols in a symmetric matrix
p_a point to a p_n x p_n symmetric matrix
p_out output stream

spmLo2Stream

template  <typename t_DataType, unsigned int t_ParEntries>
void spmLo2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

spmLo2Stream function that moves packed sub-symmetric matrix from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallel processed entries in the matrix
p_n number of rows/cols in a symmetric matrix
p_a point to a p_n x p_n symmetric matrix
p_out output stream

vec2SymStream

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2SymStream(unsigned int p_n, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

vec2SymStream function that moves vector from memory to stream that matches the symatrix matrix data mover outputs

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
p_n number of rows/cols in a square matrix
p_x vector input
p_out output stream

trmUp2Stream

template  <typename t_DataType, unsigned int t_ParEntries>
void trmUp2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

trmUp2Stream function that read the super-triangular matrix from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries the number of parallelly processed entries in the matrix
p_n number of rows/cols in a symmetric matrix
p_a memory location of a p_n x p_n symmetric matrix
p_out the streams of matrix entries

trmLo2Stream

template  <typename t_DataType, unsigned int t_ParEntries>
void trmLo2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

trmLo2Stream function that read the sub-tridiagonal matrix with from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries the number of parallelly processed entries in the matrix
p_n number of rows/cols in a symmetric matrix
p_a memory location of a p_n x p_n symmetric matrix
p_out the streams of matrix entries

tpmUp2Stream

template  <typename t_DataType, unsigned int t_ParEntries>
void tpmUp2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

tpmUp2Stream function that read the packed super-triangular matrix from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries the number of parallelly processed entries in the matrix
p_n number of rows/cols in a symmetric matrix
p_a memory location of a p_n x p_n symmetric matrix
p_out the streams of matrix entries

tpmLo2Stream

template  <typename t_DataType, unsigned int t_ParEntries>
void tpmLo2Stream(unsigned int p_n, t_DataType* p_a, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

tpmLo2Stream function that read the packed sub-symmetric matrix with from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries the number of parallelly processed entries in the matrix
p_n number of rows/cols in a symmetric matrix
p_a memory location of a p_n x p_n symmetric matrix
p_out the streams of matrix entries

vec2TrmUpStream

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2TrmUpStream(unsigned int p_n, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

vec2TrmUpStream function that moves vector from memory to stream that matches the trmUp2Stream/tpmUp2Stream outputs

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
p_n number of rows/cols in a square matrix
p_x vector input
p_out output stream

vec2TrmLoStream

template  <typename t_DataType, unsigned int t_ParEntries>
void vec2TrmLoStream(unsigned int p_n, t_DataType* p_x, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

vec2TrmLoStream function that moves vector from memory to stream that matches the trmLo2Stream/tpmLo2Stream outputs

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
p_n number of rows/cols in a square matrix
p_x vector input
p_out output stream

readVec2Stream

template  <typename t_DataType, unsigned int t_ParEntries>
void readVec2Stream(t_DataType* p_in, unsigned int p_n, hls::stream<WideType<t_DataType, t_ParEntries>>& p_out)

readVec2Stream function that moves vector from memory to stream

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
p_n number of entries in a vectpr
p_in vector input
p_out output stream

writeStream2Vec

template  <typename t_DataType, unsigned int t_ParEntries>
void writeStream2Vec(hls::stream<WideType<t_DataType, t_ParEntries>>& p_in, unsigned int p_n, t_DataType* p_out)

writeStream2Vec function that moves vector from stream to vector

Parameters:

t_DataType the data type of the matrix entries
t_ParEntries number of parallelly processed entries in the matrix
p_n number of entries in a vectpr
p_in vector stream input
p_out vector output memory