Agora  1.2.0
Agora project
DoIFFTClient Class Reference

#include <doifft_client.h>

Inheritance diagram for DoIFFTClient:
Collaboration diagram for DoIFFTClient:

Public Member Functions

 DoIFFTClient (Config *in_config, int in_tid, Table< complex_float > &in_ifft_buffer, char *in_socket_buffer, Stats *in_stats_manager)
 
 ~DoIFFTClient () override
 
EventData Launch (size_t tag) override
 
- Public Member Functions inherited from Doer
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)
 

Private Attributes

Table< complex_float > & ifft_buffer_
 
char * socket_buffer_
 
DurationStatduration_stat_
 
DFTI_DESCRIPTOR_HANDLE mkl_handle_
 
float * ifft_out_
 
complex_floatifft_shift_tmp_
 
float ifft_scale_factor_
 

Additional Inherited Members

- Protected Member Functions inherited from Doer
 Doer (Config *in_config, int in_tid)
 
virtual ~Doer ()=default
 
- Protected Attributes inherited from Doer
Configcfg_
 
int tid_
 

Constructor & Destructor Documentation

◆ DoIFFTClient()

DoIFFTClient::DoIFFTClient ( Config in_config,
int  in_tid,
Table< complex_float > &  in_ifft_buffer,
char *  in_socket_buffer,
Stats in_stats_manager 
)
Here is the call graph for this function:

◆ ~DoIFFTClient()

DoIFFTClient::~DoIFFTClient ( )
override

Member Function Documentation

◆ Launch()

EventData DoIFFTClient::Launch ( size_t  tag)
overridevirtual

Do modulation and ifft tasks for one OFDM symbol

Parameters
tidtask thread index, used for selecting task ptok Buffers: IQ_data_long Input buffer: IQ_data_long Output buffer: iffted_data_buffer_ Intermediate buffer: ifft_buffer_ Offsets: dl_IQ_data_long_: dim1: data symbol index in the current frame * # of users + user index dim2: subcarrier index ifft_buffer_: dim1: frame index * # of data symbols per frame * # of users + data symbol index * # of users + user index dim2: subcarrier index dl_iffted_data_buffer_: dim1: frame index * # of data symbols per frame + data symbol index dim2: transpose block index * block size * # of UEs + user index * block size Event offset: offset Description:
  1. for each OFDM symbol, perform modulation and then ifft
  2. perform block-wise transpose on IFFT outputs and store results in dl_iffted_data_buffer_
  1. add an event to the message queue to infrom main thread the completion of this task

Reimplemented from Doer.

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ duration_stat_

DurationStat* DoIFFTClient::duration_stat_
private

◆ ifft_buffer_

Table<complex_float>& DoIFFTClient::ifft_buffer_
private

◆ ifft_out_

float* DoIFFTClient::ifft_out_
private

◆ ifft_scale_factor_

float DoIFFTClient::ifft_scale_factor_
private

◆ ifft_shift_tmp_

complex_float* DoIFFTClient::ifft_shift_tmp_
private

◆ mkl_handle_

DFTI_DESCRIPTOR_HANDLE DoIFFTClient::mkl_handle_
private

◆ socket_buffer_

char* DoIFFTClient::socket_buffer_
private

The documentation for this class was generated from the following files: