#include <dobeamweights.h>
|
| DoBeamWeights (Config *in_config, int tid, PtrGrid< kFrameWnd, kMaxUEs, complex_float > &csi_buffers, Table< complex_float > &calib_dl_buffer, Table< complex_float > &calib_ul_buffer, Table< complex_float > &calib_dl_msum_buffer, Table< complex_float > &calib_ul_msum_buffer, PtrGrid< kFrameWnd, kMaxDataSCs, complex_float > &ul_beam_matrices_, PtrGrid< kFrameWnd, kMaxDataSCs, complex_float > &dl_beam_matrices_, PhyStats *in_phy_stats, Stats *stats_manager) |
|
| ~DoBeamWeights () override |
|
EventData | Launch (size_t tag) override |
|
virtual bool | TryLaunch (moodycamel::ConcurrentQueue< EventData > &task_queue, moodycamel::ConcurrentQueue< EventData > &complete_task_queue, moodycamel::ProducerToken *worker_ptok) |
|
virtual EventData | Launch (size_t tag, EventType event_type) |
|
◆ DoBeamWeights()
DoBeamWeights::DoBeamWeights |
( |
Config * |
in_config, |
|
|
int |
tid, |
|
|
PtrGrid< kFrameWnd, kMaxUEs, complex_float > & |
csi_buffers, |
|
|
Table< complex_float > & |
calib_dl_buffer, |
|
|
Table< complex_float > & |
calib_ul_buffer, |
|
|
Table< complex_float > & |
calib_dl_msum_buffer, |
|
|
Table< complex_float > & |
calib_ul_msum_buffer, |
|
|
PtrGrid< kFrameWnd, kMaxDataSCs, complex_float > & |
ul_beam_matrices_, |
|
|
PtrGrid< kFrameWnd, kMaxDataSCs, complex_float > & |
dl_beam_matrices_, |
|
|
PhyStats * |
in_phy_stats, |
|
|
Stats * |
stats_manager |
|
) |
| |
◆ ~DoBeamWeights()
DoBeamWeights::~DoBeamWeights |
( |
| ) |
|
|
override |
◆ ComputeCalib()
void DoBeamWeights::ComputeCalib |
( |
size_t |
frame_id, |
|
|
size_t |
sc_id, |
|
|
arma::cx_fvec & |
calib_sc_vec |
|
) |
| |
|
private |
◆ ComputeFullCsiBeams()
void DoBeamWeights::ComputeFullCsiBeams |
( |
size_t |
tag | ) |
|
|
private |
◆ ComputePartialCsiBeams()
void DoBeamWeights::ComputePartialCsiBeams |
( |
size_t |
tag | ) |
|
|
private |
◆ ComputePrecoder()
float DoBeamWeights::ComputePrecoder |
( |
size_t |
frame_id, |
|
|
size_t |
cur_sc_id, |
|
|
const arma::cx_fmat & |
mat_csi, |
|
|
const arma::cx_fvec & |
calib_sc_vec, |
|
|
const float |
noise, |
|
|
complex_float * |
ul_beam_mem, |
|
|
complex_float * |
dl_beam_mem |
|
) |
| |
|
private |
Compute the uplink mMIMO detector matrix and/or the downlink mMIMO precoder using this CSI matrix and calibration buffer
◆ Launch()
EventData DoBeamWeights::Launch |
( |
size_t |
tag | ) |
|
|
overridevirtual |
Do Beamweight Computation task for one subcarrier with all pilots in a frame
- Parameters
-
tid | task thread index, used for selecting task ptok |
offset | offset of the subcarrier in csi_buffer_ Buffers: csi_buffer_, precoder_buffer_ Input buffer: csi_buffer_ Output buffer: precoder_buffer_ Offsets: csi_buffer_, precoder_buffer_: dim1: frame index * FFT size + subcarrier index in the current frame Event offset: offset Description:
- perform beamweight calculation using csi_buffer_ and store results in precoder_buffer_
- add an event to the message queue to infrom main thread the completion of this task
|
Reimplemented from Doer.
◆ Predict()
void DoBeamWeights::Predict |
( |
size_t |
offset | ) |
|
|
private |
Do prediction task for one subcarrier
- Parameters
-
tid | task thread index, used for selecting task ptok |
offset | offset of the subcarrier in csi_buffer_ Buffers: csi_buffer_, pred_csi_buffer_, precoder_buffer_ Input buffer: csi_buffer_ Output buffer: precoder_buffer_ Intermediate buffer: pred_csi_buffer_ Offsets: csi_buffer_: dim1: frame index * FFT size + subcarrier index in the current frame pred_csi_buffer: dim1: subcarrier index in the current frame precoder_buffer_: dim1: (frame index + 1) * FFT size + subcarrier index in the current frame Event offset: offset Description:
- predict CSI (copy CSI from the current frame if prediction is based on stale CSI)
- perform pseudo-inverse (pinv) on pred_csi_buffer_ and store results in precoder_buffer_
- add an event to the message queue to infrom main thread the completion of this task
|
◆ calib_dl_buffer_
◆ calib_dl_msum_buffer_
◆ calib_gather_buffer_
◆ calib_sc_vec_ptr_
std::unique_ptr<arma::cx_fvec> DoBeamWeights::calib_sc_vec_ptr_ |
|
private |
◆ calib_ul_buffer_
◆ calib_ul_msum_buffer_
◆ csi_buffers_
◆ csi_gather_buffer_
◆ dl_beam_matrices_
◆ duration_stat_
◆ ext_ref_id_
arma::uvec DoBeamWeights::ext_ref_id_ |
|
private |
◆ num_ext_ref_
size_t DoBeamWeights::num_ext_ref_ |
|
private |
◆ phy_stats_
◆ pred_csi_buffer_
◆ ul_beam_matrices_
The documentation for this class was generated from the following files: