Skip to content

Releases: NVlabs/sionna

v2.0.1

Choose a tag to compare

@gmarcusm gmarcusm released this 01 Apr 15:35
04ddb93

Changes from v2.0.0 to v2.0.1

New Features

  • Added HARQ-IR support to LDPC5GEncoder and LDPC5GDecoder with per-redundancy-version rate-matching (TS 38.212) (PR #944)(thanks to @rabihchrabieh)

Bug Fixes

  • Fixed batch dimension corruption in LDPCBPDecoder, ViterbiDecoder, BCJRDecoder, TurboDecoder, and TurboEncoder for multi-dimensional inputs
  • Fixed float cast in RandomInterleaver and Turbo3GPPInterleaver inverse permutation
  • Fixed test data corruption from in-place-updated numpy buffers in test_3gpp_lsp.py

Improvements

  • Remove TF legacy reshapes and dtypes
  • Switched all FEC index tensors from int64 to int32

Tests

  • Relaxed torch.allclose tolerance to atol=1e-5 in signal compile tests

CI

  • Added DCO sign-off check workflow for pull requests
  • Upgraded CodeQL workflow to actions/checkout@v4 and codeql-action@v4

Documentation

  • Major update to 5G_Channel_Coding_Polar_vs_LDPC_Codes.ipynb notebook
  • Fixed non-deterministic bibliography back-references in parallel doc builds
  • Added list_registry Sphinx extension needed for sionna-rt documentation

v2.0.0

Choose a tag to compare

@gmarcusm gmarcusm released this 19 Mar 12:24
ac6c281

Sionna PHY and SYS were migrated to PyTorch. TensorFlow is not a dependency anymore.
The API has remained unaffected by this migration, i.e., code that uses only Sionna components should run without any changes. Type annotations are now used consistently throughout the entire codebase. All docstrings have been rewritten and now include short code examples.

Sionna PHY

  • Config​ has a new device​​ property that controls which the default device is used for computation
  • Object​ now inherits from torch.nn.modules.module.Module
  • Block​ has a new device​​ property that controls which device it uses for computation
  • LDPCBPDecoder​ has a new tensor structure (batch-dim first); no ragged tensors anymore
  • All tutorial notebooks have been updated to work with Sionna 2.0 and produce identical results
  • Many new unit tests
  • All neural network weights used in the tutorial notebooks have been recomputed

Sionna SYS

  • All tutorial notebooks have been updated to work with Sionna 2.0 and produce identical results
  • New unit tests

Migration Guide

  • The website has a new layout and references to the API docs or tutorials must be updated
  • Migrating existing TensorFlow-based Sionna 1.x code to PyTorch can be easily done with modern agentic coding tools. It is generally sufficient to provide the source code of the new Block​ together with simple migration instructions as prompt, e.g., “Migrate this code from TensorFlow to PyTorch so that it fits the new Sionna Block structure."
  • Existing model weights from TensorFlow will need to be recomputed in PyTorch
  • The GPU and memory configuration for TensorFlow is not needed anymore
  • Since PyTorch is pickier about device placement of tensors, you need to make sure to copy tensors to CPU before they can be used in plots, etc

Sionna RT

  • Version increased to 2.0 to account for the PyTorch migration of PHY and SYS

v1.2.2

Choose a tag to compare

@gmarcusm gmarcusm released this 19 Mar 11:13
2abb38c

v1.2.1

Choose a tag to compare

@gmarcusm gmarcusm released this 15 Oct 23:45
20d2bca

Sionna PHY

  • Fixes a bug in the transport block size computation (calculate_tb_size)

Sionna SYS

  • Fixes a bug in get_pathloss (Github issue #1022)

v1.2.0

Choose a tag to compare

@gmarcusm gmarcusm released this 19 Sep 16:38
302c5b8

Ray Tracing

  • Diffraction Support: Adds support for diffraction in both path computation and radio maps. Flags are available to enable or disable edge diffraction and diffraction in the lit region. A good starting point to experiment with this new feature is the tutorial on diffraction.
  • Enhanced Path Solver: The path solver has been improved to find more paths while simultaneously being more memory efficient.
  • Scene Previewer Updates:
    • Added a feature to obtain the coordinates of a point by clicking on the preview widget.
    • Introduced a slider to select the clipping offset when clipping is enabled.
  • Upgraded Dependencies: Sionna RT now uses Mitsuba 3.7 and Dr.Jit 1.1, benefiting from various optimizations that result in faster and more memory-efficient ray tracing.
  • Colormap Customization: Adds a feature to set the colormap used for visualizing radio maps, both in preview and rendering.
  • Python Support: Support for Python 3.8 and 3.9 has been discontinued.

v1.1.0

Choose a tag to compare

@gmarcusm gmarcusm released this 05 Jun 17:13
e276f8a

Ray Tracing

  • Adds a feature to compute radio maps for arbitrary meshes, allowing, for example, the computation of radio maps for arbitrary terrains
  • Fixes issues preventing the loading of scenes using custom radio materials (#879)
  • Adds a feature to clone scene objects
  • Adds utilities to load and transform meshes
  • Fixes an issue that caused nan values when computing gradients with respect to radio maps (#886)
  • Integrates pull request 19, which fixes a typo in the Primer on Electromagnetics
  • Integrates pull request 4, which adds a feature to scale objects by different factors in each dimension

v1.0.2

Choose a tag to compare

@gmarcusm gmarcusm released this 03 Apr 15:31
d1fc7f4

RT

  • Fixes angle of arrival computation issue (#809, NVlabs/sionna-rt#5)
  • Fixed an occasional issue with the ordering consistency of paths between the tensors.

PHY

  • Adds deprecation warnings to LDPCBPDecoder and LDPC5GDecoder

v1.0.1

Choose a tag to compare

@gmarcusm gmarcusm released this 18 Mar 17:51
9ca7cc7

Sionna 1.0

Sionna was initially developed as an internal tool for our 6G research. Three years ago, we decided to share it with the community as an open-source project. Since then, it has surpassed our expectations in terms of popularity and adoption. Sionna has proven to be a reliable and robust framework for link-level simulation and ray tracing, supporting hundreds of research projects, academic courses, and technology demonstrations. With this milestone, we proudly introduce Sionna 1.0, marking its maturity and our long-term commitment to its continued development and support.

Sionna 1.0 introduces several breaking changes to enhance maintainability and usability and to establish a robust foundation for future development:

Sionna RT

Sionna RT has been rewritten from scratch using Dr.Jit and Mitsuba 3. It is available as a stand-alone package and provides order-of-magnitude speed-ups for path and radio-map computation. Scenes can now be edited after being loaded and objects easily added or removed. We have enabled support for refraction on top of specular and diffuse reflections. Diffraction and reconfigurable intelligent surfaces (RIS) will be added in future releases. Users relying on these features should use the latest 0.19 release. Sionna RT is now compatible with other tensor libraries, such as Numpy, PyTorch, TensorFlow, and JAX. Its new modular architecture makes it easier for developers to add new features, such as novel radio materials, path or radio-map solvers.

Among the most significant changes in Sionna RT are that propagation paths and coverage maps are no longer computed by the methods scene.compute_paths and scene.coverage_map, respectively. Instead, we have introduced the PathSolver and RadioMapSolver classes which carry out these computations:

scene = load_scene(...)

# ...

# Legacy
paths = scene.compute_paths()
cm = scene.coverage_map()

# Sionna 1.0
p_solver = PathSolver()
paths = p_solver(scene)

rm_solver = RadioMapSolver()
rm = rm_solver(scene)

Sionna PHY

All of Sionna (apart from the ray-tracing features) has been moved to the new Sionna PHY module. We have introduced the Sionna Block, from which most components inherit. This offers more flexibility in the API design compared to the previously used Keras Layer. The way matrix inversion and the generation of correlated random vectors are handled was changed to ensure that everything runs in graph mode with XLA so that the xla_compat-flag could be removed.

When porting legacy code to the new Sionna, two major changes need to be made. First, all imports must be from sionna.phy instead of sionna:

# Legacy
from sionna.channel import AWGN

# Sionna 1.0
from sionna.phy.channel import AWGN

Second, Sionna blocks that previously accepted a tuple of tensors as argument now expect multiple arguments instead:

# Legacy
y = awgn([x, no])

# Sionna 1.0
y = awgn(x, no)

We invite developers to have a look at the API Documentation for block-specific changes.

Sionna SYS

Sionna SYS is Sionna's new system-level simulation module. It is based on a physical layer abstraction that computes the block error rate (BLER) from the post-equalization signal-to-interference-plus-noise-ratio (SINR). It further includes Layer-2 functionalities, such as link adaption (LA) for adaptive modulation and coding scheme (MCS) selection, downlink and uplink power control, and user scheduling. Sionna SYS is fully compatible with the rest of Sionna and works with ray-traced as well as stochastic channels. Most components are differentiable and run in XLA mode. The best way to get started is to explore the dedicated tutorials.

v0.19.2

Choose a tag to compare

@gmarcusm gmarcusm released this 25 Feb 12:54
3ec2138

Ray Tracing

  • Fix issue in the coverage map solver related to RIS (#735)

v0.19.1

Choose a tag to compare

@gmarcusm gmarcusm released this 29 Nov 17:17
63519e7

OFDM

  • Fixes missing assertion in KroneckerPilotPattern (#623)

Ray tracing

  • Remove property Scene.mi2sionna_shift_obj_id
  • Fixes #626
  • Fixes #621

Misc

  • Fixes typos in documentation (#639)
  • Update requirements: Matplotlib >3.5.3 and Mitsuba >=3.2.0 <3.6.0 are required