cuPHY  0.1
CUDA PHY Layer Acceration Library
Data Structures | Typedefs | Enumerations | Functions
PDSCH Transmitter

This section describes the PDSCH transmit pipeline functions of the cuPHY application programming interface. More...

Data Structures

struct  _cuphyPdschCellDynPrm
 
struct  _cuphyPdschCellGrpDynPrm
 
struct  _cuphyPdschCwPrm
 
struct  _cuphyPdschDataIn
 
struct  _cuphyPdschDataOut
 
struct  _cuphyPdschDbgPrms
 
struct  _cuphyPdschDmrsPrm
 
struct  _cuphyPdschDynPrms
 
struct  _cuphyPdschStatPrms
 
struct  _cuphyPdschUeGrpPrm
 
struct  _cuphyPdschUePrm
 
struct  _cuphyPmW_t
 

Typedefs

typedef struct cuphyPdschBatchPrm * cuphyPdschBatchPrmHndl_t
 
typedef struct cuphyPdschTx * cuphyPdschTxHndl_t
 

Enumerations

enum  _cuphyPdschProcMode {
  PDSCH_PROC_MODE_NO_GRAPHS = 0,
  PDSCH_PROC_MODE_GRAPHS = 1,
  PDSCH_PROC_MODE_SETUP_ONCE_FALLBACK = 2,
  PDSCH_INTER_CELL_BATCHING = 4,
  PDSCH_MAX_PROC_MODES
}
 

Functions

cuphyStatus_t cuphyBatchPdschTx (cuphyPdschTxHndl_t pdschTxHndl, cuphyPdschDynPrms_t *pDynPrms, cuphyPdschBatchPrmHndl_t batchPrmHndl)
 Batch PDSCH workoad. More...
 
cuphyStatus_t cuphyCreatePdschBatchPrm (cuphyPdschBatchPrmHndl_t *pBatchPrmHndl)
 Allocate a container for PDSCH batch parameters. More...
 
cuphyStatus_t cuphyCreatePdschTx (cuphyPdschTxHndl_t *pPdschTxHndl, cuphyPdschStatPrms_t const *pStatPrms)
 Allocate and initialize a cuPHY PDSCH pipeline. More...
 
cuphyStatus_t cuphyDestroyPdschBatchPrm (cuphyPdschBatchPrmHndl_t batchPrmHndl)
 Destroy container for PDSCH batch parameters. More...
 
cuphyStatus_t cuphyDestroyPdschTx (cuphyPdschTxHndl_t pdschTxHndl)
 Destroy a cuPHY PDSCH transmit pipeline object. More...
 
cuphyStatus_t cuphyFallbackBufferSetupPdschTx (cuphyPdschTxHndl_t pdschTxHndl, void *pAddr, cudaStream_t strm)
 Fallback single-cell output buffer setup for cuPHY PDSCH pipeline for slot processing. More...
 
cuphyStatus_t cuphyFallbackBuffersSetupPdschTx (cuphyPdschTxHndl_t pdschTxHndl, void **pAddr, int fallback_cells, cudaStream_t strm)
 Fallback output buffers setup for multiple cells in cell group for cuPHY PDSCH pipeline for slot processing. More...
 
cuphyStatus_t cuphyRunPdschTx (cuphyPdschTxHndl_t pdschTxHndl, uint64_t procModeBmsk)
 Run cuPHY PDSCH pipeline processing in specified mode. More...
 
cuphyStatus_t cuphySetupPdschTx (cuphyPdschTxHndl_t pdschTxHndl, cuphyPdschDynPrms_t *pDynPrms, cuphyPdschBatchPrmHndl_t const batchPrmHndl)
 Setup cuPHY PDSCH pipeline for slot processing. More...
 

Detailed Description

Typedef Documentation

◆ cuphyPdschBatchPrmHndl_t

typedef struct cuphyPdschBatchPrm* cuphyPdschBatchPrmHndl_t

PDSCH batch configuration handle

◆ cuphyPdschTxHndl_t

typedef struct cuphyPdschTx* cuphyPdschTxHndl_t

cuPHY PDSCH transmitter handle

Enumeration Type Documentation

◆ _cuphyPdschProcMode

PDSCH processing modes.
Think of it as a bitmask [...] B2 B1 B0, where B0 is the least significant bit.
B0: streams (0) or graphs (1) mode
B1: setup once fallback if 1; default 0
B2: inter-cell kernel batching if 1; default 0. Only applicable when there are multiple cells in a cell group.

Enumerator
PDSCH_PROC_MODE_NO_GRAPHS 

processing without CUDA GRAPHS

PDSCH_PROC_MODE_GRAPHS 

processing with CUDA graphs

PDSCH_PROC_MODE_SETUP_ONCE_FALLBACK 

Force reset of TB-CRC buffers when running the same TV back to back with only a single setup; used to guarantee correctness. Use this mode with a bitwise or with any of the other modes (e.g., 0 to 1). Ensure value, currently 2, has only one bit set which does not overlap with any of the other modes.

PDSCH_INTER_CELL_BATCHING 

Enable inter-cell kernel batching if set. Mode only takes effect when there are multiple cells in a cell group. Used this mode with a bitwise OR with other modes. Ensure value, currently 4, has only one bit set which does not overlap with any of the other modes.

PDSCH_MAX_PROC_MODES 

maximum number of processing modes supported

Function Documentation

◆ cuphyBatchPdschTx()

cuphyStatus_t cuphyBatchPdschTx ( cuphyPdschTxHndl_t  pdschTxHndl,
cuphyPdschDynPrms_t *  pDynPrms,
cuphyPdschBatchPrmHndl_t  batchPrmHndl 
)

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

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

Returns CUPHY_STATUS_SUCCESS if setup is successful.

Parameters
pdschTxHndl- Handle of PdschTx 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,cuphyCreatePdschTx,cuphyRunPdschTx,cuphyDestroyPdschTx

◆ cuphyCreatePdschBatchPrm()

cuphyStatus_t cuphyCreatePdschBatchPrm ( cuphyPdschBatchPrmHndl_t pBatchPrmHndl)

Allocate storage to hold PDSCH 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 PDSCH batch parameters
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_ALLOC_FAILED, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyDestroyPdschBatchPrm

◆ cuphyCreatePdschTx()

cuphyStatus_t cuphyCreatePdschTx ( cuphyPdschTxHndl_t pPdschTxHndl,
cuphyPdschStatPrms_t const *  pStatPrms 
)

Allocate a cuPHY PDSCH transmitter pipeline and returns a handle in the address provided by the caller.

Returns CUPHY_STATUS_INVALID_ARGUMENT if pPdschTxHndl and/or pStatPrms is NULL.

Returns CUPHY_STATUS_ALLOC_FAILED if a PdschTx object cannot be allocated

Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful.

Parameters
pPdschTxHndl- Address to return the new PdschTx instance
pStatPrms- Pointer to PDSCH static parameters to be used in pipeline creation
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_ALLOC_FAILED, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphySetupPdschTx,cuphyRunPdschTx,cuphyDestroyPdschTx

◆ cuphyDestroyPdschBatchPrm()

cuphyStatus_t cuphyDestroyPdschBatchPrm ( cuphyPdschBatchPrmHndl_t  batchPrmHndl)

Destroy a cuPHY context object that was previously created by a call to cuphyCreatePdschBatchPrm. 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 PDSCH batch parameter instance
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyCreatePdschBatchPrm

◆ cuphyDestroyPdschTx()

cuphyStatus_t cuphyDestroyPdschTx ( cuphyPdschTxHndl_t  pdschTxHndl)

Destroy a cuPHY PDSCH transmitter pipeline object that was previously created by cuphyCreatePdschTx. The handle provided to this function should not be used for any operations after this function returns.

Returns CUPHY_STATUS_INVALID_ARGUMENT if pdschTxHndl is NULL.

Returns CUPHY_STATUS_SUCCESS if destruction was successful.

Parameters
pdschTxHndl- handle to previously allocated PdschTx instance
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyCreatePdschTx

◆ cuphyFallbackBufferSetupPdschTx()

cuphyStatus_t cuphyFallbackBufferSetupPdschTx ( cuphyPdschTxHndl_t  pdschTxHndl,
void *  pAddr,
cudaStream_t  strm 
)

Setup the output buffer address for cuPHY PDSCH transmitter pipeline in preparation towards slot execution. This function should only be used in PDSCH_PROC_MODE_SETUP_ONCE_FALLBACK mode and requires that cuphySetupPdschTx() has been called once before it for each pipeline object. It supports only one cell per pipeline.

Returns CUPHY_STATUS_INVALID_ARGUMENT if pdschTxHndl and/or pAddr is NULL

Returns CUPHY_STATUS_SUCCESS if buffer setup was successful.

Parameters
pdschTxHndl- Handle of PdschTx instance to be setup
pAddr- New address for pipeline's output tensor buffer (single cell only)
strm- CUDA stream for async. memory copy
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT

◆ cuphyFallbackBuffersSetupPdschTx()

cuphyStatus_t cuphyFallbackBuffersSetupPdschTx ( cuphyPdschTxHndl_t  pdschTxHndl,
void **  pAddr,
int  fallback_cells,
cudaStream_t  strm 
)

Setup the output buffer addresses for cuPHY PDSCH transmitter pipeline in preparation towards slot execution. This function should only be used in PDSCH_PROC_MODE_SETUP_ONCE_FALLBACK mode and requires that cuphySetupPdschTx() has been called once before it for each pipeline object. It supports multiple cells per pipeline.

Returns CUPHY_STATUS_INVALID_ARGUMENT if pdschTxHndl and/or pAddr or its elements are NULL

Returns CUPHY_STATUS_SUCCESS if buffers setup was successful.

Parameters
pdschTxHndl- Handle of PdschTx instance to be setup
pAddr- Array of addresses for pipeline's output tensor buffers (one buffer per cell). Order of addresses should match the order of dynamic cells in initial, non fallback, setup
fallback_cells- Number of cells (same as valid elements in pAddr array). Should match number of cells during initial, non fallback, setup.
strm- CUDA stream for async. memory copy
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT

◆ cuphyRunPdschTx()

cuphyStatus_t cuphyRunPdschTx ( cuphyPdschTxHndl_t  pdschTxHndl,
uint64_t  procModeBmsk 
)

Call triggers cuPHY PDSCH transmitter pipeline execution in mode specified by procModeBmsk

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

Returns CUPHY_STATUS_SUCCESS if PdschTx execution is successful.

Parameters
pdschTxHndl- Handle of PdschTx instance which is to be triggered
procModeBmsk- Processing mode bitmask containing one or more processing modes applicable during this execution
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyCreatePdschTx,cuphySetupPdschTx,cuphyDestroyPdschTx

◆ cuphySetupPdschTx()

cuphyStatus_t cuphySetupPdschTx ( cuphyPdschTxHndl_t  pdschTxHndl,
cuphyPdschDynPrms_t *  pDynPrms,
cuphyPdschBatchPrmHndl_t const  batchPrmHndl 
)

Setup cuPHY PDSCH transmitter pipeline (and its components) state in preparation towards slot execution

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

Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful.

Parameters
pdschTxHndl- Handle of PdschTx 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,cuphyCreatePdschTx,cuphyRunPdschTx,cuphyDestroyPdschTx