Difference between revisions of "GSOC2022Channel"

From Nsnam
Jump to: navigation, search
(Weekly Progress Reports)
(Weekly Progress Reports)
(3 intermediate revisions by the same user not shown)
Line 52: Line 52:
 
** Initial work on the Eigen port of the ThreeGppChannelModel and PhasedArrayModel classes. Implementation of the Eigen support in the CMake build system as an optional external library. The possible presence of Eigen is then exposed to the source files by conditionally declaring the preprocessor definition "HAVE_EIGEN3".
 
** Initial work on the Eigen port of the ThreeGppChannelModel and PhasedArrayModel classes. Implementation of the Eigen support in the CMake build system as an optional external library. The possible presence of Eigen is then exposed to the source files by conditionally declaring the preprocessor definition "HAVE_EIGEN3".
 
** Import (i.e., using git cherry-pick) of the channel matrix generation optimizations proposed in MR #897 in the Eigen branch of the GSoC.
 
** Import (i.e., using git cherry-pick) of the channel matrix generation optimizations proposed in MR #897 in the Eigen branch of the GSoC.
 +
* '''Week 6'''
 +
** Implementation of a uniform interface for both Eigen and STL’s based vectors and matrices. Its aim is to minimize the portion of the code which varies based on Eigen’s availability in the system (dictated by the value of the CMake-defined HAVE_EIGEN3 flag). In particular, this interface has been implemented for the PhasedArrayModel::ComplexVector and the MatrixBasedChannelModel::Complex2DVector data structures.
 +
** Update of the ThreeGppChannelModel, ThreeGppPropagationLossModel and ThreeGppChannelTestSuite to reflect the above interface implemented for the PhasedArrayModel::ComplexVector and the MatrixBasedChannelModel::Complex2DVector data structures.
 +
** Creation of a fork of the NR module which introduces the changes needed for supporting Eigen. This is a necessary step for carrying out the benchmarking of the proposed changes, as the simulation script chosen for such purposes requires the NR module.
 +
* '''Week 7'''
 +
**Benchmarking of the performance improvements brought by all the work up to Week 6.
 +
**Profiling of the Eigen and performance-related changes, in order to identify possible remaining performance bottlenecks. Thanks to the above changes, the function CalcBeamformingGain now represents the main performance bottleneck.
 +
**Experimenting possible solutions for speeding up the CalcBeamformingGain function.
 +
**Setting up the draft MRs concerning the work up to Week 7. In particular, two MRs towards the main development branch gsoc-2022 have been opened. They are related to the simplified channel model (https://gitlab.com/pagmatt/ns-3-dev/-/merge_requests/2) and the Eigen optimizations (https://gitlab.com/pagmatt/ns-3-dev/-/merge_requests/3), respectively. Then, another MR from my development branch gsoc-2022 towards ns-3 mainline, referencing the above MRs, has been opened.

Revision as of 14:40, 12 August 2022

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

Back to GSoC 2022 projects

Project Overview

  • Project Name: A simplified channel and beamforming model for ns-3
  • Student: Matteo Pagin
  • Mentors: Sandra Lagen, Biljana Bojovic, Michele Polese
  • Google page: https://summerofcode.withgoogle.com/programs/2022/projects/uxXqy83g
  • Project Goals: Currently, ns-3 provides the TR 38.901 channel model as the default option for sampling MIMO wireless channels which take into account the presence of (possibly directional) multiple antenna elements at both transmitter and receiver. However, this model represents a major performance bottleneck for most end-to-end simulations, especially whenever they involve upwards of hundreds of nodes. Accordingly, the goal of my proposal is twofold:
    • to provide ns-3 with a simplified statistical channel model, to be used for analyses which are focused on the upper layers of the protocol stack only, and
    • to improve the performance of the TR 38.901-based framework which is currently available in ns-3, for the remainder of the use cases.
  • Repository: GitLab
  • About Me: I am a first year PhD student at the University of Padova, working with the SIGNET group under the supervision of professor Michele Zorzi. Previously, I have been a research engineer in the same group, and I have obtained both my master and bachelor degree from the University of Padova, in Information Engineering and ICT for Internet and Multimedia, respectively. During these first years of my research career I have been working quite extensively with ns-3, primarily by working on the mmwave module for simulating 5G cellular networks. However, with this project I aim to contribute in a more direct manner to the ns-3 project! I spend most of my free time having "aperitivo"s with friends, training at the gym, hiking and learning to play the guitar.
  • Project proposal: GDrive link

Milestones and Deliverables

Project plan, which will be periodically updated during the whole GSoC: GDoc.

The project objectives will be achieved through three incremental updates of the spectrum and antenna modules, representing the project deliverables and each providing additional features with respect to the previous one. Specifically, the following deliverables are planned:

  • D1, which will comprise the addition of the simplified channel and beamforming models and which will be completed by the end of Week 5.
  • D2, which will include the port of the spectrum and antenna modules to the Eigen linear algebra library and the aforementioned optimizations. It will be completed by the end of Week 9.
  • D3, which will comprise the validation campaign for the 3GPP model and the calibration of the simplified model, based on the former. This deliverable will be completed by the end of Week 12.

Weekly Progress Reports

  • Week 1
    • Discussion with the mentors and the ns-3 maintainers regarding the level of integration of Eigen in ns-3. Optional, external installation is the chosen approach.
    • Study of the FTR fading model, draft implementation in MATLAB and consistency checks among such implementation and the related paper.
    • Further definition of the calibration steps. Identification of the 3GPP calibration campaigns which can be used to such end. Since most of the latter make use of older versions of the 38.901 SCM (v14.0.0), only selected scenarios will be calibrated, i.e., the ones which are consistent among the v.14.0.0 and the one currently implemented in ns-3. The full SCM will be calibrated first, using the 3GPP campaigns as a reference. Then, the simplified channel model will be calibrated using the latter.
  • Week 2
    • Definition of the APIs of the new SpectrumPropagationLossModel, i.e., MimoSpectrumPropagationLossModel, which extends the PhasedArraySpectrumPropagationLossModel class and implements the performance-oriented channel model.
    • Implementation of the GetFtrFastFading function, which samples the squared norm of a fading sample distributed as per the Two-Ray Fluctuating (FTR) Model fast-fading model.
    • Implementation of the first test, i.e., MimoFtrAverageTest, which compares the empirical mean obtained using the GetFtrFastFading function with the expected theoretical one. The test is repeated for different combinations of the FTR model input parameters.
    • First study on how to extend the above test by checking also the Emprirical CDF. The open issue is that while other statistical tests can rely on the GNU Scientific Library to compute the CDF of the distribution and then compare it with the ECDF, the FTR model is not implemented in the GSL. Therefore, the most promising approach at the moment is to generate a set of ECDFs in MATLAB, export them and then compare them to the ECDF computed in ns-3.
  • Week 3
    • Further study of ECDF test for the FTR fading model. Consistency checks with the original paper led to finding typos in the closed form CDF and PDF equations. Currently exchanging mails with the authors to fix them and have a correct reference.
    • Definition and implementation of the computation of the combined array and beamforming gains in the MimoSpectrumPropagationLossModel class, by defining the CalcBeamformingGain.
  • Week from 4th to the 10th of July
    • No major work on the project due to participation at the "Lipari School on Advanced Networking Systems"
  • Week 4
    • Setup of a SEM script for the benchmarking of the code, in order to compare the progressive updates which will be introduced with this project. The script makes use of the NR module, using as a baseline the simulation script "cttc-nr-demo". In order to do this, experimental support for CMake versions of ns-3 (3.36+) has been added to SEM. Initial benchmark of the baseline ns-3 versus relevant parameters, i.e., number of antenna elements at the nodes, number of simulation nodes (gNBs and UEs), update period of the channel matrices and system bandwidth.
    • Testing and bugfixing of the computation of the combined array and beamforming gains in the MimoSpectrumPropagationLossModel. Defined the test ArrayResponseTest, which checks the gain along a given direction for different configurations of antenna arrays and related antenna elements.
  • Week 5
    • Further testing and bugfixing of the computation of the combined array and beamforming gains in the MimoSpectrumPropagationLossModel. Fixed an error in the computation of the relative angle between transmitter and receiver.
    • Polishing of the MimoSplmTestSuite and MimoSpectrumPropagationLossModel classes by correcting typos, using more descriptive variable names and improving the documentation.
    • Initial work on the Eigen port of the ThreeGppChannelModel and PhasedArrayModel classes. Implementation of the Eigen support in the CMake build system as an optional external library. The possible presence of Eigen is then exposed to the source files by conditionally declaring the preprocessor definition "HAVE_EIGEN3".
    • Import (i.e., using git cherry-pick) of the channel matrix generation optimizations proposed in MR #897 in the Eigen branch of the GSoC.
  • Week 6
    • Implementation of a uniform interface for both Eigen and STL’s based vectors and matrices. Its aim is to minimize the portion of the code which varies based on Eigen’s availability in the system (dictated by the value of the CMake-defined HAVE_EIGEN3 flag). In particular, this interface has been implemented for the PhasedArrayModel::ComplexVector and the MatrixBasedChannelModel::Complex2DVector data structures.
    • Update of the ThreeGppChannelModel, ThreeGppPropagationLossModel and ThreeGppChannelTestSuite to reflect the above interface implemented for the PhasedArrayModel::ComplexVector and the MatrixBasedChannelModel::Complex2DVector data structures.
    • Creation of a fork of the NR module which introduces the changes needed for supporting Eigen. This is a necessary step for carrying out the benchmarking of the proposed changes, as the simulation script chosen for such purposes requires the NR module.
  • Week 7
    • Benchmarking of the performance improvements brought by all the work up to Week 6.
    • Profiling of the Eigen and performance-related changes, in order to identify possible remaining performance bottlenecks. Thanks to the above changes, the function CalcBeamformingGain now represents the main performance bottleneck.
    • Experimenting possible solutions for speeding up the CalcBeamformingGain function.
    • Setting up the draft MRs concerning the work up to Week 7. In particular, two MRs towards the main development branch gsoc-2022 have been opened. They are related to the simplified channel model (https://gitlab.com/pagmatt/ns-3-dev/-/merge_requests/2) and the Eigen optimizations (https://gitlab.com/pagmatt/ns-3-dev/-/merge_requests/3), respectively. Then, another MR from my development branch gsoc-2022 towards ns-3 mainline, referencing the above MRs, has been opened.