DSPLIB User Guide
DSPLIB_lud_ci.cpp File Reference

Go to the source code of this file.

Macros

#define LUD_HIGH_PRECISION
 

Functions

template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_init_ci (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsA, const DSPLIB_bufParams2D_t *bufParamsL, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams2D_t *bufParamsP, const DSPLIB_ludInitArgs *pKerInitArgs)
 This function is the initialization function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_init. More...
 
template DSPLIB_STATUS DSPLIB_lud_init_ci< float > (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsA, const DSPLIB_bufParams2D_t *bufParamsL, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams2D_t *bufParamsP, const DSPLIB_ludInitArgs *pKerInitArgs)
 
template DSPLIB_STATUS DSPLIB_lud_init_ci< double > (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsA, const DSPLIB_bufParams2D_t *bufParamsL, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams2D_t *bufParamsP, const DSPLIB_ludInitArgs *pKerInitArgs)
 
template<typename dataType >
__vpred getPMask (uint32_t idx)
 
template<>
__vpred getPMask< float > (uint32_t idx)
 
template<>
__vpred getPMask< double > (uint32_t idx)
 
template<typename V , typename dataType >
getIdxVec ()
 
template<>
c7x::float_vec getIdxVec< c7x::float_vec, float > ()
 
template<>
c7x::double_vec getIdxVec< c7x::double_vec, double > ()
 
template<typename dataType , typename vec = typename c7x::make_full_vector<dataType>::type>
static void DSPLIB_lud_maxMinIndex_exec_ci (dataType *pCol, int32_t nRows, vec idx_0_to_eleCount, int32_t k, int32_t colStride, int32_t *max, int32_t *min, __SE_TEMPLATE_v1 se0Params)
 
template void DSPLIB_lud_maxMinIndex_exec_ci< float > (float *pCol, int32_t nRows, typename c7x::make_full_vector< float >::type idx_0_to_eleCount, int32_t k, int32_t colStride, int32_t *max, int32_t *min, __SE_TEMPLATE_v1 se0Params)
 
template void DSPLIB_lud_maxMinIndex_exec_ci< double > (double *pCol, int32_t nRows, typename c7x::make_full_vector< double >::type idx_0_to_eleCount, int32_t k, int32_t colStride, int32_t *max, int32_t *min, __SE_TEMPLATE_v1 se0Params)
 
template<typename dataType >
static void DSPLIB_lud_array_swap_exec_ci (dataType *pArray1, dataType *pArray2, int32_t nCols, __SA_TEMPLATE_v1 sa1Params, __SE_TEMPLATE_v1 se1Params)
 
template void DSPLIB_lud_array_swap_exec_ci< float > (float *pArray1, float *pArray2, int32_t nCols, __SA_TEMPLATE_v1 sa1Params, __SE_TEMPLATE_v1 se1Params)
 
template void DSPLIB_lud_array_swap_exec_ci< double > (double *pArray1, double *pArray2, int32_t nCols, __SA_TEMPLATE_v1 sa1Params, __SE_TEMPLATE_v1 se1Params)
 
template void DSPLIB_lud_array_swap_exec_ci< unsigned short > (unsigned short *pArray1, unsigned short *pArray2, int32_t nCols, __SA_TEMPLATE_v1 sa1Params, __SE_TEMPLATE_v1 se1Params)
 
template<typename dataType >
static void DSPLIB_lud_U_colDiv_exec_ci (dataType *pCol, int32_t nRows, int32_t colStride, __SA_TEMPLATE_v1 saColParams, __SE_TEMPLATE_v1 se0ColParams, __SE_TEMPLATE_v1 se1ColParams)
 
template void DSPLIB_lud_U_colDiv_exec_ci< float > (float *pCol, int32_t nRows, int32_t colStride, __SA_TEMPLATE_v1 saColParams, __SE_TEMPLATE_v1 se0ColParams, __SE_TEMPLATE_v1 se1ColParams)
 
template void DSPLIB_lud_U_colDiv_exec_ci< double > (double *pCol, int32_t nRows, int32_t colStride, __SA_TEMPLATE_v1 saColParams, __SE_TEMPLATE_v1 se0ColParams, __SE_TEMPLATE_v1 se1ColParams)
 
template<typename dataType >
static void DSPLIB_lud_U_generate_exec_ci (dataType *pLocalU, int32_t order, int32_t colStrideU, uint8_t *pBlock)
 
template void DSPLIB_lud_U_generate_exec_ci< float > (float *pLocalU, int32_t order, int32_t colStrideU, uint8_t *pBlock)
 
template void DSPLIB_lud_U_generate_exec_ci< double > (double *pLocalU, int32_t order, int32_t colStrideU, uint8_t *pBlock)
 
template<typename dataType >
void DSPLIB_lud_extract_exec_ci (dataType *pU, dataType *pL, int32_t order, int32_t colStride, uint8_t *pBlock)
 
template void DSPLIB_lud_extract_exec_ci< float > (float *pU, float *pL, int32_t order, int32_t colStride, uint8_t *pBlock)
 
template void DSPLIB_lud_extract_exec_ci< double > (double *pU, double *pL, int32_t order, int32_t colStride, uint8_t *pBlock)
 
template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_exec_ci (DSPLIB_kernelHandle handle, void *restrict pA, void *restrict pL, void *restrict pU, void *restrict pP)
 This function is the main execution function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_exec. More...
 
template DSPLIB_STATUS DSPLIB_lud_exec_ci< float > (DSPLIB_kernelHandle handle, void *restrict pA, void *restrict pL, void *restrict pU, void *restrict pP)
 
template DSPLIB_STATUS DSPLIB_lud_exec_ci< double > (DSPLIB_kernelHandle handle, void *restrict pA, void *restrict pL, void *restrict pU, void *restrict pP)
 

Variables

float16 idx_float = float16(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
 
double8 idx_double = double8(0, 1, 2, 3, 4, 5, 6, 7)
 

Macro Definition Documentation

◆ LUD_HIGH_PRECISION

#define LUD_HIGH_PRECISION

Definition at line 51 of file DSPLIB_lud_ci.cpp.

Function Documentation

◆ DSPLIB_lud_init_ci()

template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_init_ci ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsA,
const DSPLIB_bufParams2D_t bufParamsL,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams2D_t bufParamsP,
const DSPLIB_ludInitArgs pKerInitArgs 
)

This function is the initialization function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_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_exec_ci would be called later independently by the application. When DSPLIB_lud_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_exec_ci does not lose cycles to determine the hardware configuration.

Parameters
[in]handle: Active handle to the kernel
[in]bufParamsA: Pointer to the structure containing dimensional information of input buffer A
[out]bufParamsL: Pointer to the structure containing dimensional information of output buffer L
[out]bufParamsU: Pointer to the structure containing dimensional information of output buffer U
[out]bufParamsP: Pointer to the structure containing dimensional information of output buffer P
[in]pKerInitArgs: Pointer to the structure holding init parameters
Returns
Status value indicating success or failure. Refer to DSPLIB_STATUS.

Definition at line 59 of file DSPLIB_lud_ci.cpp.

◆ DSPLIB_lud_init_ci< float >()

template DSPLIB_STATUS DSPLIB_lud_init_ci< float > ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsA,
const DSPLIB_bufParams2D_t bufParamsL,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams2D_t bufParamsP,
const DSPLIB_ludInitArgs pKerInitArgs 
)

◆ DSPLIB_lud_init_ci< double >()

template DSPLIB_STATUS DSPLIB_lud_init_ci< double > ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsA,
const DSPLIB_bufParams2D_t bufParamsL,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams2D_t bufParamsP,
const DSPLIB_ludInitArgs pKerInitArgs 
)

◆ getPMask()

template<typename dataType >
__vpred getPMask ( uint32_t  idx)
inline

◆ getPMask< float >()

template<>
__vpred getPMask< float > ( uint32_t  idx)
inline

Definition at line 324 of file DSPLIB_lud_ci.cpp.

◆ getPMask< double >()

template<>
__vpred getPMask< double > ( uint32_t  idx)
inline

Definition at line 326 of file DSPLIB_lud_ci.cpp.

◆ getIdxVec()

template<typename V , typename dataType >
V getIdxVec ( )
inline

◆ getIdxVec< c7x::float_vec, float >()

template<>
c7x::float_vec getIdxVec< c7x::float_vec, float > ( )
inline

Definition at line 333 of file DSPLIB_lud_ci.cpp.

◆ getIdxVec< c7x::double_vec, double >()

template<>
c7x::double_vec getIdxVec< c7x::double_vec, double > ( )
inline

Definition at line 335 of file DSPLIB_lud_ci.cpp.

◆ DSPLIB_lud_maxMinIndex_exec_ci()

template<typename dataType , typename vec = typename c7x::make_full_vector<dataType>::type>
static void DSPLIB_lud_maxMinIndex_exec_ci ( dataType *  pCol,
int32_t  nRows,
vec  idx_0_to_eleCount,
int32_t  k,
int32_t  colStride,
int32_t *  max,
int32_t *  min,
__SE_TEMPLATE_v1  se0Params 
)
inlinestatic

Definition at line 338 of file DSPLIB_lud_ci.cpp.

◆ DSPLIB_lud_maxMinIndex_exec_ci< float >()

template void DSPLIB_lud_maxMinIndex_exec_ci< float > ( float *  pCol,
int32_t  nRows,
typename c7x::make_full_vector< float >::type  idx_0_to_eleCount,
int32_t  k,
int32_t  colStride,
int32_t *  max,
int32_t *  min,
__SE_TEMPLATE_v1  se0Params 
)

◆ DSPLIB_lud_maxMinIndex_exec_ci< double >()

template void DSPLIB_lud_maxMinIndex_exec_ci< double > ( double *  pCol,
int32_t  nRows,
typename c7x::make_full_vector< double >::type  idx_0_to_eleCount,
int32_t  k,
int32_t  colStride,
int32_t *  max,
int32_t *  min,
__SE_TEMPLATE_v1  se0Params 
)

◆ DSPLIB_lud_array_swap_exec_ci()

template<typename dataType >
static void DSPLIB_lud_array_swap_exec_ci ( dataType *  pArray1,
dataType *  pArray2,
int32_t  nCols,
__SA_TEMPLATE_v1  sa1Params,
__SE_TEMPLATE_v1  se1Params 
)
inlinestatic

Definition at line 436 of file DSPLIB_lud_ci.cpp.

◆ DSPLIB_lud_array_swap_exec_ci< float >()

template void DSPLIB_lud_array_swap_exec_ci< float > ( float *  pArray1,
float *  pArray2,
int32_t  nCols,
__SA_TEMPLATE_v1  sa1Params,
__SE_TEMPLATE_v1  se1Params 
)

◆ DSPLIB_lud_array_swap_exec_ci< double >()

template void DSPLIB_lud_array_swap_exec_ci< double > ( double *  pArray1,
double *  pArray2,
int32_t  nCols,
__SA_TEMPLATE_v1  sa1Params,
__SE_TEMPLATE_v1  se1Params 
)

◆ DSPLIB_lud_array_swap_exec_ci< unsigned short >()

template void DSPLIB_lud_array_swap_exec_ci< unsigned short > ( unsigned short *  pArray1,
unsigned short *  pArray2,
int32_t  nCols,
__SA_TEMPLATE_v1  sa1Params,
__SE_TEMPLATE_v1  se1Params 
)

◆ DSPLIB_lud_U_colDiv_exec_ci()

template<typename dataType >
static void DSPLIB_lud_U_colDiv_exec_ci ( dataType *  pCol,
int32_t  nRows,
int32_t  colStride,
__SA_TEMPLATE_v1  saColParams,
__SE_TEMPLATE_v1  se0ColParams,
__SE_TEMPLATE_v1  se1ColParams 
)
inlinestatic

Definition at line 489 of file DSPLIB_lud_ci.cpp.

◆ DSPLIB_lud_U_colDiv_exec_ci< float >()

template void DSPLIB_lud_U_colDiv_exec_ci< float > ( float *  pCol,
int32_t  nRows,
int32_t  colStride,
__SA_TEMPLATE_v1  saColParams,
__SE_TEMPLATE_v1  se0ColParams,
__SE_TEMPLATE_v1  se1ColParams 
)

◆ DSPLIB_lud_U_colDiv_exec_ci< double >()

template void DSPLIB_lud_U_colDiv_exec_ci< double > ( double *  pCol,
int32_t  nRows,
int32_t  colStride,
__SA_TEMPLATE_v1  saColParams,
__SE_TEMPLATE_v1  se0ColParams,
__SE_TEMPLATE_v1  se1ColParams 
)

◆ DSPLIB_lud_U_generate_exec_ci()

template<typename dataType >
static void DSPLIB_lud_U_generate_exec_ci ( dataType *  pLocalU,
int32_t  order,
int32_t  colStrideU,
uint8_t *  pBlock 
)
inlinestatic

Definition at line 573 of file DSPLIB_lud_ci.cpp.

◆ DSPLIB_lud_U_generate_exec_ci< float >()

template void DSPLIB_lud_U_generate_exec_ci< float > ( float *  pLocalU,
int32_t  order,
int32_t  colStrideU,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_U_generate_exec_ci< double >()

template void DSPLIB_lud_U_generate_exec_ci< double > ( double *  pLocalU,
int32_t  order,
int32_t  colStrideU,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_extract_exec_ci()

template<typename dataType >
void DSPLIB_lud_extract_exec_ci ( dataType *  pU,
dataType *  pL,
int32_t  order,
int32_t  colStride,
uint8_t *  pBlock 
)

Definition at line 892 of file DSPLIB_lud_ci.cpp.

◆ DSPLIB_lud_extract_exec_ci< float >()

template void DSPLIB_lud_extract_exec_ci< float > ( float *  pU,
float *  pL,
int32_t  order,
int32_t  colStride,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_extract_exec_ci< double >()

template void DSPLIB_lud_extract_exec_ci< double > ( double *  pU,
double *  pL,
int32_t  order,
int32_t  colStride,
uint8_t *  pBlock 
)

◆ DSPLIB_lud_exec_ci()

template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_exec_ci ( DSPLIB_kernelHandle  handle,
void *restrict  pA,
void *restrict  pL,
void *restrict  pU,
void *restrict  pP 
)

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

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

Parameters
[in]handle: Active handle to the kernel
[in]pA: Pointer to matrix A
[out]pL: Pointer to lower triangular matrix L
[out]pU: Pointer to upper triangular matrix U
[out]pP: Pointer to permutation matrix P
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 976 of file DSPLIB_lud_ci.cpp.

◆ DSPLIB_lud_exec_ci< float >()

template DSPLIB_STATUS DSPLIB_lud_exec_ci< float > ( DSPLIB_kernelHandle  handle,
void *restrict  pA,
void *restrict  pL,
void *restrict  pU,
void *restrict  pP 
)

◆ DSPLIB_lud_exec_ci< double >()

template DSPLIB_STATUS DSPLIB_lud_exec_ci< double > ( DSPLIB_kernelHandle  handle,
void *restrict  pA,
void *restrict  pL,
void *restrict  pU,
void *restrict  pP 
)

Variable Documentation

◆ idx_float

float16 idx_float = float16(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)

Definition at line 328 of file DSPLIB_lud_ci.cpp.

◆ idx_double

double8 idx_double = double8(0, 1, 2, 3, 4, 5, 6, 7)

Definition at line 329 of file DSPLIB_lud_ci.cpp.