This page describes experimentation with the newly developed explicit beamforming feature inAgora
. The main contributions of this feature to the codebase are as follows:
"frame_schedule": [
"BGCCCCCCCGGGGGPGDDDGG"
],
"explicit_csi" : true,
"wired_tx_port" : 9130,
"wired_rx_port" : 9140,
Above, we see the new parameters that are necessary for testing explicit beamforming.
We recommend launching 2 Terminals to execute the following programs (order matters)
Run data_generator
./build/data_generator --conf_file files/config/examples/dl-vulture-2ue-exbf.json
Run agora
./build/agora --conf_file files/config/examples/dl-vulture-2ue-exbf.json
Run user
./build/user --conf_file files/config/examples/ddl-vulture-2ue-exbf.json
[24:913554][I] Frame 999 Pilot Signal SNR (dB) Range at BS Antennas: User 0: [7.2,21.8] User 1: [2.1,18.0]
[24:913590][I] Main [frame 999 + 0.47 ms]: Completed ZF beamweight calc
[24:913600][I] Frame 999 Beamweight matrix inverse condition number range: [0.00,1.00], Mean: 0.12
[24:913692][I] Main [frame 999 + 0.57 ms]: Completed precoding
[24:913708][I] Main [frame 999 + 0.59 ms]: Completed IFFT
[24:913825][I] Main [frame 999 + 0.71 ms]: Completed TX of first symbol
[24:913883][I] Main [frame 999 + 0.76 ms]: Completed TX (1 DL Control & 3 DL Data 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
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
=================================
[24:914005][I] PhyUe [frame 999 + 1.20 ms]: Pilot FFT finished
[24:914125][I] Frame: 999, Symbol: 11, User: 1, EVM: 5.220296, SNR: 12.823049
[24:914220][I] PhyUe [frame 999 + 1.42 ms]: Received all packets
[24:914239][I] Frame: 999, Symbol: 12, User: 1, EVM: 4.023363, SNR: 13.954107
[24:914253][I] PhyUe [frame 999 + 1.45 ms]: Data FFT finished
[24:914255][I] PhyUe [frame 999 + 1.45 ms]: Completed demodulation
[24:914281][I] PhyUe [frame 999 + 1.48 ms]: Completed decoding
[24:914287][I] UE 0: Downlink bit errors (BER) 372/351296 (0.001059), block errors (BLER) 3/998 (0.003006)
[24:914288][I] UE 1: Downlink bit errors (BER) 1238/351296 (0.003524), block errors (BLER) 10/998 (0.010020)
[24:914306][I] PhyUe: Stopping threads
17:860788 INFOR: PhyUe: Joining threads
17:860807 INFOR: PhyUe: Joining threads
17:860811 INFOR: PhyUe: Joining threads
17:860814 INFOR: PhyUe: Joining threads
17:860867 INFOR: PhyUe: 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
=================================
Once all frames have been completed you will see the Downlink Ber / Bler output in the User
terminal.
You should see a near 0 BER for the experiments described on this page.