DSPLIB User Guide
DSPLIB_lud_inv_ci.cpp File Reference

Go to the source code of this file.

Macros

#define LUD_INV_HIGH_PRECISION
 

Functions

template<typename dataType >
void DSPLIB_lud_inv_permuteRows_init_ci (DSPLIB_kernelHandle handle)
 
template void DSPLIB_lud_inv_permuteRows_init_ci< float > (DSPLIB_kernelHandle handle)
 
template void DSPLIB_lud_inv_permuteRows_init_ci< double > (DSPLIB_kernelHandle handle)
 
template<typename dataType >
void DSPLIB_lud_inv_opt_init_ci (DSPLIB_kernelHandle handle)
 
template void DSPLIB_lud_inv_opt_init_ci< float > (DSPLIB_kernelHandle handle)
 
template void DSPLIB_lud_inv_opt_init_ci< double > (DSPLIB_kernelHandle handle)
 
template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_inv_init_ci (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsP, const DSPLIB_bufParams2D_t *bufParamsL, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams2D_t *bufParamsinvA, const DSPLIB_lud_invInitArgs *pKerInitArgs)
 This function is the initialization function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_inv_init. More...
 
template DSPLIB_STATUS DSPLIB_lud_inv_init_ci< float > (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsP, const DSPLIB_bufParams2D_t *bufParamsL, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams2D_t *bufParamsinvA, const DSPLIB_lud_invInitArgs *pKerInitArgs)
 
template DSPLIB_STATUS DSPLIB_lud_inv_init_ci< double > (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsP, const DSPLIB_bufParams2D_t *bufParamsL, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams2D_t *bufParamsinvA, const DSPLIB_lud_invInitArgs *pKerInitArgs)
 
template<typename dataType >
void DSPLIB_lud_inv_permuteRows_ci (dataType *pIn, int32_t order, int32_t colStride, uint32_t *permuteOrder, dataType *pOut, uint8_t *pBlock)
 
template void DSPLIB_lud_inv_permuteRows_ci< float > (float *pIn, int32_t order, int32_t colStride, uint32_t *permuteOrder, float *pOut, uint8_t *pBlock)
 
template void DSPLIB_lud_inv_permuteRows_ci< double > (double *pIn, int32_t order, int32_t colStride, uint32_t *permuteOrder, double *pOut, uint8_t *pBlock)
 
void DSPLIB_lud_inv_permuteIndex_ci (unsigned short *pIn, int32_t order, int32_t colPStride, uint32_t *permuteOrder, uint8_t *pBlock)
 
template<typename dataType , typename vec = typename c7x::make_full_vector<dataType>::type>
static dataType DSPLIB_lud_inv_factor_exec_ci (dataType *pCol, int32_t colStride, int32_t nRows, dataType *pFactor, vec scaleVec, uint8_t *pBlock, __SE_TEMPLATE_v1 se0Params, __SE_TEMPLATE_v1 se1Params, __SA_TEMPLATE_v1 sa0Params, __SA_TEMPLATE_v1 sa1Params)
 
template<typename dataType >
void DSPLIB_lud_inv_invU_exec_ci (dataType *pLocalU, dataType *pLocalInvU, int32_t nCols, int32_t colStrideOrder, int32_t colInvAStride, dataType *factArray, uint8_t *pBlock)
 
template void DSPLIB_lud_inv_invU_exec_ci< float > (float *pLocalU, float *pLocalInvU, int32_t nCols, int32_t colStrideOrder, int32_t colInvAStride, float *factArray, uint8_t *pBlock)
 
template void DSPLIB_lud_inv_invU_exec_ci< double > (double *pLocalU, double *pLocalInvU, int32_t nCols, int32_t colStrideOrder, int32_t colInvAStride, double *factArray, uint8_t *pBlock)
 
template<typename dataType >
void DSPLIB_lud_inv_invL_exec_ci (dataType *pLocalL, dataType *pLocalInvL, int32_t nCols, int32_t colStrideOrder, int32_t colInvLStride, dataType *factArray, uint8_t *pBlock)
 
template void DSPLIB_lud_inv_invL_exec_ci< float > (float *pLocalL, float *pLocalInvL, int32_t nCols, int32_t colStrideOrder, int32_t colInvLStride, float *factArray, uint8_t *pBlock)
 
template void DSPLIB_lud_inv_invL_exec_ci< double > (double *pLocalL, double *pLocalInvL, int32_t nCols, int32_t colStrideOrder, int32_t colInvLStride, double *factArray, uint8_t *pBlock)
 
template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_inv_exec_ci (DSPLIB_kernelHandle handle, void *restrict pP, void *restrict pL, void *restrict pU, void *restrict pinvA, void *restrict pStratch)
 This function is the main execution function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_inv_exec. More...
 
template DSPLIB_STATUS DSPLIB_lud_inv_exec_ci< float > (DSPLIB_kernelHandle handle, void *restrict pP, void *restrict pL, void *restrict pU, void *restrict pinvA, void *restrict pStratch)
 
template DSPLIB_STATUS DSPLIB_lud_inv_exec_ci< double > (DSPLIB_kernelHandle handle, void *restrict pP, void *restrict pL, void *restrict pU, void *restrict pinvA, void *restrict pStratch)
 

Macro Definition Documentation

◆ LUD_INV_HIGH_PRECISION

#define LUD_INV_HIGH_PRECISION

Definition at line 49 of file DSPLIB_lud_inv_ci.cpp.

Function Documentation

◆ DSPLIB_lud_inv_permuteRows_init_ci()

template<typename dataType >
void DSPLIB_lud_inv_permuteRows_init_ci ( DSPLIB_kernelHandle  handle)

Definition at line 56 of file DSPLIB_lud_inv_ci.cpp.

◆ DSPLIB_lud_inv_permuteRows_init_ci< float >()

template void DSPLIB_lud_inv_permuteRows_init_ci< float > ( DSPLIB_kernelHandle  handle)

◆ DSPLIB_lud_inv_permuteRows_init_ci< double >()

template void DSPLIB_lud_inv_permuteRows_init_ci< double > ( DSPLIB_kernelHandle  handle)

◆ DSPLIB_lud_inv_opt_init_ci()

template<typename dataType >
void DSPLIB_lud_inv_opt_init_ci ( DSPLIB_kernelHandle  handle)

Definition at line 114 of file DSPLIB_lud_inv_ci.cpp.

◆ DSPLIB_lud_inv_opt_init_ci< float >()

template void DSPLIB_lud_inv_opt_init_ci< float > ( DSPLIB_kernelHandle  handle)

◆ DSPLIB_lud_inv_opt_init_ci< double >()

template void DSPLIB_lud_inv_opt_init_ci< double > ( DSPLIB_kernelHandle  handle)

◆ DSPLIB_lud_inv_init_ci()

template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_inv_init_ci ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsP,
const DSPLIB_bufParams2D_t bufParamsL,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams2D_t bufParamsinvA,
const DSPLIB_lud_invInitArgs pKerInitArgs 
)

This function is the initialization function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_inv_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_inv_exec_ci would be called later independently by the application. When DSPLIB_lud_inv_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_inv_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
[out]bufParamsinvA: Pointer to the structure containing dimensional information of ouput buffer invA
[in]pKerInitArgs: Pointer to the structure holding init parameters
Returns
Status value indicating success or failure. Refer to DSPLIB_STATUS.

Definition at line 204 of file DSPLIB_lud_inv_ci.cpp.

◆ DSPLIB_lud_inv_init_ci< float >()

template DSPLIB_STATUS DSPLIB_lud_inv_init_ci< float > ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsP,
const DSPLIB_bufParams2D_t bufParamsL,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams2D_t bufParamsinvA,
const DSPLIB_lud_invInitArgs pKerInitArgs 
)

◆ DSPLIB_lud_inv_init_ci< double >()

template DSPLIB_STATUS DSPLIB_lud_inv_init_ci< double > ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsP,
const DSPLIB_bufParams2D_t bufParamsL,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams2D_t bufParamsinvA,
const DSPLIB_lud_invInitArgs pKerInitArgs 
)

◆ DSPLIB_lud_inv_permuteRows_ci()

template<typename dataType >
void DSPLIB_lud_inv_permuteRows_ci ( dataType *  pIn,
int32_t  order,
int32_t  colStride,
uint32_t *  permuteOrder,
dataType *  pOut,
uint8_t *  pBlock 
)

Definition at line 271 of file DSPLIB_lud_inv_ci.cpp.

◆ DSPLIB_lud_inv_permuteRows_ci< float >()

template void DSPLIB_lud_inv_permuteRows_ci< float > ( float *  pIn,
int32_t  order,
int32_t  colStride,
uint32_t *  permuteOrder,
float *  pOut,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_inv_permuteRows_ci< double >()

template void DSPLIB_lud_inv_permuteRows_ci< double > ( double *  pIn,
int32_t  order,
int32_t  colStride,
uint32_t *  permuteOrder,
double *  pOut,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_inv_permuteIndex_ci()

void DSPLIB_lud_inv_permuteIndex_ci ( unsigned short *  pIn,
int32_t  order,
int32_t  colPStride,
uint32_t *  permuteOrder,
uint8_t *  pBlock 
)

Definition at line 355 of file DSPLIB_lud_inv_ci.cpp.

◆ DSPLIB_lud_inv_factor_exec_ci()

template<typename dataType , typename vec = typename c7x::make_full_vector<dataType>::type>
static dataType DSPLIB_lud_inv_factor_exec_ci ( dataType *  pCol,
int32_t  colStride,
int32_t  nRows,
dataType *  pFactor,
vec  scaleVec,
uint8_t *  pBlock,
__SE_TEMPLATE_v1  se0Params,
__SE_TEMPLATE_v1  se1Params,
__SA_TEMPLATE_v1  sa0Params,
__SA_TEMPLATE_v1  sa1Params 
)
inlinestatic

Definition at line 461 of file DSPLIB_lud_inv_ci.cpp.

◆ DSPLIB_lud_inv_invU_exec_ci()

template<typename dataType >
void DSPLIB_lud_inv_invU_exec_ci ( dataType *  pLocalU,
dataType *  pLocalInvU,
int32_t  nCols,
int32_t  colStrideOrder,
int32_t  colInvAStride,
dataType *  factArray,
uint8_t *  pBlock 
)

Definition at line 590 of file DSPLIB_lud_inv_ci.cpp.

◆ DSPLIB_lud_inv_invU_exec_ci< float >()

template void DSPLIB_lud_inv_invU_exec_ci< float > ( float *  pLocalU,
float *  pLocalInvU,
int32_t  nCols,
int32_t  colStrideOrder,
int32_t  colInvAStride,
float *  factArray,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_inv_invU_exec_ci< double >()

template void DSPLIB_lud_inv_invU_exec_ci< double > ( double *  pLocalU,
double *  pLocalInvU,
int32_t  nCols,
int32_t  colStrideOrder,
int32_t  colInvAStride,
double *  factArray,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_inv_invL_exec_ci()

template<typename dataType >
void DSPLIB_lud_inv_invL_exec_ci ( dataType *  pLocalL,
dataType *  pLocalInvL,
int32_t  nCols,
int32_t  colStrideOrder,
int32_t  colInvLStride,
dataType *  factArray,
uint8_t *  pBlock 
)

Definition at line 1391 of file DSPLIB_lud_inv_ci.cpp.

◆ DSPLIB_lud_inv_invL_exec_ci< float >()

template void DSPLIB_lud_inv_invL_exec_ci< float > ( float *  pLocalL,
float *  pLocalInvL,
int32_t  nCols,
int32_t  colStrideOrder,
int32_t  colInvLStride,
float *  factArray,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_inv_invL_exec_ci< double >()

template void DSPLIB_lud_inv_invL_exec_ci< double > ( double *  pLocalL,
double *  pLocalInvL,
int32_t  nCols,
int32_t  colStrideOrder,
int32_t  colInvLStride,
double *  factArray,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_inv_exec_ci()

template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_inv_exec_ci ( DSPLIB_kernelHandle  handle,
void *restrict  pP,
void *restrict  pL,
void *restrict  pU,
void *restrict  pinvA,
void *restrict  pScratch 
)

This function is the main execution function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_inv_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
[out]pinvA: Pointer to inverse of A matrix
[in]pScratch: Pointer to scratch buffer
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 2030 of file DSPLIB_lud_inv_ci.cpp.

◆ DSPLIB_lud_inv_exec_ci< float >()

template DSPLIB_STATUS DSPLIB_lud_inv_exec_ci< float > ( DSPLIB_kernelHandle  handle,
void *restrict  pP,
void *restrict  pL,
void *restrict  pU,
void *restrict  pinvA,
void *restrict  pStratch 
)

◆ DSPLIB_lud_inv_exec_ci< double >()

template DSPLIB_STATUS DSPLIB_lud_inv_exec_ci< double > ( DSPLIB_kernelHandle  handle,
void *restrict  pP,
void *restrict  pL,
void *restrict  pU,
void *restrict  pinvA,
void *restrict  pStratch 
)