cuPHY  0.1
CUDA PHY Layer Acceration Library
Data Structures | Typedefs | Enumerations | Functions
Beamforming Weight computation

This section describes beamforming coefficient computation functions of the cuPHY application programming interface. More...

Data Structures

struct  _cuphyBfwDataIn
 BFW Input Data. More...
 
struct  _cuphyBfwDataOut
 BFW Output Data. More...
 
struct  _cuphyBfwDbgPrms
 BFW Debug Parameters. More...
 
struct  _cuphyBfwDynPrm
 BFW Dynamic Parameters. More...
 
struct  _cuphyBfwLayerPrm
 Beamforming Weight Layer Parameters. More...
 
struct  _cuphyBfwStatPrms
 BFW Static Parameters. More...
 
struct  _cuphyBfwUeGrpPrm
 Beamforming Weight UE Group Parameters. More...
 
struct  cuphyBfwCoefCompLaunchCfg_t
 

Typedefs

typedef struct cuphyBfwCoefComp * cuphyBfwCoefCompHndl_t
 
typedef struct cuphyBfwTx * cuphyBfwTxHndl_t
 

Enumerations

enum  _cuphyBfwTxProcMode { ,
  BFW_PROC_MODE_WITH_GRAPH = 0x1,
  BFW_MAX_PROC_MODES
}
 BFW processing modes. More...
 

Functions

cuphyStatus_t cuphyCreateBfwCoefComp (cuphyBfwCoefCompHndl_t *pBfwCoefCompHndl, uint8_t enableCpuToGpuDescrAsyncCpy, uint16_t nMaxUeGrps, uint16_t nMaxTotalLayers, float lambda, void *pStatDescrCpu, void *pStatDescrGpu, void *pDynDescrsCpu, void *pDynDescrsGpu, void *pHetCfgUeGrpMapCpu, void *pHetCfgUeGrpMapGpu, void *pUeGrpPrmsCpu, void *pUeGrpPrmsGpu, void *pBfLayerPrmsCpu, void *pBfLayerPrmsGpu, cudaStream_t strm)
 Allocate and initialize a cuPHY beamforming coefficient compute object. More...
 
cuphyStatus_t cuphyCreateBfwTx (cuphyBfwTxHndl_t *pBfwTxHndl, cuphyBfwStatPrms_t const *pStatPrms, cudaStream_t cuStream)
 Allocates and initializes a cuPHY BFW pipeline. More...
 
cuphyStatus_t cuphyDestroyBfwCoefComp (cuphyBfwCoefCompHndl_t bfwCoefCompHndl)
 Destroys a cuPHY beamforming coefficient compute object. More...
 
cuphyStatus_t cuphyDestroyBfwTx (cuphyBfwTxHndl_t bfwTxHndl)
 Destroys a cuPHY BFW receiver pipeline object. More...
 
cuphyStatus_t cuphyGetDescrInfoBfwCoefComp (uint16_t nMaxUeGrps, uint16_t nMaxTotalLayers, size_t *pStatDescrSizeBytes, size_t *pStatDescrAlignBytes, size_t *pDynDescrSizeBytes, size_t *pDynDescrAlignBytes, size_t *pHetCfgUeGrpMapSizeBytes, size_t *pHetCfgUeGrpMapAlignBytes, size_t *pUeGrpPrmsSizeBytes, size_t *pUeGrpPrmsAlignBytes, size_t *pBfLayerPrmsSizeBytes, size_t *pBfLayerPrmsAlignBytes)
 Helper to compute cuPHY beamforming coefficient compute descriptor buffer sizes and alignments. More...
 
cuphyStatus_t cuphyRunBfwTx (cuphyBfwTxHndl_t bfwTxHndl, uint64_t procModeBmsk)
 Run cuPHY BFW computation pipeline in specified mode. More...
 
cuphyStatus_t cuphySetupBfwCoefComp (cuphyBfwCoefCompHndl_t bfwCoefCompHndl, uint16_t nUeGrps, cuphyBfwUeGrpPrm_t const *pUeGrpPrms, uint8_t enableCpuToGpuDescrAsyncCpy, cuphySrsChEstBuffInfo_t *pChEstBufInfo, cuphyTensorPrm_t *pTBfwCoef, cuphyBfwCoefCompLaunchCfgs_t *pLaunchCfgs, cudaStream_t strm)
 Setup cuPHY beamforming coefficient compute object for calculation. More...
 
cuphyStatus_t cuphySetupBfwTx (cuphyBfwTxHndl_t bfwTxHndl, cuphyBfwDynPrms_t *pDynPrms)
 Setup cuPHY BFW computation pipeline. More...
 
cuphyStatus_t cuphyWriteDbgBufSynchBfw (cuphyBfwTxHndl_t bfwTxHndl, cudaStream_t cuStream)
 Run cuPHY save BFW computation debug buffer. More...
 

Detailed Description

This section describes the Beamforming weight computation pipeline functions of the cuPHY application programming interface.

Typedef Documentation

◆ cuphyBfwCoefCompHndl_t

typedef struct cuphyBfwCoefComp* cuphyBfwCoefCompHndl_t

cuPHY Beamforming weight compute handle

◆ cuphyBfwTxHndl_t

typedef struct cuphyBfwTx* cuphyBfwTxHndl_t

cuPHY BfwTx handle

Enumeration Type Documentation

◆ _cuphyBfwTxProcMode

Enumerator
BFW_PROC_MODE_WITH_GRAPH 

stream based workload submission

BFW_MAX_PROC_MODES 

CUDA graph based workload submission.

Function Documentation

◆ cuphyCreateBfwCoefComp()

cuphyStatus_t cuphyCreateBfwCoefComp ( cuphyBfwCoefCompHndl_t pBfwCoefCompHndl,
uint8_t  enableCpuToGpuDescrAsyncCpy,
uint16_t  nMaxUeGrps,
uint16_t  nMaxTotalLayers,
float  lambda,
void *  pStatDescrCpu,
void *  pStatDescrGpu,
void *  pDynDescrsCpu,
void *  pDynDescrsGpu,
void *  pHetCfgUeGrpMapCpu,
void *  pHetCfgUeGrpMapGpu,
void *  pUeGrpPrmsCpu,
void *  pUeGrpPrmsGpu,
void *  pBfLayerPrmsCpu,
void *  pBfLayerPrmsGpu,
cudaStream_t  strm 
)

Allocates a cuPHY beamforming coefficient compute object and returns a handle in the address provided by the caller.

Returns CUPHY_STATUS_INVALID_ARGUMENT if pStatDescrCpu and/or pStatDescrGpu and/or pDynDescrsCpu and/or pDynDescrsGpu and/or pHetCfgUeGrpMapCpu and/or pHetCfgUeGrpMapGpu and/or pUeGrpPrmsCpu and/or pUeGrpPrmsGpu and/or pBfLayerPrmsCpu and/or pBfLayerPrmsGpu is NULL

Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful.

Returns CUPHY_STATUS_ALLOC_FAILED if a BfwCoefComp object cannot be allocated

Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful

Parameters
pBfwCoefCompHndl- Address to return the new instance
enableCpuToGpuDescrAsyncCpy- flag if non-zero enables async copy of CPU descriptor into GPU
nMaxUeGrps- Max total number of UE groups to be processed in a single API invocation
nMaxTotalLayers- Maximum total beamformed layers (i.e. sum of layer count across all UE groups) to be processed in a single API invocation
lambda- regularization constant
pStatDescrCpu- Pointer to static descriptor in CPU memory
pStatDescrGpu- Pointer to static descriptor in GPU memory
pDynDescrsCpu- Pointer to dynamic descriptors in CPU memory
pDynDescrsGpu- Pointer to dynamic descriptor in GPU memory
pHetCfgUeGrpMapCpu- Pointer to heterogenous config to UE group map descriptor in CPU memory
pHetCfgUeGrpMapGpu- Pointer to heterogenous config to UE group map descriptor in GPU memory
pUeGrpPrmsCpu- Pointer to UE group parameter descriptor in CPU memory
pUeGrpPrmsGpu- Pointer to UE group parameter descriptor in GPU memory
pBfLayerPrmsCpu- Pointer to beamforming layer parameter descriptor in CPU memory
pBfLayerPrmsGpu- Pointer to beamforming layer parameter descriptor in GPU memory
strm- CUDA stream for descriptor copy operation
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_ALLOC_FAILED, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyGetDescrInfoBfwCoefComp,cuphySetupBfwCoefComp,cuphyDestroyBfwCoefComp

◆ cuphyCreateBfwTx()

cuphyStatus_t cuphyCreateBfwTx ( cuphyBfwTxHndl_t pBfwTxHndl,
cuphyBfwStatPrms_t const *  pStatPrms,
cudaStream_t  cuStream 
)

Allocates a cuPHY Downlink Beamforming Weight (BFW) computation pipeline for Downlink and returns a handle in the address provided by the caller.

Returns CUPHY_STATUS_INVALID_ARGUMENT if pBfwTxHndl and/or pStatPrms is NULL.

Returns CUPHY_STATUS_ALLOC_FAILED if a BfwTx object cannot be allocated

Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful.

Parameters
pBfwTxHndl- Address to return the new BFW pipeline instance
pStatPrms- Pointer to BFW 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,cuphySetupBfwTx,cuphyRunBfwTx,cuphyDestroyBfwTx

◆ cuphyDestroyBfwCoefComp()

cuphyStatus_t cuphyDestroyBfwCoefComp ( cuphyBfwCoefCompHndl_t  bfwCoefCompHndl)

Destroys a cuPHY beamforming coefficient compute object that was previously created by cuphyCreateBfwCoefComp. The handle provided to this function should not be used for any operations after this function returns.

Returns CUPHY_STATUS_INVALID_ARGUMENT if bfwCoefCompHndl is NULL.

Returns CUPHY_STATUS_SUCCESS if destruction was successful.

Parameters
bfwCoefCompHndl- handle to previously allocated BfwCoefComp instance
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyGetDescrInfoBfwCoefComp,cuphyCreateBfwCoefComp,cuphySetupBfwCoefComp

◆ cuphyDestroyBfwTx()

cuphyStatus_t cuphyDestroyBfwTx ( cuphyBfwTxHndl_t  bfwTxHndl)

Destroys a cuPHY Downlink Beamforming Weight (BFW) computation object that was previously created by cuphyCreateBfwTx. The handle provided to this function should not be used for any operations after this function returns.

Returns CUPHY_STATUS_INVALID_ARGUMENT if bfwTxHndl is NULL.

Returns CUPHY_STATUS_SUCCESS if destruction was successful.

Parameters
bfwTxHndl- handle to previously allocated BfwTx instance
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyCreateBfwTx,cuphySetupBfwTx,cuphyRunBfwTx

◆ cuphyGetDescrInfoBfwCoefComp()

cuphyStatus_t cuphyGetDescrInfoBfwCoefComp ( uint16_t  nMaxUeGrps,
uint16_t  nMaxTotalLayers,
size_t *  pStatDescrSizeBytes,
size_t *  pStatDescrAlignBytes,
size_t *  pDynDescrSizeBytes,
size_t *  pDynDescrAlignBytes,
size_t *  pHetCfgUeGrpMapSizeBytes,
size_t *  pHetCfgUeGrpMapAlignBytes,
size_t *  pUeGrpPrmsSizeBytes,
size_t *  pUeGrpPrmsAlignBytes,
size_t *  pBfLayerPrmsSizeBytes,
size_t *  pBfLayerPrmsAlignBytes 
)

Computes cuPHY beamforming coefficient compute descriptor buffer sizes and alignments. To be used by the caller to allocate these buffers (in CPU and GPU memories) and provide them to other BfwCoefComp APIs

Returns CUPHY_STATUS_INVALID_ARGUMENT if pStatDescrSizeBytes and/or pStatDescrAlignBytes and/or pDynDescrSizeBytes and/or pDynDescrAlignBytes and/or pHetCfgUeGrpMapSizeBytes and/or pHetCfgUeGrpMapAlignBytes and/or pUeGrpPrmsSizeBytes and/or pUeGrpPrmsAlignBytes and/or pBfLayerPrmsSizeBytes and/or pBfLayerPrmsAlignBytes is NULL

Returns CUPHY_STATUS_SUCCESS otherwise

Parameters
nMaxUeGrps- Max total number of UE groups to be processed in a single API invocation
nMaxTotalLayers- Maximum total beamformed layers (i.e. sum of layer count across all UE groups) to be processed in a single API invocation
pStatDescrSizeBytes- Size in bytes of beamforming coefficient compute static descriptor
pStatDescrAlignBytes- Alignment in bytes of beamforming coefficient compute static descriptor
pDynDescrSizeBytes- Size in bytes of beamforming coefficient compute dynamic descriptor
pDynDescrAlignBytes- Alignment in bytes of beamforming coefficient compute dynamic descriptor
pHetCfgUeGrpMapSizeBytes- Size in bytes of hetergenous config to UE group map descriptor
pHetCfgUeGrpMapAlignBytes- Alignment in bytes of hetergenous config to UE group map descriptor
pUeGrpPrmsSizeBytes- Size in bytes of UE group parameter descriptor
pUeGrpPrmsAlignBytes- Alignment in bytes of UE group parameter descriptor
pBfLayerPrmsSizeBytes- Size in bytes of beamforming layer descriptor
pBfLayerPrmsAlignBytes- Alignment in bytes of beamforming layer descriptor
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyCreateBfwCoefComp,cuphySetupBfwCoefComp,cuphyDestroyBfwCoefComp

◆ cuphyRunBfwTx()

cuphyStatus_t cuphyRunBfwTx ( cuphyBfwTxHndl_t  bfwTxHndl,
uint64_t  procModeBmsk 
)

Call triggers cuPHY Downlink Beamforming Weight (BFW) computation pipeline execution in mode specified by procModeBmsk

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

Returns CUPHY_STATUS_SUCCESS if BfwTx execution is successful.

Parameters
bfwTxHndl- Handle of BfwTx 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,cuphyCreateBfwTx,cuphySetupBfwTx,cuphyDestroyBfwTx

◆ cuphySetupBfwCoefComp()

cuphyStatus_t cuphySetupBfwCoefComp ( cuphyBfwCoefCompHndl_t  bfwCoefCompHndl,
uint16_t  nUeGrps,
cuphyBfwUeGrpPrm_t const *  pUeGrpPrms,
uint8_t  enableCpuToGpuDescrAsyncCpy,
cuphySrsChEstBuffInfo_t *  pChEstBufInfo,
cuphyTensorPrm_t *  pTBfwCoef,
cuphyBfwCoefCompLaunchCfgs_t *  pLaunchCfgs,
cudaStream_t  strm 
)

Setup cuPHY beamforming coefficient compute object in preparation towards execution for generating coefficients

Returns CUPHY_STATUS_SUCCESS if setup is successful.

Returns CUPHY_STATUS_INVALID_ARGUMENT if bfwCoefCompHndl and/or pUeGrpPrms and/or pChEstBufInfo and/or pTBfwCoef and/or pLaunchCfgs is NULL.

Parameters
bfwCoefCompHndl- Handle to previously created BfwCoefComp instance
nUeGrps- total number of UE groups to be processed
pUeGrpPrms- Pointer to array of UE group parameters
enableCpuToGpuDescrAsyncCpy- Flag when set enables async copy of CPU descriptor into GPU
pChEstBufInfo- Pointer to array of SRS channel estimation information buffers
pTBfwCoef- Pointer to array of beamforming weight tensors
pLaunchCfgs- Pointer to beamforming coefficient compute launch configurations
strm- CUDA stream for descriptor copy operation
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyGetDescrInfoBfwCoefComp,cuphyCreateBfwCoefComp,cuphyDestroyBfwCoefComp

◆ cuphySetupBfwTx()

cuphyStatus_t cuphySetupBfwTx ( cuphyBfwTxHndl_t  bfwTxHndl,
cuphyBfwDynPrms_t *  pDynPrms 
)

Setup cuPHY Downlink Beamforming Weight (BFW) computation pipeline (and its components) state in preparation towards slot execution

Returns CUPHY_STATUS_INVALID_ARGUMENT if bfwTxHndl and/or pDynPrms is NULL

Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful.

Parameters
bfwTxHndl- Handle of BFW instance to be setup
pDynPrms- Dynamic parameters carrying information needed for slot processing
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyCreateBfwTx,cuphyRunBfwTx,cuphyDestroyBfwTx

◆ cuphyWriteDbgBufSynchBfw()

cuphyStatus_t cuphyWriteDbgBufSynchBfw ( cuphyBfwTxHndl_t  bfwTxHndl,
cudaStream_t  cuStream 
)
Parameters
bfwTxHndl- Handle of BfwTx instance which saves the debug buffer
cuStream- CUDA stream used for BfwTx pipeline execution Note: requires stream synchronization durring call
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT Note: requires stream synchronization during call