DSPLIB User Guide
DSPLIB_cholesky_inplace_ci.cpp File Reference

Go to the source code of this file.

Macros

#define UNROLL_COUNT   4
 
#define MIN_HORIZONTAL_COLUMNS_FOR_UNROLL   2
 
#define NUM_VECS_IN_TILE   6
 

Functions

template<typename dataType >
DSPLIB_STATUS DSPLIB_cholesky_inplace_c7x_PingPong_init (DSPLIB_kernelHandle handle)
 
template DSPLIB_STATUS DSPLIB_cholesky_inplace_c7x_PingPong_init< float > (DSPLIB_kernelHandle handle)
 
template DSPLIB_STATUS DSPLIB_cholesky_inplace_c7x_PingPong_init< double > (DSPLIB_kernelHandle handle)
 
template<typename dataType >
DSPLIB_STATUS DSPLIB_cholesky_inplace_init_ci (DSPLIB_kernelHandle handle, DSPLIB_bufParams2D_t *bufParamsA, DSPLIB_bufParams1D_t *bufParamsMul, const DSPLIB_cholesky_inplace_InitArgs *pKerInitArgs)
 This function is the initialization function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_cholesky_inplace_init. More...
 
template DSPLIB_STATUS DSPLIB_cholesky_inplace_init_ci< float > (DSPLIB_kernelHandle handle, DSPLIB_bufParams2D_t *bufParamsA, DSPLIB_bufParams1D_t *bufParamsMul, const DSPLIB_cholesky_inplace_InitArgs *pKerInitArgs)
 
template DSPLIB_STATUS DSPLIB_cholesky_inplace_init_ci< double > (DSPLIB_kernelHandle handle, DSPLIB_bufParams2D_t *bufParamsA, DSPLIB_bufParams1D_t *bufParamsMul, const DSPLIB_cholesky_inplace_InitArgs *pKerInitArgs)
 
template<typename dataType >
dataType getRecipSqrt (dataType a)
 
template<typename dataType >
c7x::uchar_vec DSPLIB_cholesky_inplace_getMaskIncrement ()
 
template<>
c7x::uchar_vec DSPLIB_cholesky_inplace_getMaskIncrement< float > ()
 
template<>
c7x::uchar_vec DSPLIB_cholesky_inplace_getMaskIncrement< double > ()
 
template<typename dataType >
DSPLIB_STATUS DSPLIB_cholesky_inplace_c7x_PingPong (int enable_test, DSPLIB_cholesky_inplace_PrivArgs *pKerPrivArgs, dataType *restrict pInALocal, dataType *restrict pOutULocal, dataType *restrict pMulBuffer)
 
template<typename dataType >
DSPLIB_STATUS DSPLIB_cholesky_inplace_exec_ci (DSPLIB_kernelHandle handle, void *restrict pA, void *restrict pMul)
 This function is the main execution function for the C7x implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_cholesky_inplace_exec. More...
 
template DSPLIB_STATUS DSPLIB_cholesky_inplace_exec_ci< float > (DSPLIB_kernelHandle handle, void *restrict pA, void *restrict pMul)
 
template DSPLIB_STATUS DSPLIB_cholesky_inplace_exec_ci< double > (DSPLIB_kernelHandle handle, void *restrict pA, void *restrict pMul)
 

Macro Definition Documentation

◆ UNROLL_COUNT

#define UNROLL_COUNT   4

Definition at line 55 of file DSPLIB_cholesky_inplace_ci.cpp.

◆ MIN_HORIZONTAL_COLUMNS_FOR_UNROLL

#define MIN_HORIZONTAL_COLUMNS_FOR_UNROLL   2

Definition at line 56 of file DSPLIB_cholesky_inplace_ci.cpp.

◆ NUM_VECS_IN_TILE

#define NUM_VECS_IN_TILE   6

Definition at line 57 of file DSPLIB_cholesky_inplace_ci.cpp.

Function Documentation

◆ DSPLIB_cholesky_inplace_c7x_PingPong_init()

template<typename dataType >
DSPLIB_STATUS DSPLIB_cholesky_inplace_c7x_PingPong_init ( DSPLIB_kernelHandle  handle)

Definition at line 65 of file DSPLIB_cholesky_inplace_ci.cpp.

◆ DSPLIB_cholesky_inplace_c7x_PingPong_init< float >()

◆ DSPLIB_cholesky_inplace_c7x_PingPong_init< double >()

◆ DSPLIB_cholesky_inplace_init_ci()

template<typename dataType >
DSPLIB_STATUS DSPLIB_cholesky_inplace_init_ci ( DSPLIB_kernelHandle  handle,
DSPLIB_bufParams2D_t bufParamsA,
DSPLIB_bufParams1D_t bufParamsMul,
const DSPLIB_cholesky_inplace_InitArgs pKerInitArgs 
)

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

This function determines the configuration for the streaming engine and MMA hardware resources based on the function call parameters, and the configuration is saved in bufPBlock array. In the kernel call sequence, DSPLIB_cholesky_inplace_exec_ci would be called later independently by the application. When DSPLIB_cholesky_inplace_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_cholesky_inplace_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
[in]bufParamsMul: Pointer to the structure containing dimensional information of scratch buffer
[in]pKerInitArgs: Pointer to the structure holding init parameters
Returns
Status value indicating success or failure. Refer to DSPLIB_STATUS.

Definition at line 160 of file DSPLIB_cholesky_inplace_ci.cpp.

◆ DSPLIB_cholesky_inplace_init_ci< float >()

template DSPLIB_STATUS DSPLIB_cholesky_inplace_init_ci< float > ( DSPLIB_kernelHandle  handle,
DSPLIB_bufParams2D_t bufParamsA,
DSPLIB_bufParams1D_t bufParamsMul,
const DSPLIB_cholesky_inplace_InitArgs pKerInitArgs 
)

◆ DSPLIB_cholesky_inplace_init_ci< double >()

template DSPLIB_STATUS DSPLIB_cholesky_inplace_init_ci< double > ( DSPLIB_kernelHandle  handle,
DSPLIB_bufParams2D_t bufParamsA,
DSPLIB_bufParams1D_t bufParamsMul,
const DSPLIB_cholesky_inplace_InitArgs pKerInitArgs 
)

◆ getRecipSqrt()

template<typename dataType >
dataType getRecipSqrt ( dataType  a)
inline

Definition at line 198 of file DSPLIB_cholesky_inplace_ci.cpp.

◆ DSPLIB_cholesky_inplace_getMaskIncrement()

template<typename dataType >
c7x::uchar_vec DSPLIB_cholesky_inplace_getMaskIncrement ( )

◆ DSPLIB_cholesky_inplace_getMaskIncrement< float >()

template<>
c7x::uchar_vec DSPLIB_cholesky_inplace_getMaskIncrement< float > ( )

Definition at line 221 of file DSPLIB_cholesky_inplace_ci.cpp.

◆ DSPLIB_cholesky_inplace_getMaskIncrement< double >()

template<>
c7x::uchar_vec DSPLIB_cholesky_inplace_getMaskIncrement< double > ( )

Definition at line 222 of file DSPLIB_cholesky_inplace_ci.cpp.

◆ DSPLIB_cholesky_inplace_c7x_PingPong()

template<typename dataType >
DSPLIB_STATUS DSPLIB_cholesky_inplace_c7x_PingPong ( int  enable_test,
DSPLIB_cholesky_inplace_PrivArgs pKerPrivArgs,
dataType *restrict  pInALocal,
dataType *restrict  pOutULocal,
dataType *restrict  pMulBuffer 
)

Definition at line 225 of file DSPLIB_cholesky_inplace_ci.cpp.

◆ DSPLIB_cholesky_inplace_exec_ci()

template<typename dataType >
DSPLIB_STATUS DSPLIB_cholesky_inplace_exec_ci ( DSPLIB_kernelHandle  handle,
void *restrict  pA,
void *restrict  pMul 
)

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

The function uses the Streaming Engine and Streaming Address generators to vectorize the operations of Cholesky Inplace Decomposition. The function operates on matrix A and stores the result in same matrix.

Parameters
[in]handle: Active handle to the kernel
[in]pA: Pointer to buffer holding the input data A[order][order]
[in]pMul: 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 769 of file DSPLIB_cholesky_inplace_ci.cpp.

◆ DSPLIB_cholesky_inplace_exec_ci< float >()

template DSPLIB_STATUS DSPLIB_cholesky_inplace_exec_ci< float > ( DSPLIB_kernelHandle  handle,
void *restrict  pA,
void *restrict  pMul 
)

◆ DSPLIB_cholesky_inplace_exec_ci< double >()

template DSPLIB_STATUS DSPLIB_cholesky_inplace_exec_ci< double > ( DSPLIB_kernelHandle  handle,
void *restrict  pA,
void *restrict  pMul 
)