Releases: NVlabs/sionna
Release list
v2.0.1
Changes from v2.0.0 to v2.0.1
New Features
- Added HARQ-IR support to
LDPC5GEncoderandLDPC5GDecoderwith per-redundancy-version rate-matching (TS 38.212) (PR #944)(thanks to @rabihchrabieh)
Bug Fixes
- Fixed batch dimension corruption in
LDPCBPDecoder,ViterbiDecoder,BCJRDecoder,TurboDecoder, andTurboEncoderfor multi-dimensional inputs - Fixed float cast in
RandomInterleaverandTurbo3GPPInterleaverinverse 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
int64toint32
Tests
- Relaxed
torch.allclosetolerance toatol=1e-5in signal compile tests
CI
- Added DCO sign-off check workflow for pull requests
- Upgraded CodeQL workflow to
actions/checkout@v4andcodeql-action@v4
Documentation
- Major update to
5G_Channel_Coding_Polar_vs_LDPC_Codes.ipynbnotebook - Fixed non-deterministic bibliography back-references in parallel doc builds
- Added
list_registrySphinx extension needed forsionna-rtdocumentation
v2.0.0
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 computationObject now inherits from torch.nn.modules.module.ModuleBlock has a newdevice property that controls which device it uses for computationLDPCBPDecoder 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
v1.2.1
v1.2.0
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
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
nanvalues 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
v1.0.1
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.