DSPLIB User Guide
DSPLIB_lud_sol_priv.h File Reference

Introduction

Header file for kernel's internal use. For the kernel's interface, please see DSPLIB_lud_sol.

Definition in file DSPLIB_lud_sol_priv.h.

Go to the source code of this file.

Data Structures

struct  DSPLIB_lud_sol_PrivArgs
 Structure that is reserved for internal use by the kernel. More...
 

Macros

#define DSPLIB_LUD_SOL_IXX_IXX_OXX_PBLOCK_SIZE   (8 * SE_PARAM_SIZE)
 Macro to define the size of bufPblock array of DSPLIB_lud_sol_PrivArgs structure. More...
 

Typedefs

typedef DSPLIB_STATUS(* pFxnDSPLIB_lud_sol_exec) (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 is a function pointer type that conforms to the declaration of DSPLIB_lud_sol_exec_ci and DSPLIB_lud_sol_exec_cn. More...
 

Functions

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. More...
 
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...
 
DSPLIB_STATUS DSPLIB_lud_sol_init_cn (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 natural C implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_sol_init. More...
 
template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_sol_exec_cn (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 natural C implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_sol_exec. More...
 

Macro Definition Documentation

◆ DSPLIB_LUD_SOL_IXX_IXX_OXX_PBLOCK_SIZE

#define DSPLIB_LUD_SOL_IXX_IXX_OXX_PBLOCK_SIZE   (8 * SE_PARAM_SIZE)

Macro to define the size of bufPblock array of DSPLIB_lud_sol_PrivArgs structure.

Definition at line 39 of file DSPLIB_lud_sol_priv.h.

Typedef Documentation

◆ pFxnDSPLIB_lud_sol_exec

typedef DSPLIB_STATUS(* pFxnDSPLIB_lud_sol_exec) (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 is a function pointer type that conforms to the declaration of DSPLIB_lud_sol_exec_ci and DSPLIB_lud_sol_exec_cn.

Definition at line 46 of file DSPLIB_lud_sol_priv.h.

Function Documentation

◆ 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_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_init_cn()

DSPLIB_STATUS DSPLIB_lud_sol_init_cn ( 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 natural C implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_sol_init.

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 36 of file DSPLIB_lud_sol_cn.cpp.

◆ DSPLIB_lud_sol_exec_cn()

template<typename dataType >
DSPLIB_STATUS DSPLIB_lud_sol_exec_cn ( 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 natural C implementation of the kernel. The function declaration conforms to the declaration of DSPLIB_lud_sol_exec.

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.

Definition at line 141 of file DSPLIB_lud_sol_cn.cpp.