What is this test and why would we want to do it? Before running the tests listed in this page it is expected that you have already setup a compatible build environment and compiled the source to generate the executables. For further directions with building please following this link.
We recommend launching 3 Terminals to execute the following programs (order matters)
Run data_generator
./build/data_generator --conf_file data/chsim.json
Run chsim
./build/chsim --bs_threads 1 --ue_threads 1 --worker_threads 2 --core_offset 24 --conf_file data/chsim.json
Run the user code.
./build/user --conf_file data/chsim.json
Run agora
./build/agora --conf_file data/chsim.json
Same as the Remote Example (Jump)
Once all frames have been completed you will see a Uplink Ber / Bler output from Agora and the Dowlink Ber / Bler output from the user. All values should be near 0 for this simulation.
The Eagle and Osprey servers are connected to each other over a high speed link. This link utilizes 10.0.0.6 / 10.0.0.7 ←→ 10.0.0.8 / 10.0.0.9 ip address.
You will need to edit a few values in your configuration file on both machines (chsim.json).
127.0.0.1 - Is the loopback address and indicates you are operating on the same machine.
Run Data Generator
./build/data_generator --conf_file data/chsim.json
Inspect the output
75:491505 INFOR: DataGenerator: Config file: data/chsim.json, data profile = random
75:491534 INFOR: DataGenerator: Using time-orthogonal pilots
75:491558 INFOR: DataGenerator: Generating encoded and modulated data
75:491590 INFOR: Total number of uplink MAC bytes: 55
75:491622 INFOR: Saving uplink MAC data to ./data/orig_ul_data_512_ant2.bin
75:491864 INFOR: Saving raw uplink data (using LDPC) to ./data/LDPC_orig_ul_data_512_ant2.bin
75:503347 INFOR: Saving rx data to ./data/LDPC_rx_data_512_ant8.bin
75:504527 INFOR: Saving downlink MAC data to ./data/orig_dl_data_512_ant2.bin
75:504689 INFOR: Saving raw dl data (using LDPC) to ./data/LDPC_orig_dl_data_512_ant2.bin
75:508763 INFOR: Saving dl tx data to ./data/LDPC_dl_tx_data_512_ant8.bin
Copy the output files to the other server (replace paths with that of your working directories / user)
scp ./data/orig_ul_data_512_ant2.bin user@osprey.ecg.rice.edu:/space/user/repos/agora-wip/data
scp ./data/LDPC_orig_ul_data_512_ant2.bin user@osprey.ecg.rice.edu:/space/user/repos/agora-wip/data
scp ./data/LDPC_rx_data_512_ant8.bin user@osprey.ecg.rice.edu:/space/user/repos/agora-wip/data
scp ./data/orig_dl_data_512_ant2.bin user@osprey.ecg.rice.edu:/space/user/repos/agora-wip/data
scp ./data/LDPC_orig_dl_data_512_ant2.bin user@osprey.ecg.rice.edu:/space/user/repos/agora-wip/data
scp ./data/LDPC_dl_tx_data_512_ant8.bin user@osprey.ecg.rice.edu:/space/user/repos/agora-wip/data
Note: It is important to execute the command / programs below in the exact order listed.
It is recommended to use two terminals on server 2.
Run chsim
./build/chsim --bs_threads 1 --ue_threads 1 --worker_threads 2 --core_offset 6 --conf_file data/chsim.json
Run user
./build/user --conf_file data/chsim.json
Run agora
./build/agora --conf_file data/chsim.json
Finished uplink transmission of 5 symbols in frame 4997
Finished downlink transmission 4 symbols in frame 4998
Finished uplink transmission of 5 symbols in frame 4998
Finished downlink transmission 4 symbols in frame 4999
Finished uplink transmission of 5 symbols in frame 4999
PhyUe [frame 4998 + 8.19 ms since last frame]: Received first packet. Remaining packets in prev frame: 0
PhyUe [frame 4998 + 0.06 ms]: Completed encoding
PhyUe [frame 4998 + 0.06 ms]: Completed modulation
PhyUe [frame 4998 + 0.08 ms]: Completed iFFT
PhyUe [frame 4998 + 0.08 ms]: Completed iFFT
PhyUe [frame 4998 + 0.13 ms]: Completed TX
PhyUe [frame 4998 + 1.57 ms]: Received all pilots
PhyUe [frame 4998 + 1.58 ms]: Pilot FFT finished
PhyUe [frame 4998 + 1.72 ms]: Received all packets
Frame: 4998, Symbol: 9, User: 0, EVM: 1.02813%, SNR: 19.8795
Frame: 4998, Symbol: 9, User: 1, EVM: 1.23737%, SNR: 19.075
PhyUe [frame 4998 + 1.76 ms]: Data FFT finished
PhyUe [frame 4998 + 1.76 ms]: Completed demodulation
PhyUe [frame 4998 + 1.79 ms]: Completed decoding
PhyUe [frame 4999 + 8.20 ms since last frame]: Received first packet. Remaining packets in prev frame: 0
PhyUe [frame 4999 + 0.06 ms]: Completed encoding
PhyUe [frame 4999 + 0.06 ms]: Completed modulation
PhyUe [frame 4999 + 0.08 ms]: Completed iFFT
PhyUe [frame 4999 + 0.08 ms]: Completed iFFT
PhyUe [frame 4999 + 0.12 ms]: Completed TX
PhyUe [frame 4999 + 1.60 ms]: Received all pilots
PhyUe [frame 4999 + 1.61 ms]: Pilot FFT finished
PhyUe [frame 4999 + 1.76 ms]: Received all packets
Frame: 4999, Symbol: 9, User: 0, EVM: 1.21065%, SNR: 19.1698
Frame: 4999, Symbol: 9, User: 1, EVM: 1.13294%, SNR: 19.4579
PhyUe [frame 4999 + 1.79 ms]: Data FFT finished
PhyUe [frame 4999 + 1.79 ms]: Completed demodulation
PhyUe [frame 4999 + 1.82 ms]: Completed decoding
UE 0: Downlink bit errors (BER) 0/1960000(0), block errors (BLER) 0/5000 (0)
UE 1: Downlink bit errors (BER) 0/1960000(0), block errors (BLER) 0/5000 (0)
Main [frame 4999 + 8.17 ms since last frame]: Received first packet. Remaining packets in prev frame: 0
Main [frame 4999 + 0.01 ms]: Completed LDPC encoding
Main [frame 4999 + 0.12 ms]: Received all pilots
Main [frame 4999 + 0.17 ms]: FFT-ed all pilots
Frame 4999 Pilot Signal SNR (dB) Range at BS Antennas: User 0: [19.4,20.3] User 1: [19.7,20.4]
Main [frame 4999 + 0.39 ms]: Completed zero-forcing
Frame 4999 ZF matrix inverse condition number range: [0.36,0.56], Mean: 0.46
Main [frame 4999 + 0.44 ms]: Completed precoding
Main [frame 4999 + 0.45 ms]: Completed IFFT
Main [frame 4999 + 0.48 ms]: Completed TX of first symbol
Main [frame 4999 + 0.57 ms]: Completed TX (3 DL symbols)
Main [frame 4999 + 1.20 ms]: Received all packets
Frame 4998 Constellation:
EVM 0.2519 0.1291
, SNR 25.9883 28.8898
Main [frame 4999 + 1.24 ms]: Completed demodulation
Main [frame 4999 + 1.28 ms]: Completed LDPC decoding (3 UL symbols)
Frame 4999 summary: FFT (24 tasks): 0.007 ms (~0.0014 + 0.0018 + 0.0005 ms), CSI (16 tasks): 0.038 ms (~0.0014 + 0.0025 + 0.0339 ms), ZF (336 tasks): 0.194 ms (~0.0037 + 0.0199 + 0.1699 ms), Demul (1008 tasks): 0.071 ms (~0.0017 + 0.0376 + 0.0005 ms), Decode (6 tasks): 0.022 ms (~0.0000 + 0.0217 + 0.0000 ms), Encode (2 tasks): 0.001 ms (~0.0000 + 0.0000 + 0.0000 ms), iFFT (24 tasks): 0.010 ms (~0.0001 + 0.0100 + 0.0002 ms), Precode (1008 tasks): 0.005 ms (~0.0026 + 0.0010 + 0.0007 ms), Total: 0.35 ms
82:806819 INFOR: Agora: printing stats and saving to file
Stats: total processed frames 5000
Downlink totals (tasks, frames): CSI (80000, 5000.00), ZF (1680000, 5000.00), Encode (10000, 1666.67), Precode (5040000, 5000.00), IFFT (120000, 5000.00)
Uplink totals (tasks, frames): CSI (80000, 5000.00), ZF (1680000, 5000.00), FFT (120000, 5000.00), Demul (5040000, 5000.00), Decode (30000, 5000.00)
Thread 0 performed (tasks, fraction of tasks): FFT (9456, 7.88%), CSI (7199, 9.00%), ZF (141511, 8.42%), Demul (380208, 7.54%), Decode (1778, 5.93%), Encode (447, 4.47%), iFFT (9565, 7.97%), Precode (409488, 8.12%),
Thread 1 performed (tasks, fraction of tasks): FFT (8863, 7.39%), CSI (7007, 8.76%), ZF (141988, 8.45%), Demul (381888, 7.58%), Decode (1847, 6.16%), Encode (482, 4.82%), iFFT (9592, 7.99%), Precode (412224, 8.18%),
Thread 2 performed (tasks, fraction of tasks): FFT (7902, 6.58%), CSI (6076, 7.59%), ZF (139767, 8.32%), Demul (374256, 7.43%), Decode (1979, 6.60%), Encode (533, 5.33%), iFFT (9715, 8.10%), Precode (413808, 8.21%),
Thread 3 performed (tasks, fraction of tasks): FFT (7568, 6.31%), CSI (6011, 7.51%), ZF (141662, 8.43%), Demul (382272, 7.58%), Decode (1982, 6.61%), Encode (526, 5.26%), iFFT (9765, 8.14%), Precode (408240, 8.10%),
Thread 4 performed (tasks, fraction of tasks): FFT (6655, 5.55%), CSI (5628, 7.04%), ZF (142542, 8.48%), Demul (380304, 7.55%), Decode (1908, 6.36%), Encode (502, 5.02%), iFFT (9560, 7.97%), Precode (415824, 8.25%),
Thread 5 performed (tasks, fraction of tasks): FFT (6789, 5.66%), CSI (5408, 6.76%), ZF (141048, 8.40%), Demul (371568, 7.37%), Decode (1751, 5.84%), Encode (416, 4.16%), iFFT (9244, 7.70%), Precode (395760, 7.85%),
Thread 6 performed (tasks, fraction of tasks): FFT (6277, 5.23%), CSI (5209, 6.51%), ZF (140898, 8.39%), Demul (371712, 7.38%), Decode (1725, 5.75%), Encode (500, 5.00%), iFFT (9331, 7.78%), Precode (395760, 7.85%),
Thread 7 performed (tasks, fraction of tasks): FFT (7669, 6.39%), CSI (5995, 7.49%), ZF (142203, 8.46%), Demul (381216, 7.56%), Decode (1989, 6.63%), Encode (500, 5.00%), iFFT (9207, 7.67%), Precode (398880, 7.91%),
Thread 8 performed (tasks, fraction of tasks): FFT (7975, 6.65%), CSI (6017, 7.52%), ZF (141826, 8.44%), Demul (367392, 7.29%), Decode (1998, 6.66%), Encode (488, 4.88%), iFFT (9742, 8.12%), Precode (410256, 8.14%),
Thread 9 performed (tasks, fraction of tasks): FFT (8545, 7.12%), CSI (6569, 8.21%), ZF (142681, 8.49%), Demul (382224, 7.58%), Decode (1953, 6.51%), Encode (525, 5.25%), iFFT (9661, 8.05%), Precode (417744, 8.29%),
Thread 10 performed (tasks, fraction of tasks): FFT (6277, 5.23%), CSI (5109, 6.39%), ZF (139847, 8.32%), Demul (367008, 7.28%), Decode (1733, 5.78%), Encode (482, 4.82%), iFFT (9298, 7.75%), Precode (394464, 7.83%),
Thread 11 performed (tasks, fraction of tasks): FFT (36024, 30.02%), CSI (13772, 17.21%), ZF (124027, 7.38%), Demul (899952, 17.86%), Decode (9357, 31.19%), Encode (4599, 45.99%), iFFT (15320, 12.77%), Precode (567552, 11.26%),
Stats: Saving master timestamps to ./data/timeresult.txt
Stats: Printing detailed results to ./data/timeresult_detail.txt
UE 0: Uplink bit errors (BER) 0/2200000(0), block errors (BLER) 0/5000 (0)
UE 1: Uplink bit errors (BER) 0/2200000(0), block errors (BLER) 0/5000 (0)
Once all frames have been completed you will see a Uplink Ber / Bler output from Agora and the Dowlink Ber / Bler output from the user. All values should be near 0 for this simulation.
UE 0: Uplink bit errors (BER) 0/2200000(0), block errors (BLER) 0/5000 (0)
UE 1: Uplink bit errors (BER) 0/2200000(0), block errors (BLER) 0/5000 (0)
UE 0: Downlink bit errors (BER) 0/1960000(0), block errors (BLER) 0/5000 (0)
UE 1: Downlink bit errors (BER) 0/1960000(0), block errors (BLER) 0/5000 (0)
Make sure that all programs running on the same machine (chsim
, user
, agora
) are assigned to separate cores and do not overlap.
Note: 127.0.0.1 - Is the loopback address and tells the software that you are operating on the same machine.