### Install CMakeLists.txt for Example (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/comp_cwTreeTypes/CMakeLists.txt This snippet outlines the installation process for a CMakeLists.txt file. It copies a release-specific CMakeLists.txt to the examples/pucch_F0_receiver directory and renames it to CMakeLists.txt, ensuring the example is configured correctly during installation. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/pucch_F0_receiver RENAME CMakeLists.txt) ``` -------------------------------- ### Install PUCCH Receiver Example Configuration Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/pucch_receiver/CMakeLists.txt Installs a release-specific CMakeLists.txt file for the PUCCH receiver example. This allows users to build the example in a release configuration with a renamed CMakeLists.txt. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/pucch_receiver RENAME CMakeLists.txt) ``` -------------------------------- ### Install Example CMakeLists File (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/cfo_ta_est/CMakeLists.txt This CMake snippet handles the installation of the 'CMakeLists.release.txt' file to the 'examples/cfo_ta_est' directory, renaming it to 'CMakeLists.txt'. This ensures the example can be built independently. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/cfo_ta_est RENAME CMakeLists.txt) ``` -------------------------------- ### Install CMakeLists.txt for testSS Release Build Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/ss/CMakeLists.txt This CMake snippet handles the installation of a release-specific CMakeLists.txt file for the 'testSS' example. It renames the file to 'CMakeLists.txt' upon installation in the 'examples/ss' directory. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/ss RENAME CMakeLists.txt) ``` -------------------------------- ### Install Example CMakeLists.txt Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/uciOnPusch_csi2_ctrl/CMakeLists.txt This CMake command installs the release-specific CMakeLists.txt file for the 'uciOnPusch_csi2_ctrl' example. It renames the file to 'CMakeLists.txt' upon installation to ensure proper build configuration in the target directory. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/uciOnPusch_csi2_ctrl RENAME CMakeLists.txt) ``` -------------------------------- ### Install CMakeLists.txt for cuphy_ex_srs_chEst Example (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/srs_chEst/CMakeLists.txt Installs the release version of the CMakeLists.txt file for the 'srs_chEst' example within the 'examples' directory. This configuration is likely used for building the example in a release mode. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/srs_chEst RENAME CMakeLists.txt) ``` -------------------------------- ### Install Reed-Muller Decoder Example (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/ReedMuller_decoder/CMakeLists.txt This snippet installs the 'CMakeLists.release.txt' file to the destination directory 'examples/cuphy_ex_ReedMuller_decoder', renaming it to 'CMakeLists.txt'. This allows the installed example to be built independently. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/cuphy_ex_ReedMuller_decoder RENAME CMakeLists.txt) ``` -------------------------------- ### Install Example Directories (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuMAC/CMakeLists.txt This CMake snippet defines installation rules for example directories ('cellAssociate', 'channInput'). It copies all files within these directories to the 'examples' destination, excluding 'CMakeLists.*' files. ```cmake install(DIRECTORY examples/cellAssociate DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/channInput DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) ``` -------------------------------- ### Install CMakeLists.txt (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/pucch_rx_pipeline/CMakeLists.txt This CMake command installs a specific CMake configuration file (CMakeLists.release.txt) to a designated directory within the installed package. This is often done to provide release-specific build instructions or configurations for users. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/pucch_rx_pipeline RENAME CMakeLists.txt) ``` -------------------------------- ### Start JupyterLab Server for pyAerial Notebooks Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/pyaerial/README.md Initiates a JupyterLab server within the pyAerial container, allowing interactive execution of example notebooks. Access is typically provided via a web browser. ```bash cd $cuBB_SDK/pyaerial/notebooks jupyter lab --ip=0.0.0.0 ``` -------------------------------- ### Get Usage Instructions for Channel Model Executables Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/testBenches/README.md This command retrieves usage instructions for a specific channel model example executable by passing the '-h' flag. Replace `` with the actual name of the compiled example. ```shell -h ``` -------------------------------- ### Get LDPC Decoder Example Help (C++) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/util/ldpc/ldpc_profiling_notes.txt This command displays the available command-line options for the cuphy_ex_ldpc example program. This helps in understanding the various parameters that can be adjusted for performance testing. ```bash ./examples/error_correction/cuphy_ex_ldpc -h ``` -------------------------------- ### Install CMakeLists.txt for Release (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/polar_decoder/CMakeLists.txt This command installs a specific CMake configuration file, 'CMakeLists.release.txt', to the 'examples/polar_decoder' directory. It renames the installed file to 'CMakeLists.txt', likely to provide a specific build configuration for the polar decoder example in a release build. This ensures the example can be built with predefined release settings. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/polar_decoder RENAME CMakeLists.txt) ``` -------------------------------- ### Install CMakeLists.txt for Example (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/uci_on_pusch_deRm/CMakeLists.txt This CMake code snippet installs the CMakeLists.txt file for the uci_on_pusch_deRm example. It renames the 'CMakeLists.release.txt' file to 'CMakeLists.txt' upon installation into the 'examples/uci_on_pusch_deRm' directory. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/uci_on_pusch_deRm RENAME CMakeLists.txt) ``` -------------------------------- ### Install Simplex Decoder CMakeLists.txt (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/simplex_decoder/CMakeLists.txt This CMake snippet installs the release configuration CMakeLists.txt file for the simplex decoder example. It copies `CMakeLists.release.txt` to the `examples/cuphy_ex_simplex_decoder` directory and renames it to `CMakeLists.txt`. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/cuphy_ex_simplex_decoder RENAME CMakeLists.txt) ``` -------------------------------- ### Install CMakeLists.txt for Release Build Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/pdsch_dmrs/CMakeLists.txt This snippet outlines the installation process for the CMakeLists.txt file specific to a release build. The file is copied to the 'examples/pdsch_dmrs' directory and renamed to 'CMakeLists.txt', allowing for consistent build configurations across different environments. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/pdsch_dmrs RENAME CMakeLists.txt) ``` -------------------------------- ### Install Release CMakeLists (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/uciOnPusch_deSeg_part0/CMakeLists.txt Installs a specific CMakeLists.release.txt file to the `examples/uciOnPusch_deSeg_part0` directory, renaming it to `CMakeLists.txt`. This is used for release builds of the example. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/uciOnPusch_deSeg_part0 RENAME CMakeLists.txt) ``` -------------------------------- ### Install Release Build Example (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/pusch_rateMatch/CMakeLists.release.txt This CMake snippet handles the installation of the release build of the PUSCH rate match example. It copies the CMakeLists.txt file from a release-specific configuration to the target installation directory, renaming it to 'CMakeLists.txt'. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/pusch_deRm RENAME CMakeLists.txt) ``` -------------------------------- ### Setup and Imports for CSI-RS Example (Python) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/pyaerial/notebooks/example_csi_rs_tx_rx.ipynb Initializes the environment for the CSI-RS transmission and reception example. It configures GPU usage, silences TensorFlow logs, imports necessary libraries (NumPy, CuPy, Matplotlib, Sionna, TensorFlow, and pyAerial components), and sets up memory growth for the GPU. ```python %matplotlib widget import os import time os.environ["CUDA_VISIBLE_DEVICES"] = "0" os.environ['TF_CPP_MIN_LOG_LEVEL'] = "3" # Silence TensorFlow. import numpy as np import cupy as cp import matplotlib.pyplot as plt import sionna import tensorflow as tf # pyAerial imports from aerial.phy5g.csirs import CsiRsConfig from aerial.phy5g.csirs import CsiRsTxConfig from aerial.phy5g.csirs import CsiRsRxConfig from aerial.phy5g.csirs import CsiRsTx from aerial.phy5g.csirs import CsiRsRx from aerial.util.cuda import get_cuda_stream # Configure the notebook to use only a single GPU and allocate only as much memory as needed. # For more details, see https://www.tensorflow.org/guide/gpu. gpus = tf.config.list_physical_devices('GPU') tf.config.experimental.set_memory_growth(gpus[0], True) ``` -------------------------------- ### Pre-execute pyAerial Example Notebooks Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/pyaerial/README.md Runs all example notebooks within the pyAerial container automatically. This process can be time-consuming due to full simulations and ML model training. ```bash $cuBB_SDK/pyaerial/scripts/run_notebooks.sh ``` -------------------------------- ### Install Example Directories (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/CMakeLists.txt Specifies installation rules for various example subdirectories within the project. It excludes CMakeLists.txt files from being installed to prevent accidental build configurations on the target system. ```cmake install(DIRECTORY examples/common DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/bfc DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/ch_est DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/channel_eq DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/pusch_rx_multi_pipe DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/error_correction DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/ldpc_encode DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/pdsch_tx DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/pucch_rx_pipeline DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/prach_receiver_multi_cell DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/prach_test DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/ss DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/polar_encoder DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) install(DIRECTORY examples/srs_chEst DESTINATION examples FILES_MATCHING PATTERN "*" PATTERN "CMakeLists.*" EXCLUDE) ``` -------------------------------- ### Install Release CMakeLists.txt (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/CMakeLists.txt This CMake command installs a specific CMakeLists.txt file ('CMakeLists.release.txt') to the 'examples' destination, renaming it to 'CMakeLists.txt'. This is useful for providing a default configuration for examples when the project is installed. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples RENAME CMakeLists.txt) ``` -------------------------------- ### Install Example CMakeLists.txt Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/channel_eq/CMakeLists.txt This CMake instruction installs a release-specific CMakeLists.txt file for the channel equalization example. It is placed in the `examples/channel_eq` directory and renamed to `CMakeLists.txt` for standard build system recognition. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/channel_eq RENAME CMakeLists.txt) ``` -------------------------------- ### Build Executable for Channel Estimation Example (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/ch_est/CMakeLists.txt This CMake configuration defines the source files and target libraries for building the `cuphy_ex_ch_est` executable. It links against several NVIDIA Aerial libraries and the CLI11 library for command-line argument parsing. The `install` command ensures that the release-specific CMakeLists.txt is installed as a general CMakeLists.txt in the examples/ch_est directory. ```cmake set(SOURCES cuphy_ex_ch_est.cpp dummy.cu ../common/datasets.cpp) add_executable(cuphy_ex_ch_est ${SOURCES}) target_link_libraries(cuphy_ex_ch_est cuphy_hdf5 cuphy cuphy_channels CLI11::CLI11) install(FILES CMakeLists.release.txt DESTINATION examples/ch_est RENAME CMakeLists.txt) ``` -------------------------------- ### Install CMakeLists.txt (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/srs_bfw/CMakeLists.txt Installs the 'CMakeLists.release.txt' file to the 'examples/srs_bfw' directory, renaming it to 'CMakeLists.txt'. This is typically used to provide a specific build configuration for release builds of the srs_bfw example. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/srs_bfw RENAME CMakeLists.txt) ``` -------------------------------- ### Include Examples Subdirectory with CMake Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/testBenches/chanModels/CMakeLists.txt This CMake command includes the 'examples' subdirectory. This is typically used to add build targets and configurations for example applications within the project. ```cmake add_subdirectory(examples) ``` -------------------------------- ### Install CMakeLists.txt (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/prach_test/CMakeLists.txt This CMake command installs a specific CMakeLists file ('CMakeLists.release.txt') to the 'examples/prach_test' directory. It renames the installed file to 'CMakeLists.txt', making it the primary build configuration file for that example subdirectory. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/prach_test RENAME CMakeLists.txt) ``` -------------------------------- ### Add Project Subdirectories Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY-CP/gt_common_libs/nvIPC/tests/CMakeLists.txt Adds several sub-directories to the CMake build process, each containing specific functionalities. These include 'example', 'dump', 'pcap', 'cunit', and 'sched', enabling modular development and organization. ```cmake add_subdirectory(example) add_subdirectory(dump) add_subdirectory(pcap) add_subdirectory(cunit) add_subdirectory(sched) ``` -------------------------------- ### Install CMakeLists.txt for dl_rate_matching Release Build (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/dl_rate_matching/CMakeLists.txt This CMake instruction installs the 'CMakeLists.release.txt' file to the 'examples/dl_rate_matching' directory, renaming it to 'CMakeLists.txt'. This is typically done to provide a specific build configuration for the release version of the 'dl_rate_matching' example. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/dl_rate_matching RENAME CMakeLists.txt) ``` -------------------------------- ### Get LDPC Performance Collection Script Help (Python) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/util/ldpc/ldpc_profiling_notes.txt This command displays the available command-line options for the ldpc_perf_collect.py script. This script is used to invoke the LDPC decoder example program multiple times, parse its output, and present the data in a more usable format. ```bash ../util/ldpc/ldpc_perf_collect.py -h ``` -------------------------------- ### Install CMakeLists.txt for Release Build Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/gen_pusch_bler_curve/CMakeLists.txt Installs a release-specific CMakeLists.txt file for the 'gen_pusch_bler_curve' example. This ensures the correct build configuration is used when deploying the example. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/gen_pusch_bler_curve RENAME CMakeLists.txt) ``` -------------------------------- ### Install CU PHY PUSCH CRC Example CMakeLists (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/pusch_crc/CMakeLists.txt Installs the release CMakeLists.txt file for the PUSCH CRC example to the 'examples/pusch_crc' destination. This ensures that the example can be built and configured correctly in a release environment. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/pusch_crc RENAME CMakeLists.txt) ``` -------------------------------- ### Build All Testbench Examples Using CMake Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/testBenches/README.md Builds all testbench example targets, including cubb_gpu_test_bench and channel models, after CMake configuration. This command should be run from the directory containing the specified build directory. ```shell # Run from the directory that contains cmake --build --target testbenches_examples ``` -------------------------------- ### Build Specific Channel Model Examples with CMake Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/testBenches/README.md This command allows building individual channel model example targets, such as `sls_chan_ex`, `tdl_chan_ex`, or `cdl_chan_ex`. This is useful for targeted development or testing. Run from the directory containing the build directory. ```shell # Or build specific examples cmake --build --target sls_chan_ex cmake --build --target tdl_chan_ex cmake --build --target cdl_chan_ex ``` -------------------------------- ### Manual Script Usage Example Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/testBenches/phase4_test_scripts/README.md Demonstrates the manual execution of various scripts within the Aerial CUDA Accelerated RAN project, such as copy_test_files.sh, setup1_DU.sh, and run3_testMAC.sh, with example parameters. ```bash # Example manual usage $cuBB_SDK/testBenches/phase4_test_scripts/copy_test_files.sh 79 --max_cells 6 $cuBB_SDK/testBenches/phase4_test_scripts/setup1_DU.sh --mumimo 1 $cuBB_SDK/testBenches/phase4_test_scripts/setup2_RU.sh $cuBB_SDK/testBenches/phase4_test_scripts/test_config.sh 79 --compression=4 --num-cells=6 --num-slots=600000 $cuBB_SDK/testBenches/phase4_test_scripts/run1_RU.sh $cuBB_SDK/testBenches/phase4_test_scripts/run2_cuPHYcontroller.sh $cuBB_SDK/testBenches/phase4_test_scripts/run3_testMAC.sh ``` -------------------------------- ### Install prach_receiver_multi_cell CMakeLists.txt (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/prach_receiver_multi_cell/CMakeLists.txt Installs the release-specific CMakeLists.txt file for the 'prach_receiver_multi_cell' example. This ensures that the correct build configuration is available when deploying or building the example in a release environment. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/prach_receiver_multi_cell RENAME CMakeLists.txt) ``` -------------------------------- ### Test pyAerial Installation Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/pyaerial/README.md Verifies the pyAerial installation by importing the 'aerial' module in Python. A successful import without errors indicates a correct installation. ```python python3 -c "import aerial" ``` -------------------------------- ### Configure RU Setup using setup2_RU.sh Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/testBenches/phase4_test_scripts/README.md This script configures the RU (Radio Unit) node for testing. It prepares the RU to receive and process signals as part of the RAN. The `$SETUP2_RU_PARAMS` variable is used to pass the necessary configuration details. ```bash $cuBB_SDK/testBenches/phase4_test_scripts/setup2_RU.sh $SETUP2_RU_PARAMS ``` -------------------------------- ### Install CMakeLists.txt (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/gen_pucch_perf_curve/CMakeLists.txt This CMake snippet installs a release-specific CMakeLists.txt file to the 'examples/gen_pucch_perf_curve' directory, renaming it to 'CMakeLists.txt'. This ensures that the correct build configuration is used when installing the example. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/gen_pucch_perf_curve RENAME CMakeLists.txt) ``` -------------------------------- ### Install CMakeLists.txt for Release (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/pucch_F1_receiver/CMakeLists.txt Installs the CMakeLists.release.txt file to the target directory, renaming it to CMakeLists.txt for use in the release build of the pucch_F1_receiver example. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/pucch_F1_receiver RENAME CMakeLists.txt) ``` -------------------------------- ### Initialize pyAerial and Sionna for 5G SRS Simulation (Python) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/pyaerial/notebooks/example_srs_tx_rx.ipynb Sets up the environment for pyAerial and Sionna by configuring GPU usage, logging levels, and importing necessary libraries. It initializes TensorFlow for GPU memory management and imports core components for SRS transmission and reception. ```python %matplotlib widget import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" os.environ['TF_CPP_MIN_LOG_LEVEL'] = "3" # Silence TensorFlow. import cupy as cp import numpy as np import matplotlib.pyplot as plt import sionna import tensorflow as tf from aerial.phy5g.srs import SrsTx from aerial.phy5g.srs import SrsRx from aerial.phy5g.srs import SrsTxConfig from aerial.phy5g.srs import SrsRxConfig from aerial.phy5g.srs import SrsConfig from aerial.phy5g.srs import SrsRxUeConfig from aerial.phy5g.srs import SrsRxCellConfig from aerial.util.cuda import get_cuda_stream # Configure the notebook to use only a single GPU and allocate only as much memory as needed. # For more details, see https://www.tensorflow.org/guide/gpu. gpus = tf.config.list_physical_devices('GPU') tf.config.experimental.set_memory_growth(gpus[0], True) ``` -------------------------------- ### Configure DU Setup using setup1_DU.sh Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/testBenches/phase4_test_scripts/README.md This script configures the DU (Distributed Unit) node for testing. It sets up the necessary environment and parameters specific to the DU's role in the network. The `$SETUP1_DU_PARAMS` variable should contain the required configuration values. ```bash $cuBB_SDK/testBenches/phase4_test_scripts/setup1_DU.sh $SETUP1_DU_PARAMS ``` -------------------------------- ### Build cuPHY Example Targets with CMake Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/README.md Demonstrates how to build specific cuPHY example applications using CMake build commands. This is useful for compiling individual reference implementations or sample applications. ```shell cmake --build . --target pdsch_tx ``` ```shell cmake --build . --target pdsch_tx pusch_rx_multi_pipe ``` ```shell cmake --build . --target cuphy_examples ``` -------------------------------- ### Build and Install pyAerial Python Package Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/pyaerial/README.md Steps to build the cuPHY Python bindings and then install the pyAerial package in development mode. This process is performed within the pyAerial container. ```bash cd $cuBB_SDK cmake -Bbuild -GNinja -DCMAKE_TOOLCHAIN_FILE=cuPHY/cmake/toolchains/native -DNVIPC_FMTLOG_ENABLE=OFF -DASIM_CUPHY_SRS_OUTPUT_FP32=ON cmake --build build -t _pycuphy pycuphycpp $cuBB_SDK/pyaerial/scripts/install_dev_pkg.sh ``` -------------------------------- ### Configure C++ Executable with CUDA Sources and Libraries (CMake) Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/test_example/CMakeLists.txt This snippet defines how to build a C++ executable named 'test_example' using CMake. It includes both C++ ('main.cpp') and CUDA ('dummy.cu') source files. The executable is linked against the 'cuphy_hdf5' and 'cuphy' libraries, which are essential for the RAN functionality. ```cmake set(SOURCES main.cpp dummy.cu) add_executable(test_example ${SOURCES}) target_link_libraries(test_example cuphy_hdf5 cuphy) ``` -------------------------------- ### Install CMakeLists.txt - CMake Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/uciOnPusch_deSeg_part2/CMakeLists.txt This CMake snippet handles the installation of a release-specific CMakeLists.txt file for the 'uciOnPusch_deSeg_part2' example. It ensures that the correct build configuration is available in the specified destination directory. ```cmake install(FILES CMakeLists.release.txt DESTINATION examples/uciOnPusch_deSeg_part2 RENAME CMakeLists.txt) ``` -------------------------------- ### CMake Build Configuration for Pusch Rate Match Example Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/pusch_rateMatch/CMakeLists.txt Configures the build process for the PUSCH rate match example using CMake. It defines source files, creates an executable target, links necessary libraries, and specifies installation rules for the CMakeLists.txt file. ```cmake set(SOURCES cuphy_ex_pusch_rateMatch.cpp dummy.cu ../common/datasets.cpp) add_executable(cuphy_ex_pusch_rateMatch ${SOURCES}) target_link_libraries(cuphy_ex_pusch_rateMatch cuphy_hdf5 cuphy cuphy_channels) install(FILES CMakeLists.release.txt DESTINATION examples/pusch_rateMatch RENAME CMakeLists.txt) ``` -------------------------------- ### Initialize Python Environment and Aerial Bindings Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/pyaerial/notebooks/llrnet_dataset_generation.ipynb Sets up the Python environment by configuring CUDA visible devices and importing necessary libraries from the NVIDIA Aerial framework. This includes bindings for CUDA runtime, data manipulation tools (NumPy, Pandas), progress bars (tqdm), display utilities, and various PHY layer algorithms and configurations specific to 5G NR PUSCH. ```python import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" import cuda.bindings.runtime as cudart import numpy as np import pandas as pd from tqdm.notebook import tqdm from IPython.display import Markdown from IPython.display import display from aerial.phy5g.algorithms import ChannelEstimator from aerial.phy5g.algorithms import NoiseIntfEstimator from aerial.phy5g.algorithms import ChannelEqualizer from aerial.phy5g.algorithms import Demapper from aerial.phy5g.ldpc import LdpcDeRateMatch from aerial.phy5g.ldpc import LdpcDecoder from aerial.phy5g.ldpc import CrcChecker from aerial.phy5g.config import PuschConfig from aerial.phy5g.config import PuschUeConfig from aerial.util.data import PuschRecord from aerial.util.data import load_pickle from aerial.util.data import save_pickle from aerial.util.fapi import dmrs_fapi_to_bit_array import warnings warnings.filterwarnings("error") ``` -------------------------------- ### Build and Run pyAerial Container Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/pyaerial/README.md Instructions to build and run the pyAerial Docker container, which includes pre-installed machine learning tools like NVIDIA Sionna, TensorRT, and TensorFlow. Requires Docker and hpccm. ```bash $cuBB_SDK/pyaerial/container/build.sh $cuBB_SDK/pyaerial/container/run.sh ``` -------------------------------- ### Build Full Aerial SDK with cubb_gpu_test_bench Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/testBenches/README.md This command builds the complete Aerial SDK, including the cubb_gpu_test_bench testbench. It assumes the necessary environment variables and paths are set up. ```shell # Build full Aerial SDK $cuBB_SDK/testBenches/phase4_test_scripts/build_aerial_sdk.sh ``` -------------------------------- ### Define Common Example Utilities Library in CMake Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/common/CMakeLists.txt This CMake code defines an INTERFACE library named 'cuphy_examples_common' for common utilities used in examples. It sets include directories for build and installation and adds HDF5 include directories, making HDF5 headers available to example targets without direct linking. ```cmake # Common utilities for examples - INTERFACE library add_library(cuphy_examples_common INTERFACE) target_include_directories(cuphy_examples_common INTERFACE $ $ ) # Add HDF5 include directories (headers only, no linking) target_include_directories(cuphy_examples_common INTERFACE ${HDF5_INCLUDE_DIRS}) ``` -------------------------------- ### Multi-L2 Test Configuration - Setup Scripts Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/testBenches/phase4_test_scripts/README.md Shows the bash commands to configure the system for a Multi-L2 test, enabling it via the --ml2 flag in setup1_DU.sh and configuring test_config.sh. ```bash $cuBB_SDK/testBenches/phase4_test_scripts/setup1_DU.sh --ml2 # Enable Multi-L2 by "--ml2" $cuBB_SDK/testBenches/phase4_test_scripts/setup2_RU.sh $cuBB_SDK/testBenches/phase4_test_scripts/test_config.sh 60 --num-cells=8 ``` -------------------------------- ### Build LDPC Encoder with CMake Source: https://github.com/nvidia/aerial-cuda-accelerated-ran/blob/main/cuPHY/examples/ldpc_encode/CMakeLists.txt This CMakeLists.txt configuration defines an executable named 'ldpc_encode'. It includes both C++ and CUDA source files and links against the 'cuphy_hdf5' and 'cuphy' libraries. The compiled executable is then installed. ```cmake set(SOURCES ldpc_encode.cpp dummy.cu) add_executable(ldpc_encode ${SOURCES}) target_link_libraries(ldpc_encode cuphy_hdf5 cuphy) install(FILES CMakeLists.release.txt DESTINATION examples/ldpc_encode RENAME CMakeLists.txt) ```