cuPHY  0.1
CUDA PHY Layer Acceration Library
Data Structures | Typedefs | Enumerations | Functions
PUSCH Receiver

This section describes the PUSCH receive pipeline functions of the cuPHY application programming interface. More...

Data Structures

struct  _cuphyPuschCellDynPrm
 Per cell dynamic parameter. More...
 
struct  _cuphyPuschDataOut
 Output Data for PUSCH. More...
 
struct  _cuphyPuschDmrsPrm
 DMRS information. More...
 
struct  _cuphyPuschDynDbgPrms
 PUSCH Dynamic Logging API. More...
 
struct  _cuphyPuschDynPrms
 PUSCH Dynamic Parameters. More...
 
struct  _cuphyPuschStatDbgPrms
 PUSCH Debug API. More...
 
struct  _cuphyPuschStatPrms
 PUSCH Static Parameters. More...
 
struct  _cuphyPuschUeGrpPrm
 Co-scheduled UE group parameters. More...
 
struct  _cuphyPuschUePrm
 Per UE parameters. More...
 
struct  _cuphyUciOnPusch
 Uci on pusch parameters. More...
 
struct  cuphyPuschCellGrpDynPrm_t
 Cell group dynamic parameters. More...
 
struct  cuphyPuschDataInOut_t
 PUSCH In/Out Data. More...
 

Typedefs

typedef struct cuphyPuschRx * cuphyPuschRxHndl_t
 

Enumerations

enum  _cuphyPuschLdpcKernelLaunch { ,
  PUSCH_RX_LDPC_STREAM_POOL = 0x2,
  PUSCH_RX_LDPC_STREAM_SEQUENTIAL = 0x4,
  PUSCH_RX_ENABLE_LDPC_DEC_SINGLE_STREAM_OPT = 0x8
}
 PUSCH Kernel Launch Types. More...
 
enum  _cuphyPuschProcMode { ,
  PUSCH_PROC_MODE_FULL_SLOT_GRAPHS = 0x1,
  PUSCH_MAX_PROC_MODES
}
 PUSCH processing modes. More...
 

Functions

cuphyStatus_t cuphyBatchPuschRx (cuphyPuschRxHndl_t puschRxHndl, cuphyPuschDynPrms_t *pDynPrms, cuphyPuschBatchPrmHndl_t batchPrmHndl)
 Batch PUSCH workoad. More...
 
cuphyStatus_t cuphyCreatePuschBatchPrm (cuphyPuschBatchPrmHndl_t *pBatchPrmHndl)
 Allocate a container for PUSCH batch parameters. More...
 
cuphyStatus_t cuphyCreatePuschRx (cuphyPuschRxHndl_t *pPuschRxHndl, cuphyPuschStatPrms_t const *pStatPrms, cudaStream_t cuStream)
 Allocates and initializes a cuPHY PUSCH pipeline. More...
 
cuphyStatus_t cuphyDestroyPuschBatchPrm (cuphyPuschBatchPrmHndl_t batchPrmHndl)
 Destroys container for PUSCH batch parameters. More...
 
cuphyStatus_t cuphyDestroyPuschRx (cuphyPuschRxHndl_t puschRxHndl)
 Destroys a cuPHY PUSCH receiver pipeline object. More...
 
cuphyStatus_t cuphyRunPuschRx (cuphyPuschRxHndl_t puschRxHndl)
 Run cuPHY PUSCH pipeline processing in specified mode. More...
 
cuphyStatus_t cuphySetupPuschRx (cuphyPuschRxHndl_t puschRxHndl, cuphyPuschDynPrms_t *pDynPrms, cuphyPuschBatchPrmHndl_t const batchPrmHndl)
 Setup cuPHY PUSCH pipeline for slot processing. More...
 
cuphyStatus_t cuphyWriteDbgBufSynch (cuphyPuschRxHndl_t puschRxHndl, cudaStream_t cuStream)
 Run cuPHY save Pusch debug buffer. More...
 

Detailed Description

Typedef Documentation

◆ cuphyPuschRxHndl_t

typedef struct cuphyPuschRx* cuphyPuschRxHndl_t

cuPHY PUSCH Receiver handle

Enumeration Type Documentation

◆ _cuphyPuschLdpcKernelLaunch

Enumerator
PUSCH_RX_LDPC_STREAM_POOL 

driver API is used to launch the LDPC decoder kernel on a single stream. Note: requires CUDA 11.0 or higher

PUSCH_RX_LDPC_STREAM_SEQUENTIAL 

LDPC kernel launch will run on multiple-stream via internal PUSCH stream-pool.

LDPC kernel launches will occur in a single stream, and each transport block will be processed via a separate kernel launch. In general, this may result in using fewer GPU resources, but may increase latency

PUSCH_RX_ENABLE_LDPC_DEC_SINGLE_STREAM_OPT 

inputs that have certain conditions will result in an LDPC decoder kernel launch in the same stream as other components. (For this to occur, there must be fewer than CUPHY_LDPC_DECODE_DESC_MAX_TB transport blocks, and all transport blocks must have the same LDPC configuration.) Only used when PUSCH_RX_LDPC_STREAM_SEQUENTIAL is NOT selected

◆ _cuphyPuschProcMode

Enumerator
PUSCH_PROC_MODE_FULL_SLOT_GRAPHS 

Full slot processing.

PUSCH_MAX_PROC_MODES 

Full slot processing with graphs.

Function Documentation

◆ cuphyBatchPuschRx()

cuphyStatus_t cuphyBatchPuschRx ( cuphyPuschRxHndl_t  puschRxHndl,
cuphyPuschDynPrms_t *  pDynPrms,
cuphyPuschBatchPrmHndl_t  batchPrmHndl 
)

Batch PUSCH workload across one or more cells, UE-groups and UEs. The batched configuration is used during slot execution

Returns CUPHY_STATUS_INVALID_ARGUMENT if puschRxHndl and/or pDynPrms (or its components) and/or batchPrmHndl is NULL

Returns CUPHY_STATUS_SUCCESS if setup is successful.

Parameters
puschRxHndl- Handle of PuschRx instance to be setup
pDynPrms- Dynamic parameters carrying information needed for slot processing
batchPrmHndl- Workload batching information
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyCreatePuschRx,cuphyRunPuschRx,cuphyDestroyPuschRx

◆ cuphyCreatePuschBatchPrm()

cuphyStatus_t cuphyCreatePuschBatchPrm ( cuphyPuschBatchPrmHndl_t *  pBatchPrmHndl)

Allocate storage to hold PUSCH batch parameters and return a handle in the address provided by the caller.

Returns CUPHY_STATUS_INVALID_ARGUMENT if pBatchPrmHndl is NULL.

Returns CUPHY_STATUS_ALLOC_FAILED if a batch parameter container object cannot be allocated

Returns CUPHY_STATUS_SUCCESS if allocation were successful.

Parameters
pBatchPrmHndl- Address to return the container for PUSCH batch parameters
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_ALLOC_FAILED, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyDestroyPuschBatchPrm

◆ cuphyCreatePuschRx()

cuphyStatus_t cuphyCreatePuschRx ( cuphyPuschRxHndl_t pPuschRxHndl,
cuphyPuschStatPrms_t const *  pStatPrms,
cudaStream_t  cuStream 
)

Allocates a cuPHY PUSCH receiver pipeline and returns a handle in the address provided by the caller.

Returns CUPHY_STATUS_INVALID_ARGUMENT if pPuschRxHndl and/or pStatPrms is NULL.

Returns CUPHY_STATUS_ALLOC_FAILED if a PuschRx object cannot be allocated

Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful.

Parameters
pPuschRxHndl- Address to return the new PuschRx instance
pStatPrms- Pointer to PUSCH static parameters to be used in pipeline creation
cuStream- CUDA stream used for creation time work (e.g static tensor copy, conversion)
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_ALLOC_FAILED, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphySetupPuschRx,cuphyRunPuschRx,cuphyDestroyPuschRx

◆ cuphyDestroyPuschBatchPrm()

cuphyStatus_t cuphyDestroyPuschBatchPrm ( cuphyPuschBatchPrmHndl_t  batchPrmHndl)

Destroy a cuPHY context object that was previously created by a call to cuphyCreatePuschBatchPrm. The handle provided to this function should not be used for any operations after this function returns.

Returns CUPHY_STATUS_INVALID_ARGUMENT if batchPrmHndl is NULL.

Returns CUPHY_STATUS_SUCCESS if destruction was successful.

Parameters
batchPrmHndl- previously allocated PUSCH batch parameter instance
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyCreatePuschBatchPrm

◆ cuphyDestroyPuschRx()

cuphyStatus_t cuphyDestroyPuschRx ( cuphyPuschRxHndl_t  puschRxHndl)

Destroys a cuPHY PUSCH receiver pipeline object that was previously created by cuphyCreatePuschRx. The handle provided to this function should not be used for any operations after this function returns.

Returns CUPHY_STATUS_INVALID_ARGUMENT if puschRxHndl is NULL.

Returns CUPHY_STATUS_SUCCESS if destruction was successful.

Parameters
puschRxHndl- handle to previously allocated PuschRx instance
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyCreatePuschRx

◆ cuphyRunPuschRx()

cuphyStatus_t cuphyRunPuschRx ( cuphyPuschRxHndl_t  puschRxHndl)

Call triggers cuPHY PUSCH receiver pipeline exeuction in mode specified by procModeBmsk

Returns CUPHY_STATUS_INVALID_ARGUMENT if puschRxHndl is NULL and/or procModeBmsk is not supported.

Returns CUPHY_STATUS_SUCCESS if PuschRx execution is successful.

Parameters
puschRxHndl- Handle of PuschRx instance which is to be triggered
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyCreatePuschRx,cuphySetupPuschRx,cuphyDestroyPuschRx

◆ cuphySetupPuschRx()

cuphyStatus_t cuphySetupPuschRx ( cuphyPuschRxHndl_t  puschRxHndl,
cuphyPuschDynPrms_t *  pDynPrms,
cuphyPuschBatchPrmHndl_t const  batchPrmHndl 
)

Setup cuPHY PUSCH receiver pipeline (and its components) state in preparation towards slot execution

Returns CUPHY_STATUS_INVALID_ARGUMENT if puschRxHndl and/or pDynPrms and/or batchPrmHndl is NULL

Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful.

Parameters
puschRxHndl- Handle of PuschRx instance to be setup
pDynPrms- Dynamic parameters carrying information needed for slot processing
batchPrmHndl- Workload batching information
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyCreatePuschRx,cuphyRunPuschRx,cuphyDestroyPuschRx

◆ cuphyWriteDbgBufSynch()

cuphyStatus_t cuphyWriteDbgBufSynch ( cuphyPuschRxHndl_t  puschRxHndl,
cudaStream_t  cuStream 
)
Parameters
puschRxHndl- Handle of PuschRx instance which saves the debug buffer
cuStream- CUDA stream used for PuschRx pipeline execution Note: requires stream synchronization durring call
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT