cuPHY  0.1
CUDA PHY Layer Acceration Library
Data Structures | Typedefs | Functions
Channel Estimation

This section describes the channel estimation functions of the cuPHY application programming interface. More...

Data Structures

struct  cuphyPuschRxChEstLaunchCfg_t
 

Typedefs

typedef struct cuphyPuschRxChEst * cuphyPuschRxChEstHndl_t
 

Functions

cuphyStatus_t cuphyChannelEst1DTimeFrequency (cuphyTensorDescriptor_t tensorDescDst, void *dstAddr, cuphyTensorDescriptor_t tensorDescSymbols, const void *symbolsAddr, cuphyTensorDescriptor_t tensorDescFreqFilters, const void *freqFiltersAddr, cuphyTensorDescriptor_t tensorDescTimeFilters, const void *timeFiltersAddr, cuphyTensorDescriptor_t tensorDescFreqIndices, const void *freqIndicesAddr, cuphyTensorDescriptor_t tensorDescTimeIndices, const void *timeIndicesAddr, cudaStream_t strm)
 Performs 1-D time/frequency channel estimation. More...
 
cuphyStatus_t cuphyCreatePuschRxChEst (cuphyPuschRxChEstHndl_t *pPuschRxChEstHndl, cuphyTensorPrm_t const *pInterpCoef, cuphyTensorPrm_t const *pInterpCoef4, cuphyTensorPrm_t const *pInterpCoefSmall, cuphyTensorPrm_t const *pShiftSeq, cuphyTensorPrm_t const *pShiftSeq4, cuphyTensorPrm_t const *pUnShiftSeq, cuphyTensorPrm_t const *pUnShiftSeq4, uint8_t enableCpuToGpuDescrAsyncCpy, void **ppStatDescrsCpu, void **ppStatDescrsGpu, cudaStream_t strm)
 Allocate and initialize a cuPHY PuschRx channel estimation object. More...
 
cuphyStatus_t cuphyDestroyPuschRxChEst (cuphyPuschRxChEstHndl_t puschRxChEstHndl)
 Destroys a cuPHY PUSCH channel estimation object. More...
 
cuphyStatus_t cuphyPuschRxChEstGetDescrInfo (size_t *pStatDescrSizeBytes, size_t *pStatDescrAlignBytes, size_t *pDynDescrSizeBytes, size_t *pDynDescrAlignBytes)
 Helper to compute cuPHY channel estimation descriptor buffer sizes and alignments. More...
 
cuphyStatus_t cuphySetupPuschRxChEst (cuphyPuschRxChEstHndl_t puschRxChEstHndl, cuphyPuschRxUeGrpPrms_t *pDrvdUeGrpPrmsCpu, cuphyPuschRxUeGrpPrms_t *pDrvdUeGrpPrmsGpu, uint16_t nUeGrps, uint8_t enableCpuToGpuDescrAsyncCpy, void **ppDynDescrsCpu, void **ppDynDescrsGpu, cuphyPuschRxChEstLaunchCfgs_t *pLaunchCfgs, cudaStream_t strm)
 Setup cuPHY channel estimation for slot processing. More...
 

Detailed Description

Typedef Documentation

◆ cuphyPuschRxChEstHndl_t

typedef struct cuphyPuschRxChEst* cuphyPuschRxChEstHndl_t

cuPHY PUSCH Receiver channel estimation handle

Function Documentation

◆ cuphyChannelEst1DTimeFrequency()

cuphyStatus_t cuphyChannelEst1DTimeFrequency ( cuphyTensorDescriptor_t  tensorDescDst,
void *  dstAddr,
cuphyTensorDescriptor_t  tensorDescSymbols,
const void *  symbolsAddr,
cuphyTensorDescriptor_t  tensorDescFreqFilters,
const void *  freqFiltersAddr,
cuphyTensorDescriptor_t  tensorDescTimeFilters,
const void *  timeFiltersAddr,
cuphyTensorDescriptor_t  tensorDescFreqIndices,
const void *  freqIndicesAddr,
cuphyTensorDescriptor_t  tensorDescTimeIndices,
const void *  timeIndicesAddr,
cudaStream_t  strm 
)

Performs MMSE channel estimation using 1-D interpolation in the time and frequency dimensions

Parameters
tensorDescDst- tensor descriptor for output
dstAddr- address for tensor output
tensorDescSymbols- tensor descriptor for input symbol data
symbolsAddr- address for input symbol data
tensorDescFreqFilters- tensor descriptor for input frequency filters
freqFiltersAddr- address for input frequency filters
tensorDescTimeFilters- tensor descriptor for input time filters
timeFiltersAddr- address for input time filters
tensorDescFreqIndices- tensor descriptor for pilot symbol frequency indices
freqIndicesAddr- address for pilot symbol frequency indices
tensorDescTimeIndices- tensor descriptor for pilot symbol time indices
timeIndicesAddr- address for pilot symbol time indices
strm- CUDA stream for kernel launch

Returns CUPHY_STATUS_INVALID_ARGUMENT if any of the tensor descriptors or address values are NULL.

Returns CUPHY_STATUS_SUCCESS if submission of the kernel was successful

Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t

◆ cuphyCreatePuschRxChEst()

cuphyStatus_t cuphyCreatePuschRxChEst ( cuphyPuschRxChEstHndl_t pPuschRxChEstHndl,
cuphyTensorPrm_t const *  pInterpCoef,
cuphyTensorPrm_t const *  pInterpCoef4,
cuphyTensorPrm_t const *  pInterpCoefSmall,
cuphyTensorPrm_t const *  pShiftSeq,
cuphyTensorPrm_t const *  pShiftSeq4,
cuphyTensorPrm_t const *  pUnShiftSeq,
cuphyTensorPrm_t const *  pUnShiftSeq4,
uint8_t  enableCpuToGpuDescrAsyncCpy,
void **  ppStatDescrsCpu,
void **  ppStatDescrsGpu,
cudaStream_t  strm 
)

Allocates a cuPHY channel estimation object and returns a handle in the address provided by the caller. Returns CUPHY_STATUS_INVALID_ARGUMENT if pPuschRxChEstHndl and/or pInterpCoef and/or pShiftSeq and/or pUnShiftSeq and/or ppStatDescrsCpu and/or ppStatDescrsGpu is NULL.

Returns CUPHY_STATUS_ALLOC_FAILED if a PuschRxChEst object cannot be allocated

Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful

Parameters
pPuschRxChEstHndl- Address to return the new PuschRxChEst instance
pInterpCoef- Tensor parameters for channel interpolation coefficients (8 input / 4 output PRBs)
pInterpCoef4- Tensor parameters for channel interpolation coefficients (4 input / 2 output PRBs)
pInterpCoefSmall- Tensor parameters for small channel interpolation coefficients (< 4 input PRBs)
pShiftSeq- Pointer to (delay) shift sequence tensor parameters (8 input / 4 output PRBs)
pShiftSeq4- Pointer to (delay) shift sequence tensor parameters (4 input / 2 output PRBs and < 4 input PRBs)
pUnShiftSeq- Pointer to (delay) unshift sequence tensor parameters (8 input / 4 output PRBs)
pUnShiftSeq4- Pointer to (delay) unshift sequence tensor parameters (4 input / 2 output PRBs and < 4 input PRBs)
enableCpuToGpuDescrAsyncCpy- flag if non-zero enables async copy of CPU descriptor into GPU
ppStatDescrsCpu- Pointer to an array of static descriptor pointers in CPU memory
ppStatDescrsGpu- Pointer to an array of static descriptor pointers 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,cuphyPuschRxChEstGetDescrInfo,cuphySetupPuschRxChEst,cuphyDestroyPuschRxChEst

◆ cuphyDestroyPuschRxChEst()

cuphyStatus_t cuphyDestroyPuschRxChEst ( cuphyPuschRxChEstHndl_t  puschRxChEstHndl)

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

Returns CUPHY_STATUS_INVALID_ARGUMENT if puschRxChEstHndl is NULL.

Returns CUPHY_STATUS_SUCCESS if destruction was successful.

Parameters
puschRxChEstHndl- handle to previously allocated PuschRxChEst instance
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyPuschRxChEstGetDescrInfo,cuphyCreatePuschRxChEst,cuphySetupPuschRxChEst

◆ cuphyPuschRxChEstGetDescrInfo()

cuphyStatus_t cuphyPuschRxChEstGetDescrInfo ( size_t *  pStatDescrSizeBytes,
size_t *  pStatDescrAlignBytes,
size_t *  pDynDescrSizeBytes,
size_t *  pDynDescrAlignBytes 
)

Computes cuPHY PUSCH channel estimation 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 PuschRxChEst APIs

Returns CUPHY_STATUS_INVALID_ARGUMENT if pStatDescrSizeBytes and/or pStatDescrAlignBytes and/or pDynDescrSizeBytes and/or pDynDescrAlignBytes is NULL

Returns CUPHY_STATUS_SUCCESS if allocation and initialization were successful.

Parameters
pStatDescrSizeBytes- Size in bytes of static descriptor
pStatDescrAlignBytes- Alignment in bytes of static descriptor
pDynDescrSizeBytes- Size in bytes of dynamic descriptor
pDynDescrAlignBytes- Alignment in bytes of dynamic descriptor
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyCreatePuschRxChEst,cuphyDestroyPuschRxChEst

◆ cuphySetupPuschRxChEst()

cuphyStatus_t cuphySetupPuschRxChEst ( cuphyPuschRxChEstHndl_t  puschRxChEstHndl,
cuphyPuschRxUeGrpPrms_t *  pDrvdUeGrpPrmsCpu,
cuphyPuschRxUeGrpPrms_t *  pDrvdUeGrpPrmsGpu,
uint16_t  nUeGrps,
uint8_t  enableCpuToGpuDescrAsyncCpy,
void **  ppDynDescrsCpu,
void **  ppDynDescrsGpu,
cuphyPuschRxChEstLaunchCfgs_t *  pLaunchCfgs,
cudaStream_t  strm 
)

Setup cuPHY PUSCH channel estimation in preparation towards slot execution

Returns CUPHY_STATUS_SUCCESS if setup is successful.

Returns CUPHY_STATUS_INVALID_ARGUMENT if puschRxChEstHndl and/or and/or ppDynDescrsCpu and/or ppDynDescrsGpu is NULL.

Parameters
puschRxChEstHndl- Handle to previously created PuschRxChEst instance
pDrvdUeGrpPrmsCpu- Pointer to derived UE groups parameters in CPU memory
pDrvdUeGrpPrmsGpu- Pointer to derived UE groups parameters in GPU memory
nUeGrps- number of UE groups to be processed
enableCpuToGpuDescrAsyncCpy- Flag when set enables async copy of CPU descriptor into GPU
ppDynDescrsCpu- Pointer to array of dynamic descriptor pointers in CPU memory
ppDynDescrsGpu- Pointer to array of dynamic descriptor pointers in GPU memory
pLaunchCfgs- Pointer to channel estimation launch configurations
strm- CUDA stream for descriptor copy operation
Returns
CUPHY_STATUS_SUCCESS, CUPHY_STATUS_INVALID_ARGUMENT
See also
cuphyStatus_t,cuphyGetErrorName,cuphyGetErrorString,cuphyPuschRxChEstGetDescrInfo,cuphyCreatePuschRxChEst,cuphyDestroyPuschRxChEst