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 2 Terminals to execute the following programs (order matters)
Run data_generator
./build/data_generator --conf_file chsim.json
Run agora
./build/agora --conf_file chsim.json
Run sender
./build/sender --conf_file chsim.json
Same as the remote example (Jump)
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 (chsim.json).
127.0.0.1 - Is the loopback address and indicates you are operating on the same machine.
Run Data Generator on one of the servers (eagle)
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
Run agora
./build/agora --conf_file data/chsim.json
./build/sender --conf_file data/chsim.json --enable_slow_start 0
Once sender starts sending you should see the following output
Sender: Tx frame 0 in 8.19 ms, next frame 1, start symbol 1
Sender: Tx frame 1 in 8.18 ms, next frame 2, start symbol 1
...
Sender: Tx frame 9800 in 8.19 ms, next frame 9801, start symbol 1
Sender: Tx frame 4995 in 8.19 ms, next frame 4996, start symbol 1
Sender: Tx frame 4996 in 8.19 ms, next frame 4997, start symbol 1
Sender: Tx frame 4997 in 8.19 ms, next frame 4998, start symbol 1
Sender: Tx frame 4998 in 8.19 ms, next frame 4999, start symbol 1
Thread 2 send 5000 frames in 8.191927 secs, tput 19.669708 Mbps
Thread 1 send 5000 frames in 8.191965 secs, tput 19.669616 Mbps
Thread 3 send 5000 frames in 8.191940 secs, tput 19.669676 Mbps
Thread 0 send 5000 frames in 8.191979 secs, tput 19.669584 Mbps
Sender: Tx frame 4999 in 8.19 ms, next frame 5000, start symbol 1
Sender main thread exit
Printing sender results to file "./data/tx_result.txt"...
Sender: worker thread 3 exit
Sender: worker thread 2 exit
Sender: worker thread 1 exit
Sender: worker thread 0 exit
17:860788 INFOR: Sender: Joining threads
17:860807 INFOR: Sender: Joining threads
17:860811 INFOR: Sender: Joining threads
17:860814 INFOR: Sender: Joining threads
17:860867 INFOR: Sender: Complete
=================================
CORE LIST SUMMARY
=================================
Total Number of Cores: 72 : 72
|| Core ID: 0 || Requested: 0 || ThreadType: Master (TX) || ThreadId: 140059075315136
|| Core ID: 1 || Requested: 1 || ThreadType: TX || ThreadId: 140058856904448
|| Core ID: 2 || Requested: 2 || ThreadType: TX || ThreadId: 140058848511744
|| Core ID: 3 || Requested: 3 || ThreadType: TX || ThreadId: 140058840119040
|| Core ID: 4 || Requested: 4 || ThreadType: TX || ThreadId: 140058831726336
=================================
49:735633 INFOR: LoopTXRX: socket threads are waiting for events
Main [frame 0 + 12422180947.07 ms since last frame]: Received first packet. Remaining packets in prev frame: 0
Main [frame 0 + 0.13 ms]: Completed LDPC encoding
Main [frame 0 + 0.41 ms]: Received all pilots
Main [frame 0 + 0.43 ms]: FFT-ed all pilots
Frame 0 Pilot Signal SNR (dB) Range at BS Antennas: User 0: [25.1,33.0] User 1: [21.0,31.2]
Main [frame 0 + 1.78 ms]: Completed zero-forcing
Frame 0 ZF matrix inverse condition number range: [0.40,0.46], Mean: 0.43
Main [frame 0 + 1.95 ms]: Received all packets
Main [frame 0 + 2.01 ms]: Completed precoding
Main [frame 0 + 2.04 ms]: Completed IFFT
Frame 18446744073709551615 Constellation:
EVM 0 0
, SNR inf inf
Main [frame 0 + 2.06 ms]: Completed TX of first symbol
Main [frame 0 + 2.14 ms]: Completed demodulation
Main [frame 0 + 2.16 ms]: Completed TX (3 DL symbols)
Main [frame 0 + 2.35 ms]: Completed LDPC decoding (3 UL symbols)
Frame 0 summary: FFT (24 tasks): 0.017 ms (~0.0013 + 0.0032 + 0.0124 ms), CSI (16 tasks): 0.126 ms (~0.0073 + 0.0642 + 0.0542 ms), ZF (336 tasks): 1.199 ms (~0.0050 + 0.1229 + 1.0705 ms), Demul (1008 tasks): 0.112 ms (~0.0054 + 0.0648 + 0.0219 ms), Decode (6 tasks): 0.052 ms (~0.0053 + 0.0449 + 0.0000 ms), Encode (2 tasks): 0.006 ms (~0.0000 + 0.0000 + 0.0000 ms), iFFT (24 tasks): 0.011 ms (~0.0001 + 0.0078 + 0.0032 ms), Precode (1008 tasks): 0.072 ms (~0.0349 + 0.0044 + 0.0321 ms), Total: 1.60 ms
...
Main [frame 4999 + 8.20 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.53 ms]: Received all pilots
Main [frame 4999 + 0.56 ms]: FFT-ed all pilots
Frame 4999 Pilot Signal SNR (dB) Range at BS Antennas: User 0: [25.1,33.0] User 1: [21.0,31.2]
Main [frame 4999 + 0.78 ms]: Completed zero-forcing
Frame 4999 ZF matrix inverse condition number range: [0.40,0.46], Mean: 0.43
Main [frame 4999 + 0.82 ms]: Completed precoding
Main [frame 4999 + 0.83 ms]: Completed IFFT
Main [frame 4999 + 0.87 ms]: Completed TX of first symbol
Main [frame 4999 + 0.95 ms]: Completed TX (3 DL symbols)
Main [frame 4999 + 2.09 ms]: Received all packets
Frame 4998 Constellation:
EVM 0.0110 0.0181
, SNR 39.5706 37.4114
Main [frame 4999 + 2.14 ms]: Completed demodulation
Main [frame 4999 + 2.19 ms]: Completed LDPC decoding (3 UL symbols)
Frame 4999 summary: FFT (24 tasks): 0.004 ms (~0.0016 + 0.0017 + 0.0004 ms), CSI (16 tasks): 0.031 ms (~0.0010 + 0.0017 + 0.0235 ms), ZF (336 tasks): 0.192 ms (~0.0044 + 0.0174 + 0.1694 ms), Demul (1008 tasks): 0.043 ms (~0.0018 + 0.0264 + 0.0004 ms), Decode (6 tasks): 0.023 ms (~0.0000 + 0.0232 + 0.0000 ms), Encode (2 tasks): 0.001 ms (~0.0000 + 0.0000 + 0.0000 ms), iFFT (24 tasks): 0.007 ms (~0.0001 + 0.0071 + 0.0002 ms), Precode (1008 tasks): 0.006 ms (~0.0013 + 0.0034 + 0.0007 ms), Total: 0.31 ms
2:374987 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 (6661, 5.55%), CSI (5697, 7.12%), ZF (143100, 8.52%), Demul (405888, 8.05%), Decode (1755, 5.85%), Encode (516, 5.16%), iFFT (9840, 8.20%), Precode (408960, 8.11%),
Thread 1 performed (tasks, fraction of tasks): FFT (6813, 5.68%), CSI (5802, 7.25%), ZF (143308, 8.53%), Demul (398928, 7.92%), Decode (1711, 5.70%), Encode (516, 5.16%), iFFT (9752, 8.13%), Precode (409392, 8.12%),
Thread 2 performed (tasks, fraction of tasks): FFT (7084, 5.90%), CSI (6270, 7.84%), ZF (142757, 8.50%), Demul (387072, 7.68%), Decode (1516, 5.05%), Encode (502, 5.02%), iFFT (9479, 7.90%), Precode (417984, 8.29%),
Thread 3 performed (tasks, fraction of tasks): FFT (6999, 5.83%), CSI (6197, 7.75%), ZF (139833, 8.32%), Demul (387792, 7.69%), Decode (1534, 5.11%), Encode (511, 5.11%), iFFT (9511, 7.93%), Precode (418176, 8.30%),
Thread 4 performed (tasks, fraction of tasks): FFT (6702, 5.58%), CSI (6364, 7.96%), ZF (142695, 8.49%), Demul (392928, 7.80%), Decode (1479, 4.93%), Encode (539, 5.39%), iFFT (9643, 8.04%), Precode (421536, 8.36%),
Thread 5 performed (tasks, fraction of tasks): FFT (5952, 4.96%), CSI (5402, 6.75%), ZF (141613, 8.43%), Demul (408288, 8.10%), Decode (1428, 4.76%), Encode (462, 4.62%), iFFT (9662, 8.05%), Precode (404928, 8.03%),
Thread 6 performed (tasks, fraction of tasks): FFT (6147, 5.12%), CSI (5480, 6.85%), ZF (141146, 8.40%), Demul (387312, 7.68%), Decode (1325, 4.42%), Encode (479, 4.79%), iFFT (9665, 8.05%), Precode (401616, 7.97%),
Thread 7 performed (tasks, fraction of tasks): FFT (7137, 5.95%), CSI (6221, 7.78%), ZF (143039, 8.51%), Demul (392784, 7.79%), Decode (1540, 5.13%), Encode (529, 5.29%), iFFT (9687, 8.07%), Precode (421392, 8.36%),
Thread 8 performed (tasks, fraction of tasks): FFT (5947, 4.96%), CSI (5589, 6.99%), ZF (139858, 8.32%), Demul (388272, 7.70%), Decode (1396, 4.65%), Encode (548, 5.48%), iFFT (9710, 8.09%), Precode (401184, 7.96%),
Thread 9 performed (tasks, fraction of tasks): FFT (6739, 5.62%), CSI (6417, 8.02%), ZF (142601, 8.49%), Demul (393264, 7.80%), Decode (1486, 4.95%), Encode (499, 4.99%), iFFT (9717, 8.10%), Precode (423984, 8.41%),
Thread 10 performed (tasks, fraction of tasks): FFT (5847, 4.87%), CSI (5097, 6.37%), ZF (140598, 8.37%), Demul (386160, 7.66%), Decode (1379, 4.60%), Encode (427, 4.27%), iFFT (9001, 7.50%), Precode (391680, 7.77%),
Thread 11 performed (tasks, fraction of tasks): FFT (47972, 39.98%), CSI (15464, 19.33%), ZF (119452, 7.11%), Demul (711312, 14.11%), Decode (13451, 44.84%), Encode (4472, 44.72%), iFFT (14333, 11.94%), Precode (519168, 10.30%),
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)
2:436151 INFOR: Agora: terminating
=================================
CORE LIST SUMMARY
=================================
Total Number of Cores: 72 : 36
|| Core ID: 5 || Requested: 5 || ThreadType: Master || ThreadId: 140481406758272
|| Core ID: 5 || Requested: 5 || ThreadType: Master || ThreadId: 140481406758272
|| Core ID: 6 || Requested: 6 || ThreadType: TXRX || ThreadId: 140480482809600
|| Core ID: 7 || Requested: 7 || ThreadType: Worker || ThreadId: 140480583522048
|| Core ID: 8 || Requested: 8 || ThreadType: Worker || ThreadId: 140480575129344
|| Core ID: 9 || Requested: 9 || ThreadType: Worker || ThreadId: 140480566736640
|| Core ID: 10 || Requested: 10 || ThreadType: Worker || ThreadId: 140480558343936
|| Core ID: 11 || Requested: 11 || ThreadType: Worker || ThreadId: 140480549951232
|| Core ID: 12 || Requested: 12 || ThreadType: Worker || ThreadId: 140480541558528
|| Core ID: 13 || Requested: 13 || ThreadType: Worker || ThreadId: 140480533165824
|| Core ID: 14 || Requested: 14 || ThreadType: Worker || ThreadId: 140480524773120
|| Core ID: 15 || Requested: 15 || ThreadType: Worker || ThreadId: 140480516380416
|| Core ID: 16 || Requested: 16 || ThreadType: Worker || ThreadId: 140480507987712
|| Core ID: 17 || Requested: 17 || ThreadType: Worker || ThreadId: 140480499595008
|| Core ID: 18 || Requested: 18 || ThreadType: Worker || ThreadId: 140480491202304
=================================
Once all frames have been completed you will see a Uplink Ber / Bler output from Agora
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)
You should see a near 0 BER, for both simulations described on this page.
sender
and agora
are running on 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.