DSPLIB User Guide
DSPLIB_lud_sol_ci.cpp File Reference

Go to the source code of this file.

Functions

template<typename dataType >
void DSPLIB_lud_sol_substitution_init_ci (DSPLIB_kernelHandle handle)
 
template void DSPLIB_lud_sol_substitution_init_ci< float > (DSPLIB_kernelHandle handle)
 
template void DSPLIB_lud_sol_substitution_init_ci< double > (DSPLIB_kernelHandle handle)
 
template<typename dataType >
void DSPLIB_lud_sol_permuteB_init_ci (DSPLIB_kernelHandle handle)
 
template void DSPLIB_lud_sol_permuteB_init_ci< float > (DSPLIB_kernelHandle handle)
 
template void DSPLIB_lud_sol_permuteB_init_ci< double > (DSPLIB_kernelHandle handle)
 
template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_sol_init_ci (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsP, const DSPLIB_bufParams2D_t *bufParamsL, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams1D_t *bufParamsB, const DSPLIB_bufParams1D_t *bufParamsX, const DSPLIB_bufParams2D_t *bufParamsVecScratch, const DSPLIB_bufParams2D_t *bufParamsScratchTrans, const DSPLIB_lud_solInitArgs *pKerInitArgs)
 This function is the initialization function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_sol_init. More...
 
template DSPLIB_STATUS DSPLIB_lud_sol_init_ci< float > (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsP, const DSPLIB_bufParams2D_t *bufParamsL, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams1D_t *bufParamsB, const DSPLIB_bufParams1D_t *bufParamsX, const DSPLIB_bufParams2D_t *bufParamsVecScratch, const DSPLIB_bufParams2D_t *bufParamsScratchTrans, const DSPLIB_lud_solInitArgs *pKerInitArgs)
 
template DSPLIB_STATUS DSPLIB_lud_sol_init_ci< double > (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsP, const DSPLIB_bufParams2D_t *bufParamsL, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams1D_t *bufParamsB, const DSPLIB_bufParams1D_t *bufParamsX, const DSPLIB_bufParams2D_t *bufParamsVecScratch, const DSPLIB_bufParams2D_t *bufParamsScratchTrans, const DSPLIB_lud_solInitArgs *pKerInitArgs)
 
template<typename dataType >
void DSPLIB_lud_sol_permuteB_ci (unsigned short *pIn, dataType *B, dataType *B_Mod, int32_t order, int32_t colPStride, uint32_t *permuteOrder, uint8_t *pBlock)
 
template void DSPLIB_lud_sol_permuteB_ci< float > (unsigned short *pIn, float *B, float *B_Mod, int32_t order, int32_t colPStride, uint32_t *permuteOrder, uint8_t *pBlock)
 
template void DSPLIB_lud_sol_permuteB_ci< double > (unsigned short *pIn, double *B, double *B_Mod, int32_t order, int32_t colPStride, uint32_t *permuteOrder, uint8_t *pBlock)
 
template<typename dataType , typename V = typename c7x::make_full_vector<dataType>::type>
void getElement (V inVec, uint32_t index, dataType *element)
 
template<typename V >
void getElement (V inVec, uint32_t index, float *element)
 
template<typename V >
void getElement (V inVec, uint32_t index, double *element)
 
template<typename dataType >
static void DSPLIB_lud_sol_forwardSubstitution_ci (dataType *pL, dataType *pY, dataType *pB, dataType *pDiv, int32_t order, int32_t colLstride, uint8_t *pBlock)
 
template void DSPLIB_lud_sol_forwardSubstitution_ci< float > (float *pL, float *pX, float *pY, float *pDiv, int32_t order, int32_t colLstride, uint8_t *pBlock)
 
template void DSPLIB_lud_sol_forwardSubstitution_ci< double > (double *pL, double *pX, double *pY, double *pDiv, int32_t order, int32_t colLstride, uint8_t *pBlock)
 
template<typename dataType >
static void DSPLIB_lud_sol_backSubstitution_ci (dataType *pL, dataType *pX, dataType *pY, dataType *pDiv, int32_t order, int32_t colLstride, uint8_t *pBlock)
 
template void DSPLIB_lud_sol_backSubstitution_ci< float > (float *pL, float *pX, float *pY, float *pDiv, int32_t order, int32_t colLstride, uint8_t *pBlock)
 
template void DSPLIB_lud_sol_backSubstitution_ci< double > (double *pL, double *pX, double *pY, double *pDiv, int32_t order, int32_t colLstride, uint8_t *pBlock)
 
template<typename dataType >
int DSPLIB_lud_sol_ci (DSPLIB_lud_sol_PrivArgs *pKerPrivArgs, unsigned short *P, dataType *L, dataType *U, dataType *B, dataType *B_Mod, dataType *Y, dataType *X, dataType *pDiv, dataType *pScratchTrans)
 
template int DSPLIB_lud_sol_ci< float > (DSPLIB_lud_sol_PrivArgs *pKerPrivArgs, unsigned short *P, float *L, float *U, float *B, float *B_Mod, float *Y, float *X, float *pDiv, float *pScratchTrans)
 
template int DSPLIB_lud_sol_ci< double > (DSPLIB_lud_sol_PrivArgs *pKerPrivArgs, unsigned short *P, double *L, double *U, double *B, double *B_Mod, double *Y, double *X, double *pDiv, double *pScratchTrans)
 
template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_sol_exec_ci (DSPLIB_kernelHandle handle, void *restrict pP, void *restrict pL, void *restrict pU, void *restrict pB, void *restrict pX, void *restrict pVecScratch, void *restrict pScratchTrans)
 This function is the main execution function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_sol_exec. More...
 
template DSPLIB_STATUS DSPLIB_lud_sol_exec_ci< float > (DSPLIB_kernelHandle handle, void *restrict pP, void *restrict pL, void *restrict pU, void *restrict pB, void *restrict pX, void *restrict pVecScratch, void *restrict pScratchTrans)
 
template DSPLIB_STATUS DSPLIB_lud_sol_exec_ci< double > (DSPLIB_kernelHandle handle, void *restrict pP, void *restrict pL, void *restrict pU, void *restrict pB, void *restrict pX, void *restrict pVecScratch, void *restrict pScratchTrans)
 

Function Documentation

◆ DSPLIB_lud_sol_substitution_init_ci()

template<typename dataType >
void DSPLIB_lud_sol_substitution_init_ci ( DSPLIB_kernelHandle  handle)

Definition at line 55 of file DSPLIB_lud_sol_ci.cpp.

◆ DSPLIB_lud_sol_substitution_init_ci< float >()

template void DSPLIB_lud_sol_substitution_init_ci< float > ( DSPLIB_kernelHandle  handle)

◆ DSPLIB_lud_sol_substitution_init_ci< double >()

template void DSPLIB_lud_sol_substitution_init_ci< double > ( DSPLIB_kernelHandle  handle)

◆ DSPLIB_lud_sol_permuteB_init_ci()

template<typename dataType >
void DSPLIB_lud_sol_permuteB_init_ci ( DSPLIB_kernelHandle  handle)

Definition at line 131 of file DSPLIB_lud_sol_ci.cpp.

◆ DSPLIB_lud_sol_permuteB_init_ci< float >()

template void DSPLIB_lud_sol_permuteB_init_ci< float > ( DSPLIB_kernelHandle  handle)

◆ DSPLIB_lud_sol_permuteB_init_ci< double >()

template void DSPLIB_lud_sol_permuteB_init_ci< double > ( DSPLIB_kernelHandle  handle)

◆ DSPLIB_lud_sol_init_ci()

template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_sol_init_ci ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsP,
const DSPLIB_bufParams2D_t bufParamsL,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams1D_t bufParamsB,
const DSPLIB_bufParams1D_t bufParamsX,
const DSPLIB_bufParams2D_t bufParamsVecScratch,
const DSPLIB_bufParams2D_t bufParamsTransposeScratch,
const DSPLIB_lud_solInitArgs pKerInitArgs 
)

This function is the initialization function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_sol_init.

This function determines the configuration for the streaming engine resources based on the function call parameters, and the configuration is saved in bufPBlock array. In the kernel call sequence, DSPLIB_lud_sol_exec_ci would be called later independently by the application. When DSPLIB_lud_sol_exec_ci runs, it merely retrieves the configuration from the bufPBlock and uses it to set up the hardware resources. This arrangement is so that DSPLIB_lud_sol_exec_ci does not lose cycles to determine the hardware configuration.

Parameters
[in]handle: Active handle to the kernel
[in]bufParamsP: Pointer to the structure containing dimensional information of input buffer P
[in]bufParamsL: Pointer to the structure containing dimensional information of input buffer L
[in]bufParamsU: Pointer to the structure containing dimensional information of input buffer U
[in]bufParamsB: Pointer to the structure containing dimensional information of input buffer B
[out]bufParamsX: Pointer to the structure containing dimensional information of ouput buffer X
[in]bufParamsVecScratch: Pointer to the structure containing dimensional information of intermediate buffer
[in]bufParamsTransposeScratch: Pointer to the structure containing dimensional information of scratch buffer pScratchTrans
[in]pKerInitArgs: Pointer to the structure holding init parameters
Returns
Status value indicating success or failure. Refer to DSPLIB_STATUS.

Definition at line 161 of file DSPLIB_lud_sol_ci.cpp.

◆ DSPLIB_lud_sol_init_ci< float >()

template DSPLIB_STATUS DSPLIB_lud_sol_init_ci< float > ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsP,
const DSPLIB_bufParams2D_t bufParamsL,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams1D_t bufParamsB,
const DSPLIB_bufParams1D_t bufParamsX,
const DSPLIB_bufParams2D_t bufParamsVecScratch,
const DSPLIB_bufParams2D_t bufParamsScratchTrans,
const DSPLIB_lud_solInitArgs pKerInitArgs 
)

◆ DSPLIB_lud_sol_init_ci< double >()

template DSPLIB_STATUS DSPLIB_lud_sol_init_ci< double > ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsP,
const DSPLIB_bufParams2D_t bufParamsL,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams1D_t bufParamsB,
const DSPLIB_bufParams1D_t bufParamsX,
const DSPLIB_bufParams2D_t bufParamsVecScratch,
const DSPLIB_bufParams2D_t bufParamsScratchTrans,
const DSPLIB_lud_solInitArgs pKerInitArgs 
)

◆ DSPLIB_lud_sol_permuteB_ci()

template<typename dataType >
void DSPLIB_lud_sol_permuteB_ci ( unsigned short *  pIn,
dataType *  B,
dataType *  B_Mod,
int32_t  order,
int32_t  colPStride,
uint32_t *  permuteOrder,
uint8_t *  pBlock 
)

Definition at line 219 of file DSPLIB_lud_sol_ci.cpp.

◆ DSPLIB_lud_sol_permuteB_ci< float >()

template void DSPLIB_lud_sol_permuteB_ci< float > ( unsigned short *  pIn,
float *  B,
float *  B_Mod,
int32_t  order,
int32_t  colPStride,
uint32_t *  permuteOrder,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_sol_permuteB_ci< double >()

template void DSPLIB_lud_sol_permuteB_ci< double > ( unsigned short *  pIn,
double *  B,
double *  B_Mod,
int32_t  order,
int32_t  colPStride,
uint32_t *  permuteOrder,
uint8_t *  pBlock 
)

◆ getElement() [1/3]

template<typename dataType , typename V = typename c7x::make_full_vector<dataType>::type>
void getElement ( inVec,
uint32_t  index,
dataType *  element 
)
inline

◆ getElement() [2/3]

template<typename V >
void getElement ( inVec,
uint32_t  index,
float *  element 
)
inline

Definition at line 345 of file DSPLIB_lud_sol_ci.cpp.

◆ getElement() [3/3]

template<typename V >
void getElement ( inVec,
uint32_t  index,
double *  element 
)
inline

Definition at line 350 of file DSPLIB_lud_sol_ci.cpp.

◆ DSPLIB_lud_sol_forwardSubstitution_ci()

template<typename dataType >
static void DSPLIB_lud_sol_forwardSubstitution_ci ( dataType *  pL,
dataType *  pY,
dataType *  pB,
dataType *  pDiv,
int32_t  order,
int32_t  colLstride,
uint8_t *  pBlock 
)
inlinestatic

Definition at line 356 of file DSPLIB_lud_sol_ci.cpp.

◆ DSPLIB_lud_sol_forwardSubstitution_ci< float >()

template void DSPLIB_lud_sol_forwardSubstitution_ci< float > ( float *  pL,
float *  pX,
float *  pY,
float *  pDiv,
int32_t  order,
int32_t  colLstride,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_sol_forwardSubstitution_ci< double >()

template void DSPLIB_lud_sol_forwardSubstitution_ci< double > ( double *  pL,
double *  pX,
double *  pY,
double *  pDiv,
int32_t  order,
int32_t  colLstride,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_sol_backSubstitution_ci()

template<typename dataType >
static void DSPLIB_lud_sol_backSubstitution_ci ( dataType *  pL,
dataType *  pX,
dataType *  pY,
dataType *  pDiv,
int32_t  order,
int32_t  colLstride,
uint8_t *  pBlock 
)
inlinestatic

Definition at line 571 of file DSPLIB_lud_sol_ci.cpp.

◆ DSPLIB_lud_sol_backSubstitution_ci< float >()

template void DSPLIB_lud_sol_backSubstitution_ci< float > ( float *  pL,
float *  pX,
float *  pY,
float *  pDiv,
int32_t  order,
int32_t  colLstride,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_sol_backSubstitution_ci< double >()

template void DSPLIB_lud_sol_backSubstitution_ci< double > ( double *  pL,
double *  pX,
double *  pY,
double *  pDiv,
int32_t  order,
int32_t  colLstride,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_sol_ci()

template<typename dataType >
int DSPLIB_lud_sol_ci ( DSPLIB_lud_sol_PrivArgs pKerPrivArgs,
unsigned short *  P,
dataType *  L,
dataType *  U,
dataType *  B,
dataType *  B_Mod,
dataType *  Y,
dataType *  X,
dataType *  pDiv,
dataType *  pScratchTrans 
)

Definition at line 863 of file DSPLIB_lud_sol_ci.cpp.

◆ DSPLIB_lud_sol_ci< float >()

template int DSPLIB_lud_sol_ci< float > ( DSPLIB_lud_sol_PrivArgs pKerPrivArgs,
unsigned short *  P,
float *  L,
float *  U,
float *  B,
float *  B_Mod,
float *  Y,
float *  X,
float *  pDiv,
float *  pScratchTrans 
)

◆ DSPLIB_lud_sol_ci< double >()

template int DSPLIB_lud_sol_ci< double > ( DSPLIB_lud_sol_PrivArgs pKerPrivArgs,
unsigned short *  P,
double *  L,
double *  U,
double *  B,
double *  B_Mod,
double *  Y,
double *  X,
double *  pDiv,
double *  pScratchTrans 
)

◆ DSPLIB_lud_sol_exec_ci()

template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_sol_exec_ci ( DSPLIB_kernelHandle  handle,
void *restrict  pP,
void *restrict  pL,
void *restrict  pU,
void *restrict  pB,
void *restrict  pX,
void *restrict  pVecScratch,
void *restrict  pScratchTrans 
)

This function is the main execution function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_sol_exec.

The function uses streaming engine to load data in TRANSPOSE MODE. The result is then stored at separate location using a streaming address generator.

Parameters
[in]handle: Active handle to the kernel
[in]pP: Pointer to permutation matrix P
[in]pL: Pointer to lower triangular matrix L
[in]pU: Pointer to upper triangular matrix U
[in]pB: Pointer to vector b
[out]pX: Pointer to final solver output vector x
[in]pVecScratch: Pointer to intermediate buffer
[in]pScratchTrans: Pointer to scratch buffer for transpose
Returns
Status value indicating success or failure. Refer to DSPLIB_STATUS.
Performance Considerations:
For best performance,
  • the input and output data buffers are expected to be in L2 memory
  • the buffer pointers are assumed to be 64-byte aligned

Definition at line 935 of file DSPLIB_lud_sol_ci.cpp.

◆ DSPLIB_lud_sol_exec_ci< float >()

template DSPLIB_STATUS DSPLIB_lud_sol_exec_ci< float > ( DSPLIB_kernelHandle  handle,
void *restrict  pP,
void *restrict  pL,
void *restrict  pU,
void *restrict  pB,
void *restrict  pX,
void *restrict  pVecScratch,
void *restrict  pScratchTrans 
)

◆ DSPLIB_lud_sol_exec_ci< double >()

template DSPLIB_STATUS DSPLIB_lud_sol_exec_ci< double > ( DSPLIB_kernelHandle  handle,
void *restrict  pP,
void *restrict  pL,
void *restrict  pU,
void *restrict  pB,
void *restrict  pX,
void *restrict  pVecScratch,
void *restrict  pScratchTrans 
)