The following steps must be completed to run experiments on the massive MIMO platform on The University of Utah's POWDER wireless testbed.
This guide will walk you through these steps.
To get started, users need to request an account here.
Join the argos-test group.
It necessary to set your default shell to bash in your powder user settings.
Additionally, you need to upload your public ssh key to your powder user settings. A ed25519 key is preferred.
NOTE: The experiment using the massive MIMO setup hardware inside the anechoic chamber is temporary and will only be available during 2021.
After getting an account, users need to set up their experiment topology (i.e., hardware resources needed).
We created a set of profiles that provide basic functionalities. In many cases this might be enough for users to begin working with the platform. Here are the step-by-step instructions for reserving resources and instantiating the POWDER experiment.
Experiments
(top left)Start Experiment
Change Profile
Select Profile
Next
Anechoic chamber array
and in the Allocate lab iris client radio select Anechoic chamber clients
. Modify the frequency range according to your needs and reservation parameters. You can select from the CBRS bands (i.e., 3550-3650MHz). Attaching Matlab is optional (it will place it on pc1 only). Click Next
Emulab
. Here you will see the graphical topology showing the PC, massive MIMO base station, and clients. Click Next
Finish
to proceedUnder the List View
tab, users will find the different nodes in the experiment topology. We can ssh
into the host machine using the command provided. Remember to add use X11 forwarding (i.e., -X
option) to forward the application display to your local machine.
Even though the experiment and resources have been instantiated, there are some startup scripts continue to run. These scripts install several dependencies that will be needed by users. Users can verify whether these scripts are still running, by looking at the pc1
and pc2
blocks in the Topology View
. At the top right of the compute node block, you will notice a circle with either a dot or a check mark. The check mark indicates everything has been installed and it's ready for use.
By default, the RENEW profile clones the agora
repository into the /scratch/repos/agora
folder. This profile has all of the dependencies required to run the agora software so do not run any of the setup / dependencies scripts from the agora repository.
WARNING: After the experiment expires, EVERYTHING in your HOME directory is deleted. Make sure you create a disk image or download your collected data before this happens.
python3 -m pyfaros.discover
topology.json
) that lists all the available base station SDRs. The configuration file can be configured to input this information when agora is run. However, the topology file available for the chamber is located in the /data/anechoic_conf/
directory:
Generate data for the experiment configuration
pc1:/scratch/repos/agora$ cp files/config/examples/ul-powder.json files/experiment/ul-powder.json
pc1:/scratch/repos/agora$ ./build/data_generator --conf_file files/experiment/ul-powder.json
98:775669 INFOR: Saving uplink MAC data to ./files/experiment/orig_ul_data_2048_ant4.bin
98:775912 INFOR: Saving raw uplink data (using LDPC) to ./files/experiment/LDPC_orig_ul_data_2048_ant4.bin
98:954998 INFOR: Saving rx data to ./files/experiment/LDPC_rx_data_2048_ant44.bin
Copy the data to any other compute nodes
sudo scp -r ./files/experiment root@192.168.2.2:/scratch/repos/agora/files
We can now run the agora software
pc2:/scratch/repos/agora$ ./build/user --conf_file files/experiment/ul-powder.json
pc1:/scratch/repos/agora$ ./build/agora --conf_file files/experiment/ul-powder.json
Results:
Uplink totals (tasks, frames): CSI (1680000, 10000.00), ZF (12000000, 10000.00), FFT (1260000, 10000.00), Demul (36000000, 10000.00), Decode (120000, 10000.00)
Thread 0 performed (tasks, fraction of tasks): FFT (165004, 13.10%), CSI (215518, 12.83%), ZF (1500323, 12.50%), Demul (4496208, 12.49%), Decode (15240, 12.70%),
Thread 1 performed (tasks, fraction of tasks): FFT (157658, 12.51%), CSI (208394, 12.40%), ZF (1499713, 12.50%), Demul (4516272, 12.55%), Decode (14859, 12.38%),
Thread 2 performed (tasks, fraction of tasks): FFT (161406, 12.81%), CSI (214402, 12.76%), ZF (1499349, 12.49%), Demul (4532928, 12.59%), Decode (15052, 12.54%),
Thread 3 performed (tasks, fraction of tasks): FFT (155508, 12.34%), CSI (210724, 12.54%), ZF (1499299, 12.49%), Demul (4489296, 12.47%), Decode (14750, 12.29%),
Thread 4 performed (tasks, fraction of tasks): FFT (145394, 11.54%), CSI (204136, 12.15%), ZF (1498735, 12.49%), Demul (4459104, 12.39%), Decode (14696, 12.25%),
Thread 5 performed (tasks, fraction of tasks): FFT (160070, 12.70%), CSI (209348, 12.46%), ZF (1499391, 12.49%), Demul (4485552, 12.46%), Decode (15458, 12.88%),
Thread 6 performed (tasks, fraction of tasks): FFT (157106, 12.47%), CSI (204850, 12.19%), ZF (1503703, 12.53%), Demul (4506384, 12.52%), Decode (14885, 12.40%),
Thread 7 performed (tasks, fraction of tasks): FFT (157854, 12.53%), CSI (212628, 12.66%), ZF (1499487, 12.50%), Demul (4514256, 12.54%), Decode (15060, 12.55%),
Stats: Saving master timestamps to ./files/log/timeresult.txt
Stats: Printing detailed results to ./files/log/timeresult_detail.txt
UE 0: Uplink bit errors (BER) 8373/15840000(0.000528598), block errors (BLER) 11/10000 (0.0011)
UE 1: Uplink bit errors (BER) 8878/15840000(0.00056048), block errors (BLER) 11/10000 (0.0011)
UE 2: Uplink bit errors (BER) 8884/15840000(0.000560859), block errors (BLER) 11/10000 (0.0011)
UE 3: Uplink bit errors (BER) 8899/15840000(0.000561806), block errors (BLER) 11/10000 (0.0011)
Generate data for the experiment configuration
pc1:/scratch/repos/agora$ cp files/config/examples/dl-powder.json files/experiment/dl-powder.json
pc1:/scratch/repos/agora$ ./build/data_generator --conf_file files/experiment/dl-powder.json
24:100386 INFOR: Saving rx data to ./files/experiment/LDPC_rx_data__ant20.bin
24:103612 INFOR: Saving downlink MAC data to ./files/experiment/orig_dl_data_512_ant2.bin
24:103799 INFOR: Saving raw dl data (using LDPC) to ./files/experiment/LDPC_orig_dl_data_512_ant2.bin
24:171423 INFOR: Saving dl tx data to ./files/experiment/LDPC_dl_tx_data_512_ant20.bin
Copy the data to any other compute nodes
sudo scp -r ./files/experiment root@192.168.2.2:/scratch/repos/agora/files
We can now run the agora software
pc2:/scratch/repos/agora$ ./build/user --conf_file files/experiment/dl-powder.json
pc1:/scratch/repos/agora$ ./build/agora --conf_file files/experiment/dl-powder.json
Results
UE 0: Downlink bit errors (BER) 19355/15840000(0.00122191), block errors (BLER) 156/10000 (0.0156)
UE 1: Downlink bit errors (BER) 17434/15840000(0.00110063), block errors (BLER) 29/10000 (0.0029)
For the most updated information on POWDER's deployment, please refer to their site.
The POWDER team has provided a map of their deployment. This map shows the locations of the available massive MIMO base stations and the UEs. Every POWDER user has access to this equipment.