Agora  1.2.0
Agora project
dodemul.h
Go to the documentation of this file.
1 
5 #ifndef DODEMUL_H_
6 #define DODEMUL_H_
7 
8 #include "armadillo"
9 #include "common_typedef_sdk.h"
10 #include "concurrentqueue.h"
11 #include "config.h"
12 #include "doer.h"
13 #include "memory_manage.h"
14 #include "mkl_dfti.h"
15 #include "phy_stats.h"
16 #include "stats.h"
17 #include "symbols.h"
18 
19 class DoDemul : public Doer {
20  public:
21  DoDemul(Config* config, int tid, Table<complex_float>& data_buffer,
23  Table<complex_float>& ue_spec_pilot_buffer,
24  Table<complex_float>& equal_buffer,
26  PhyStats* in_phy_stats, Stats* in_stats_manager);
27  ~DoDemul() override;
28 
55  EventData Launch(size_t tag) override;
56 
57  private:
65 
69 
70  // Intermediate buffers for equalized data
73  arma::cx_fmat ue_pilot_data_;
75 
76 #if defined(USE_MKL_JIT)
77  void* jitter_;
78  cgemm_jit_kernel_t mkl_jit_cgemm_;
79 #endif
80 };
81 
82 #endif // DODEMUL_H_
PhyStats
Definition: phy_stats.h:15
DemodQpskHardLoop
void DemodQpskHardLoop(const float *vec_in, uint8_t *vec_out, int num)
Definition: modulation.cc:264
Config::GetBeamScId
size_t GetBeamScId(size_t sc_id) const
Definition: config.h:481
Config::UeAntNum
size_t UeAntNum() const
Definition: config.h:41
complex_float
Definition: test_transpose.cc:22
PhyStats::IncrementDecodedBlocks
void IncrementDecodedBlocks(size_t ue_id, size_t offset, size_t frame_slot)
Definition: phy_stats.cc:570
size
end IFFT Reshape the symbol vector into two different spatial streams size
Definition: generate_data.m:73
fmt::v8::printf
auto printf(const S &fmt, const T &... args) -> int
Definition: printf.h:631
kUseSIMDGather
static constexpr bool kUseSIMDGather
Definition: dodemul.cc:11
PhyStats::UpdateBlockErrors
void UpdateBlockErrors(size_t ue_id, size_t offset, size_t frame_slot, size_t block_error_count)
Definition: phy_stats.cc:563
DoDemul::data_gather_buffer_
complex_float * data_gather_buffer_
Definition: dodemul.h:68
DoDemul::equaled_buffer_temp_
complex_float * equaled_buffer_temp_
Definition: dodemul.h:71
Config::GetTotalDataSymbolIdxUl
size_t GetTotalDataSymbolIdxUl(size_t frame_id, size_t symbol_idx_ul) const
Definition: config.h:421
Demod64qamHardAvx2
void Demod64qamHardAvx2(float *vec_in, uint8_t *vec_out, int num)
Definition: modulation.cc:921
Stats
Definition: stats.h:63
gen_tag_t::symbol_id_
uint16_t symbol_id_
Definition: message.h:33
DurationStat::task_duration_
std::array< size_t, kMaxStatBreakdown > task_duration_
Definition: stats.h:23
concurrent_queue_wrapper.h
kFrameWnd
static constexpr size_t kFrameWnd
Definition: symbols.h:18
modulation.h
Agora_memory::PaddedAlignedAlloc
void * PaddedAlignedAlloc(Alignment_t alignment, size_t size)
Definition: memory_manage.cc:15
fmt::v8::detail::sign
constexpr Char sign(Sign s)
Definition: format.h:929
CommsLib::kQpsk
@ kQpsk
Definition: comms-lib.h:42
FrameStats::GetULSymbolIdx
size_t GetULSymbolIdx(size_t symbol_number) const
Definition: framestats.cc:156
kExportConstellation
static constexpr bool kExportConstellation
Definition: symbols.h:190
memory_manage.h
DoDemul::Launch
EventData Launch(size_t tag) override
Definition: dodemul.cc:81
Config::BsAntNum
size_t BsAntNum() const
Definition: config.h:35
kTransposeBlockSize
static constexpr size_t kTransposeBlockSize
Definition: symbols.h:340
Direction::kUplink
@ kUplink
Config::Frame
const FrameStats & Frame() const
Definition: config.h:340
PhyStats::UpdateBitErrors
void UpdateBitErrors(size_t ue_id, size_t offset, size_t frame_slot, uint8_t tx_byte, uint8_t rx_byte)
Definition: phy_stats.cc:542
kSCsPerCacheline
static constexpr size_t kSCsPerCacheline
Definition: symbols.h:312
Doer
Definition: doer.h:17
Doer::tid_
int tid_
Definition: doer.h:65
Table< complex_float >
DoDemul::equal_buffer_
Table< complex_float > & equal_buffer_
Definition: dodemul.h:61
index
index
Definition: parse_all_dl.m:11
kUsePartialTrans
static constexpr bool kUsePartialTrans
Definition: symbols.h:183
CommsLib::kQaM64
@ kQaM64
Definition: comms-lib.h:44
gen_tag_t
Definition: message.h:22
Config::OfdmDataNum
size_t OfdmDataNum() const
Definition: config.h:47
kDebugPrintInTask
static constexpr bool kDebugPrintInTask
Definition: symbols.h:201
DoDemul::phy_stats_
PhyStats * phy_stats_
Definition: dodemul.h:64
Demod64qamSoftAvx2
void Demod64qamSoftAvx2(float *vec_in, int8_t *llr, int num)
Definition: modulation.cc:1103
stats.h
Declaration file for the Stats class. Includes definations for DurationStat and FrameSummery types.
Demod256qamHardAvx2
void Demod256qamHardAvx2(float *vec_in, uint8_t *vec_out, int num)
Definition: modulation.cc:1569
PhyStats::UpdateDecodedBits
void UpdateDecodedBits(size_t ue_id, size_t offset, size_t frame_slot, size_t new_bits_num)
Definition: phy_stats.cc:557
EventData
Definition: message.h:142
DurationStat::task_count_
size_t task_count_
Definition: stats.h:24
PtrGrid< kFrameWnd, kMaxDataSCs, complex_float >
CommsLib::kQaM16
@ kQaM16
Definition: comms-lib.h:43
kPrintPhyStats
static constexpr bool kPrintPhyStats
Definition: symbols.h:191
DoDemul
Definition: dodemul.h:19
FrameStats::ClientUlPilotSymbols
size_t ClientUlPilotSymbols() const
Definition: framestats.h:73
dodemul.h
Declaration file for the DoDemul class.
i
for i
Definition: generate_data.m:107
DoDemul::equaled_buffer_temp_transposed_
complex_float * equaled_buffer_temp_transposed_
Definition: dodemul.h:72
Demod16qamHardAvx2
void Demod16qamHardAvx2(float *vec_in, uint8_t *vec_out, int num)
Definition: modulation.cc:472
comms-lib.h
Communications Library: a) Generate pilot/preamble sequences b) OFDM modulation.
fmt::v8::fprintf
auto fprintf(std::FILE *f, const S &fmt, const T &... args) -> int
Definition: printf.h:607
Agora_memory::Alignment_t::kAlign64
@ kAlign64
Demod16qamSoftAvx2
void Demod16qamSoftAvx2(float *vec_in, int8_t *llr, int num)
Definition: modulation.cc:601
EventType::kDemul
@ kDemul
fmt::v8::arg
auto arg(const Char *name, const T &arg) -> detail::named_arg< Char, T >
Definition: core.h:1887
s
s
Definition: simulate_performance.m:3
symbols.h
DoDemul::ue_pilot_data_
arma::cx_fmat ue_pilot_data_
Definition: dodemul.h:73
kUplinkHardDemod
static constexpr bool kUplinkHardDemod
Definition: symbols.h:188
DurationStat
Definition: stats.h:22
Doer::cfg_
Config * cfg_
Definition: doer.h:64
DoDemul::ue_spec_pilot_buffer_
Table< complex_float > & ue_spec_pilot_buffer_
Definition: dodemul.h:60
CommsLib::kQaM256
@ kQaM256
Definition: comms-lib.h:45
DemodQpskSoftSse
void DemodQpskSoftSse(float *x, int8_t *z, int len)
Definition: modulation_srslte.cc:245
PhyStats::UpdateEvm
void UpdateEvm(size_t frame_id, size_t data_symbol_id, size_t sc_id, const arma::cx_fvec &eq_vec)
Definition: phy_stats.cc:526
Config::UeSpecificPilot
Table< complex_float > & UeSpecificPilot()
Definition: config.h:371
GetTime::WorkerRdtsc
static size_t WorkerRdtsc()
Definition: gettime.h:34
DoerType::kDemul
@ kDemul
Config::UlModBits
Table< int8_t > & UlModBits()
Definition: config.h:387
Config
Definition: config.h:26
doer.h
Declaration file for the Doer class. The is the base class for all agora doers.
Demod256qamSoftAvx2
void Demod256qamSoftAvx2(const float *vec_in, int8_t *llr, int num)
Definition: modulation.cc:2365
DoDemul::demod_buffers_
PtrCube< kFrameWnd, kMaxSymbols, kMaxUEs, int8_t > & demod_buffers_
Definition: dodemul.h:62
DoDemul::DoDemul
DoDemul(Config *config, int tid, Table< complex_float > &data_buffer, PtrGrid< kFrameWnd, kMaxDataSCs, complex_float > &ul_beam_matrices, Table< complex_float > &ue_spec_pilot_buffer, Table< complex_float > &equal_buffer, PtrCube< kFrameWnd, kMaxSymbols, kMaxUEs, int8_t > &demod_buffers_, PhyStats *in_phy_stats, Stats *in_stats_manager)
Definition: dodemul.cc:13
DoDemul::ue_num_simd256_
int ue_num_simd256_
Definition: dodemul.h:74
Config::Modulation
std::string Modulation(Direction dir) const
Definition: config.h:243
config.h
Declaration file for the configuration class which importants json configuration values into class va...
gen_tag_t::sc_id_
uint16_t sc_id_
Definition: message.h:39
Config::GetModBitsBuf
int8_t * GetModBitsBuf(Table< int8_t > &mod_bits_buffer, Direction dir, size_t frame_id, size_t symbol_id, size_t ue_id, size_t sc_id) const
Get encoded_buffer for this frame, symbol, user and code block ID.
Definition: config.h:531
PtrCube< kFrameWnd, kMaxSymbols, kMaxUEs, int8_t >
kMaxUEs
static constexpr size_t kMaxUEs
Definition: symbols.h:289
DoDemul::ul_beam_matrices_
PtrGrid< kFrameWnd, kMaxDataSCs, complex_float > & ul_beam_matrices_
Definition: dodemul.h:59
phy_stats.h
Declaration file for the PhyStats class.
DoDemul::data_buffer_
Table< complex_float > & data_buffer_
Definition: dodemul.h:58
gen_tag_t::frame_id_
uint32_t frame_id_
Definition: message.h:32
kMaxAntennas
static constexpr size_t kMaxAntennas
Definition: symbols.h:286
max
max(y1, y1_1)
Config::ModOrderBits
size_t ModOrderBits(Direction dir) const
Definition: config.h:247
DoDemul::~DoDemul
~DoDemul() override
Definition: dodemul.cc:68
Config::DemulBlockSize
size_t DemulBlockSize() const
Definition: config.h:195
concurrentqueue.h
DoDemul::duration_stat_
DurationStat * duration_stat_
Definition: dodemul.h:63
Stats::GetDurationStat
DurationStat * GetDurationStat(DoerType doer_type, size_t thread_id)
Definition: stats.h:162