cuPHY
0.1
CUDA PHY Layer Acceration Library
|
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... | |
typedef struct cuphyPuschRxChEst* cuphyPuschRxChEstHndl_t |
cuPHY PUSCH Receiver channel estimation handle
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
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
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
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 |
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.
puschRxChEstHndl | - handle to previously allocated PuschRxChEst instance |
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.
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 |
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.
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 |