Skip to content

Commit

Permalink
Release v0.16.2
Browse files Browse the repository at this point in the history
Signed-off-by: The Sionna Team <[email protected]>
Merged-by: Guillermo Marcus <[email protected]>

Co-authored-by: Jakob Hoydis <[email protected]>
Co-authored-by: Fayçal Ait-Aoudi <[email protected]>
Co-authored-by: Sebastian Cammerer <[email protected]>
Co-authored-by: Guillermo Marcus <[email protected]>
Co-authored-by: Merlin Nimier-David <[email protected]>
Co-authored-by: Neal Becker <[email protected]>
  • Loading branch information
7 people committed Jan 26, 2024
1 parent 1be7e79 commit 7eb04f4
Show file tree
Hide file tree
Showing 20 changed files with 296 additions and 243 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ In order to run the tutorial notebooks on your machine, you also need [JupyterLa
You can alternatively test them on [Google Colab](https://colab.research.google.com/).
Although not necessary, we recommend running Sionna in a [Docker container](https://www.docker.com).

Sionna requires [TensorFlow 2.10-2.13](https://www.tensorflow.org/install) and Python 3.8-3.11. We recommend Ubuntu 22.04. Earlier versions of TensorFlow may still work but are not recommended because of known, unpatched CVEs.
Sionna requires [TensorFlow 2.10-2.15](https://www.tensorflow.org/install) and Python 3.8-3.11. We recommend Ubuntu 22.04. Earlier versions of TensorFlow may still work but are not recommended because of known, unpatched CVEs.

To run the ray tracer on CPU, [LLVM](https://llvm.org) is required by DrJit. Please check the [installation instructions for the LLVM backend](https://drjit.readthedocs.io/en/latest/firststeps-py.html#llvm-backend).

Expand All @@ -38,7 +38,7 @@ On macOS, you need to install [tensorflow-macos](https://github.com/apple/tensor
```
>>> import sionna
>>> print(sionna.__version__)
0.16.1
0.16.2
```

3.) Once Sionna is installed, you can run the [Sionna "Hello, World!" example](https://nvlabs.github.io/sionna/examples/Hello_World.html), have a look at the [quick start guide](https://nvlabs.github.io/sionna/quickstart.html), or at the [tutorials](https://nvlabs.github.io/sionna/tutorials.html).
Expand Down Expand Up @@ -97,7 +97,7 @@ We recommend to do this within a [virtual environment](https://docs.python.org/3
```
>>> import sionna
>>> print(sionna.__version__)
0.16.1
0.16.2
```

## License and Citation
Expand Down
33 changes: 23 additions & 10 deletions doc/source/_ext/made_with_sionna.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,52 +70,67 @@ def run(self):
pass

html_str = f'<embed>' \
f'<h2 style="margin-bottom:0; font-size:19px;">{title}</h2>' \
f'<h4 style="margin-bottom:0; font-size:19px;">{title}</h4>' \
f'<i style="margin-bottom:0; font-size:16px;">{authors}</i>' \
f'<p style="margin-top: 1; margin-bottom:0; padding-top:0;">' \
f'Released in {year} and based on Sionna v{version}.</p>' \
f'<div style="margin-top:2; margin-bottom:10px;">'\
f'<table>'

is_first_link = True
if link_arxiv is not None:
html_str += f'<td style="padding: 4px 0px;">'\
f'<a href="{link_arxiv}" style="vertical-align:text-bottom">'\
f'<img alt="Arxiv logo" src="_static/arxiv_logo.png" ' \
f'style="width: 40px; min-width: 40px"></a>'\
f'</td><td style="padding: 4px 4px;">'\
f'</td><td style="padding: 4px;">'\
f'<a href="{link_arxiv}" style="vertical-align:text-bottom">'\
f'Read on arXiv</a></td>'\
f'Read on arXiv</a></td>'
is_first_link = False

if link_pdf is not None:
html_str += f'<td class="wy-breadcrumbs-aside"' \
f' style="padding: 0 0px;">'\
f' style="padding: 0 0 0 {0 if is_first_link else 30}px;">'\
f'<a href="{link_pdf}" style="vertical-align:text-top">'\
f'<i class="fa fa-file" style="font-size:19px;"></i>'\
f'</a></td>'\
f'<td style="padding: 4px;">'\
f'<a href="{link_pdf}" style="vertical-align:text-bottom">'\
f'<i class="fa fa-file" style="font-size:24px;"></i>'\
f' View Paper</a></td>'
is_first_link = False

if link_github is not None:
html_str += f'<td class="wy-breadcrumbs-aside"' \
f' style="padding: 0 30px;">'\
f' style="padding: 0 0 0 {0 if is_first_link else 30}px;">'\
f'<a href="{link_github}" style="vertical-align:text-bottom">'\
f'<i class="fa fa-github" style="font-size:24px;"></i>'\
f'</a></td>'\
f'<td style="padding: 4px;">'\
f'<a href="{link_github}" style="vertical-align:text-bottom">'\
f' View on GitHub</a></td>'
is_first_link = False

if link_code is not None:
html_str += f'<td class="wy-breadcrumbs-aside"' \
f' style="padding: 0 30px;">'\
f' style="padding: 0 0 0 {0 if is_first_link else 30}px;">'\
f'<a href="{link_code}" style="vertical-align:text-bottom">'\
f'<i class="fa fa-code" style="font-size:24px;"></i>'\
f'</a></td>'\
f'<td style="padding: 4px;">'\
f'<a href="{link_code}" style="vertical-align:text-bottom">'\
f' View Code</a></td>'
is_first_link = False

if link_colab is not None:
html_str += f'<td style="padding: 0px 0px;">'\
html_str += f'<td style="padding: 0 0 0 {0 if is_first_link else 30}px;">'\
f'<a href="{link_colab}"' \
f'style="vertical-align:text-bottom">'\
f'<img alt="Colab logo" src="_static/colab_logo.svg" '\
f'style="width: 40px; min-width: 40px"></a></td>'\
f'<td style="padding: 4px 0px;">'\
f'<a href="{link_colab}" style="vertical-align:text-bottom">'\
f'Run in Google Colab</a></td>'
is_first_link = False

html_str += f'</table></div>'\
f'<p>{abstract}</p></embed>'
Expand All @@ -133,5 +148,3 @@ def setup(app):
'parallel_read_safe': True,
'parallel_write_safe': True,
}


14 changes: 7 additions & 7 deletions doc/source/api/rt_scene.rst.txt
Original file line number Diff line number Diff line change
Expand Up @@ -138,31 +138,31 @@ compute_paths
.. autofunction:: sionna.rt.Scene.compute_paths

trace_paths
-------------
-----------
.. autofunction:: sionna.rt.Scene.trace_paths

compute_fields
-------------
--------------
.. autofunction:: sionna.rt.Scene.compute_fields

coverage_map
-------------
------------
.. autofunction:: sionna.rt.Scene.coverage_map

load_scene
----------
.. autofunction:: sionna.rt.load_scene

preview
--------
-------
.. autofunction:: sionna.rt.Scene.preview

render
------
.. autofunction:: sionna.rt.Scene.render

render_to_file
---------------
--------------
.. autofunction:: sionna.rt.Scene.render_to_file

Example Scenes
Expand Down Expand Up @@ -218,13 +218,13 @@ double_reflector
(`Blender file <https://drive.google.com/file/d/1K2ZUYHPPkrq9iUauJtInRu7x2r16D1zN/view?usp=share_link>`__)

triple_reflector
-----------------
----------------
.. autodata:: sionna.rt.scene.triple_reflector
:annotation:
(`Blender file <https://drive.google.com/file/d/1l95_0U2b3cEVtz3G8mQxuLxy8xiPsVID/view?usp=share_link>`__)

Box
----
---
.. autodata:: sionna.rt.scene.box
:annotation:
(`Blender file <https://drive.google.com/file/d/1pywetyKr0HBz3aSYpkmykGnjs_1JMsHY/view?usp=share_link>`__)
6 changes: 3 additions & 3 deletions doc/source/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ You can alternatively test them on `Google Colab <https://colab.research.google.
Although not necessary, we recommend running Sionna in a `Docker container <https://www.docker.com>`_.

.. note::
Sionna requires `TensorFlow 2.10-2.13 <https://www.tensorflow.org/install>`_ and Python 3.8-3.11.
Sionna requires `TensorFlow 2.10-2.15 <https://www.tensorflow.org/install>`_ and Python 3.8-3.11.
We recommend Ubuntu 22.04.
Earlier versions of TensorFlow may still work but are not recommended because of known, unpatched CVEs.

Expand Down Expand Up @@ -39,7 +39,7 @@ e.g., using `conda <https://docs.conda.io>`_. On macOS, you need to install `ten
>>> import sionna
>>> print(sionna.__version__)
0.16.1
0.16.2
3.) Once Sionna is installed, you can run the `Sionna "Hello, World!" example <https://nvlabs.github.io/sionna/examples/Hello_World.html>`_, have a look at the `quick start guide <https://nvlabs.github.io/sionna/quickstart.html>`_, or at the `tutorials <https://nvlabs.github.io/sionna/tutorials.html>`_.

Expand Down Expand Up @@ -111,4 +111,4 @@ e.g., using `conda <https://docs.conda.io>`_.
>>> import sionna
>>> print(sionna.__version__)
0.16.1
0.16.2
36 changes: 22 additions & 14 deletions doc/source/made_with_sionna.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,33 @@

We love to see how Sionna is used by other researchers! For this reason, you find below links to papers whose authors have also published Sionna-based simulation code.


Community-made tools
--------------------

.. H3 headers are not displayed (CSS rule), so we use H4 below instead.
.. Dummy H3 header for section nesting consistency.
.
*

.. made-with-sionna::
:title: OpenStreetMap to Sionna Scene in Python
:authors: Manoj Kumar Joshi
:year: January 2024
:version: 0.15
:link_github: https://github.com/manoj-kumar-joshi/sionna_osm_scene
:abstract: This Jupyter notebook shows how to create a Sionna scene (Mitsuba format) in Python code from OpenStreetMap data. Buildings are extruded and meshes for roads are created in a region specified by the user. It is an alternative to the Blender-based workflow presented <a href="https://youtu.be/7xHLDxUaQ7c">in this video</a>.


List of Projects
----------------

If you want your paper and code be listed here, please send an email to `[email protected] <mailto:[email protected]>`_ with links to the paper (e.g., `arXiv <https://arxiv.org>`_) and code repository (e.g., `GitHub <https://github.com>`_).

Graph Neural Networks for Enhanced Decoding of Quantum LDPC Codes
*****************************************************************
.
*

.. made-with-sionna::
:title: Graph Neural Networks for Enhanced Decoding of Quantum LDPC Codes
:authors: Anqi Gong, Sebastian Cammerer, Joseph M. Renes
Expand All @@ -20,8 +40,6 @@ Graph Neural Networks for Enhanced Decoding of Quantum LDPC Codes
:link_github: https://github.com/gongaa/Feedback-GNN
:abstract: In this work, we propose a fully differentiable iterative decoder for quantum low-density parity-check (LDPC) codes. The proposed algorithm is composed of classical belief propagation (BP) decoding stages and intermediate graph neural network (GNN) layers. Both component decoders are defined over the same sparse decoding graph enabling a seamless integration and scalability to large codes. The core idea is to use the GNN component between consecutive BP runs, so that the knowledge from the previous BP run, if stuck in a local minima caused by trapping sets or short cycles in the decoding graph, can be leveraged to better initialize the next BP run. By doing so, the proposed decoder can learn to compensate for sub-optimal BP decoding graphs that result from the design constraints of quantum LDPC codes. Since the entire decoder remains differentiable, gradient descent-based training is possible. We compare the error rate performance of the proposed decoder against various post-processing methods such as random perturbation, enhanced feedback, augmentation, and ordered-statistics decoding (OSD) and show that a carefully designed training process lowers the error-floor significantly. As a result, our proposed decoder outperforms the former three methods using significantly fewer post-processing attempts.

Sionna RT: Differentiable Ray Tracing for Radio Propagation Modeling
********************************************************************
.. made-with-sionna::
:title: Sionna RT: Differentiable Ray Tracing for Radio Propagation Modeling
:authors: Jakob Hoydis, Fayçal Aït Aoudia, Sebastian Cammerer, Merlin Nimier-David, Nikolaus Binder, Guillermo Marcus, Alexander Keller
Expand All @@ -33,8 +51,6 @@ Sionna RT: Differentiable Ray Tracing for Radio Propagation Modeling
:abstract: Sionna is a GPU-accelerated open-source library for link-level simulations based on TensorFlow. Its latest release (v0.14) integrates a differentiable ray tracer (RT) for the simulation of radio wave propagation. This unique feature allows for the computation of gradients of the channel impulse response and other related quantities with respect to many system and environment parameters, such as material properties, antenna patterns, array geometries, as well as transmitter and receiver orientations and positions. In this paper, we outline the key components of Sionna RT and showcase example applications such as learning of radio materials and optimizing transmitter orientations by gradient descent. While classic ray tracing is a crucial tool for 6G research topics like reconfigurable intelligent surfaces, integrated sensing and communications, as well as user localization, differentiable ray tracing is a key enabler for many novel and exciting research directions, for example, digital twins.


DUIDD: Deep-Unfolded Interleaved Detection and Decoding for MIMO Wireless Systems
*********************************************************************************
.. made-with-sionna::
:title: DUIDD: Deep-Unfolded Interleaved Detection and Decoding for MIMO Wireless Systems
:authors: Reinhard Wiesmayr, Chris Dick, Jakob Hoydis, Christoph Studer
Expand All @@ -44,8 +60,6 @@ DUIDD: Deep-Unfolded Interleaved Detection and Decoding for MIMO Wireless System
:link_github: https://github.com/IIP-Group/DUIDD
:abstract: Iterative detection and decoding (IDD) is known to achieve near-capacity performance in multi-antenna wireless systems. We propose deep-unfolded interleaved detection and decoding (DUIDD), a new paradigm that reduces the complexity of IDD while achieving even lower error rates. DUIDD interleaves the inner stages of the data detector and channel decoder, which expedites convergence and reduces complexity. Furthermore, DUIDD applies deep unfolding to automatically optimize algorithmic hyperparameters, soft-information exchange, message damping, and state forwarding. We demonstrate the efficacy of DUIDD using NVIDIA's Sionna link-level simulator in a 5G-near multi-user MIMO-OFDM wireless system with a novel low-complexity soft-input soft-output data detector, an optimized low-density parity-check decoder, and channel vectors from a commercial ray-tracer. Our results show that DUIDD outperforms classical IDD both in terms of block error rate and computational complexity.

Bit Error and Block Error Rate Training for ML-Assisted Communication
*********************************************************************
.. made-with-sionna::
:title: Bit Error and Block Error Rate Training for ML-Assisted Communication
:authors: Reinhard Wiesmayr, Gian Marti, Chris Dick, Haochuan Song, Christoph Studer
Expand All @@ -66,8 +80,6 @@ Bit Error and Block Error Rate Training for ML-Assisted Communication
of the proposed loss functions as well as of SNR deweighting is
shown through simulations in NVIDIA Sionna.

GNNs for Channel Decoding
*************************
.. made-with-sionna::
:title: Graph Neural Networks for Channel Decoding
:authors: Sebastian Cammerer, Jakob Hoydis, Fayçal Aït Aoudia, Alexander Keller
Expand All @@ -78,8 +90,6 @@ GNNs for Channel Decoding
:link_colab: https://colab.research.google.com/github/NVlabs/gnn-decoder/blob/master/GNN_decoder_standalone.ipynb
:abstract: We propose a fully differentiable graph neural network (GNN)-based architecture for channel decoding and showcase competitive decoding performance for various coding schemes, such as low-density parity-check (LDPC) and BCH codes. The idea is to let a neural network (NN) learn a generalized message passing algorithm over a given graph that represents the forward error correction code structure by replacing node and edge message updates with trainable functions.

DL-based Synchronization of NB-IoT
**********************************
.. made-with-sionna::
:title: Deep Learning-Based Synchronization for Uplink NB-IoT
:authors: Fayçal Aït Aoudia, Jakob Hoydis, Sebastian Cammerer, Matthijs Van Keirsbilck, Alexander Keller
Expand All @@ -88,5 +98,3 @@ DL-based Synchronization of NB-IoT
:link_arxiv: https://arxiv.org/pdf/2205.10805.pdf
:link_github: https://github.com/NVlabs/nprach_synch
:abstract: We propose a neural network (NN)-based algorithm for device detection and time of arrival (ToA) and carrier frequency offset (CFO) estimation for the narrowband physical random-access channel (NPRACH) of narrowband internet of things (NB-IoT). The introduced NN architecture leverages residual convolutional networks as well as knowledge of the preamble structure of the 5G New Radio (5G NR) specifications.


110 changes: 55 additions & 55 deletions examples/Neural_Receiver.ipynb

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
tensorflow >=2.10.1, !=2.11.0, <2.14.0 ; sys_platform != "darwin"
tensorflow-macos >=2.10, <2.14.0 ; sys_platform == "darwin"
tensorflow >=2.10.1, !=2.11.0, <2.16.0 ; sys_platform != "darwin"
tensorflow-macos >=2.10, <2.16.0 ; sys_platform == "darwin"
numpy
scipy >=1.6.0
matplotlib
Expand Down
4 changes: 2 additions & 2 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ include_package_data = True
python_requires = >=3.8

install_requires =
tensorflow >=2.10.1, !=2.11.0, <2.14.0 ; sys_platform != "darwin"
tensorflow-macos >=2.10, <2.14.0 ; sys_platform == "darwin"
tensorflow >=2.10.1, !=2.11.0, <2.16.0 ; sys_platform != "darwin"
tensorflow-macos >=2.10, <2.16.0 ; sys_platform == "darwin"
numpy
matplotlib
scipy >=1.6.0
Expand Down
2 changes: 1 addition & 1 deletion sionna/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"""This is the Sionna library.
"""

__version__ = '0.16.1'
__version__ = '0.16.2'

from . import utils
from .constants import *
Expand Down
5 changes: 5 additions & 0 deletions sionna/fec/crc.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,11 @@ def call(self, inputs):
x_crc = tf.matmul(x_exp32, self._g_mat_crc) # calculate crc bits

# take modulo 2 of x_crc (bitwise operations instead of tf.mod)

# cast to tf.int64 first as TF 2.15 has an XLA bug with casting directly
# to tf.int32
x_crc = tf.cast(x_crc, dtype=tf.int64)

x_crc = int_mod_2(x_crc)
x_crc = tf.cast(x_crc, dtype=self.dtype)

Expand Down
Loading

0 comments on commit 7eb04f4

Please sign in to comment.