Releases: NVlabs/sionna
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.
v0.19.2
v0.19.1
v0.19.0
Ray Tracing
-
New notebook: Tutorial on Coverage Maps.
It computes coverage maps for different precoding vectors, visualizes metrics like path gain, received signal strength (RSS), and signal-to-interference-plus-noise ratio (SINR), estimates user-to-transmitter associations, and samples user positions for the generation of channel impulse responses -
Scene extended with bandwidth and temperature properties
-
Transmitter extended with a transmit power property in Watt and dBm
-
CoverageMap extended to compute SINR maps and RSS maps, in addition to the already existing path gain maps
-
CoverageMap extended to compute and visualize cell-to-transmitter association
-
CoverageMap extended to compute and visualize the CDF of path gain, RSS, or SINR
-
show() property of CoverageMap extended to visualize SINR and RSS maps in addition to the existing path gain
maps -
Adds feature to Scene.coverage_map to execute multiple runs of shoot-and-bounce to compute coverage maps. This allows computing coverage maps using large number of rays despite memory limitation
-
Breaking Change:
CoverageMap.as_tensor()replaced by path_gain, rss, and sinr properties
Config
-
Pseudo-random generators can be configured from the config module to ensure reproducible results, for Python, Numpy and TensorFlow
-
New config.seed property to configure all Python, Numpy and TensorFlow pseudo-random generator seeds at once
OFDM
- Adds feature to prepend cyclic prefixes to OFDM symbols of different lengths (see OFDMModulator and the related PR #465)
Precoding
- Adds feature to produce Discrete Fourier Transform (DFT) grid of beams for uniform linear and rectangular MIMO antenna arrays
Fixes
-
Addresses the significant increase in memory footprint for path and coverage map computations introduced in version 0.18
-
Fixes the skewness of the UTs position distribution toward the center of the sector generated via drop_uts_in_sector, ensuring a uniform distribution across the sector
-
Fixes ray leakage in coverage map computation (#564)
-
Fixes the application of precoding vector in coverage map computation in the presence of multiple transmitters
-
Fixes object IDs issues in ray tracer: Scene objects now always have contiguous indices starting from 0
-
Fixes missing scenes in Docker (#597)
v0.18.0
Ray tracing
- Adds support for reconfigurable intelligent surfaces (RIS). Exact paths as well as coverage maps can be computed.
- New “Tutorial on Reconfigurable Intelligent Surfaces” notebook
- New section in the EM Primer on Reconfigurable Intelligent Surfaces
Misc
- Fixes scaling of the antenna positions of planar arrays with the frequency (#470, #400)
- Fixes support of non-CUDA GPUs in Sionna RT (#464)
- Fixes an issue accessing the positions of SceneObjects (#449)
- Fixes deprecated matplotlib function used in coverage maps (#444)
- Fixes typos in the “5G NR PUSCH Tutorial Notebook”
- Fixes a bug in the detection of wedges on CPU (#347, contribution by @AinurZiga)
- Fixes crash of mobility notebook in Google Colab (#422)
- Updates to the Makefile and Dockerfile (#309)
v0.17.0
Ray tracing
- Every scene object has a now a velocity vector which is used to compute per-path Doppler shifts. These are used by
Paths.apply_doppler()to compute time evolution of channel impulse responses. - Every scene object has now a
positionandorientationproperty that can be modified after a scene is loaded. - A new tutorial notebook “Mobility in Sionna RT” demonstrates various ways how the new features can be used to simulate mobility.
Misc
- Fixes typos in the 5G NR PUSCH Tutorial (#384)
- Fixes typos in the Neural Receiver Tutorial (#406, contribution by @pablosreyero)
- Fixes typos in Tutorial Notebooks 1 and 2 (#355, contribution by @LateNightIceCream)
- Fixes a bug in the
Demapperfor very high SNR (#327, contribution by @japm48) - Fixes an issue in
sample_positions()for coverage maps (#376) - Removes warnings related to casting from
tf.floattotf.complex(#348) - Fixes a bug in
theta_phi_from_unit_vec()so that gradients are always well defined