You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/source/pynq_remote.rst
+17-6Lines changed: 17 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,22 +3,30 @@
3
3
PYNQ.remote
4
4
===========
5
5
6
-
.. note::
7
-
PYNQ.remote is currently in **beta**. Active development is ongoing, and some PYNQ features may have limited support. The API is subject to change in future releases. For more information on currently supported functionality and our development roadmap, see the :ref:`roadmap`.
8
-
9
6
.. toctree::
10
7
:maxdepth:1
11
8
:caption:Contents
12
9
13
10
pynq_remote/quickstart
14
11
pynq_remote/image_build
15
12
pynq_remote/remote_device
16
-
pynq_remote/cppindex
13
+
pynq_remote/cpp_index
14
+
pynq_remote/status
17
15
pynq_remote/env_variables
18
-
pynq_remote/roadmap
19
16
20
17
PYNQ.remote is an extension to the PYNQ framework that enables remote control of AMD's FPGA-based devices. By moving the Python API to the host and communicating with the target device via gRPC, PYNQ.remote brings powerful new deployment, integration, and scalability features to PYNQ users, while preserving the familiar PYNQ user experience.
21
18
19
+
**Introducing PYNQ.remote**
20
+
21
+
PYNQ.remote provides two key benefits to PYNQ. First, by moving the Python API to the host machine we create opportunities to integrate PYNQ into host-based hardware and software workflows. This allows users to take full advantage of the Python ecosystem on the host, while still controlling AMD's adaptive SoC devices remotely. This is particularly useful for applications that require high-performance computing, such as AI inference, data processing, or real-time visualisations. This allows the host to handle complex computations, while the FPGA can focus on specialised tasks.
22
+
23
+
Second, by using a minimal Petalinux image the target device software requirements are reduced to a PYNQ meta-layer and a minimal root file system. Additionally, we have implemented a PYNQ C++ API called `PYNQ.cpp` that runs on the target device, which provides a low-level interface to the hardware. Together, this provides a greatly reduced image size (small enough to fit on a RAM disk) and allows deployment with a minimal software footprint. This is ideal for when resources are constrained, such as edge computing or IoT applications.
24
+
25
+
The diagram below illustrates the key differences between Classic PYNQ and PYNQ.remote.
26
+
27
+
.. image:: ./images/pynqremote_block_diagram.png
28
+
:align:center
29
+
22
30
**Key Features**
23
31
24
32
* Offload the Python API to your host machine, reducing on-target resource requirements.
@@ -35,4 +43,7 @@ PYNQ.remote is an extension to the PYNQ framework that enables remote control of
35
43
36
44
**Getting Started**
37
45
38
-
To get started with PYNQ.remote, follow the quickstart guide in :ref:`quickstart`. This will walk you through setting up your environment, deploying the remote image, and running your first remote application.
46
+
To get started with PYNQ.remote, follow the :ref:`quickstart` guide. This will walk you through setting up your environment, deploying the remote image, and running your first remote application.
47
+
48
+
.. note::
49
+
PYNQ.remote is currently in **beta**. Active development is ongoing, and some PYNQ features may have limited support. The API is subject to change in future releases. For more information on currently supported functionality see :ref:`status`.
**PYNQ.cpp** is a C++ hardware abstraction library that provides a C++ equivalent to PYNQ's Python API for AMD adaptive SoC platforms.
16
+
It delivers the same low-level interface capabilities as PYNQ for interacting with the FPGA fabric, memory management, and device operations.
17
+
18
+
Like PYNQ's Python API, PYNQ.cpp is part of the PYNQ ecosystem and is specifically designed to work with PYNQ.remote, which allows remote access to PYNQ devices over a network.
19
+
PYNQ.remote uses gRPC to communicate with PYNQ devices, allowing remote management of FPGA resources and memory operations.
20
+
PYNQ.remote images use a gRPC server to interact with PYNQ.cpp, which provides the necessary C++ backend functionality equivalent to what PYNQ's Python API offers.
21
+
22
+
Because it exists as a standalone C++ library, PYNQ can be used independently of PYNQ.remote. This allows developers to create custom low-level C++ applications that interact with AMD adaptive SoC platforms using familiar PYNQ concepts.
**PYNQ.cpp** is a C++ hardware abstraction library for AMD adaptive SoC platforms.
16
-
It provides a low-level interface to interact with the FPGA fabric, memory management, and device operations.
17
-
It is part of the PYNQ ecosystem, specifically designed to work with PYNQ.remote, which allows remote access to PYNQ devices over a network.
18
-
PYNQ.remote uses gRPC to communicate with PYNQ devices, allowing remote management of FPGA resources and memory operations.
19
-
PYNQ.remote images use a gRPC server to interact with PYNQ.cpp, which provides the necessary C++ backend functionality.
20
-
21
-
PYNQ.cpp is designed to be used in C++ applications running on AMD adaptive SoC platforms, providing a low-level interface to reprogram the FPGA fabric and manage memory.
22
-
It is built on top of the Xilinx Runtime (XRT) library, which provides access to the FPGA Manager and other hardware resources.
23
-
Because it exists as a standalone C++ library, it can be used independently of PYNQ.remote, allowing developers to create custom low-level applications that interact with PYNQ devices.
24
-
25
-
Key Features
26
-
------------
27
-
28
-
* Load FPGA bitstreams via the FPGA Manager device driver.
In Linux and macOS shells, you can set environment variables using the `export` command. Make sure there are no spaces around the `-` sign.
21
+
In Linux and macOS shells, you can set environment variables using the ``export`` command. Make sure there are no spaces around the ``=`` sign.
22
22
23
23
.. code-block:: bash
24
24
25
-
export PYNQ_REMOTE_DEVICES-"192.168.2.99"
25
+
export PYNQ_REMOTE_DEVICES="192.168.2.99"
26
26
27
27
The code above sets the environment variable for the current shell session. If you use a new terminal or restart your computer you will need to set it again.
28
28
29
-
This can be made easier in one of two ways. First, you can add the command to a shell file local to your working directory, such as `.env`. Each time you start a new terminal session, you can ``source`` this file to set the environment variable:
30
-
31
-
.. code-block:: bash
32
-
33
-
source .env
34
-
35
-
Alternatively, you can add the command to your shell's configuration file (e.g., `.bashrc`, `.bash_profile`, `.zshrc`), which will set the variable automatically each time you open a new terminal session:
36
-
37
-
To check if the variable is set, you can use the `echo` command:
38
-
39
-
.. code-block:: bash
40
-
41
-
echo$PYNQ_REMOTE_DEVICES
42
-
43
-
44
29
Setting an Environment Variable in Windows
45
30
------------------------------------------
46
31
47
-
In Windows, there are several ways to set environment variables, depending on which shell you are using. For Command Prompt (cmd.exe), you can use the `set` command:
32
+
In Windows, there are several ways to set environment variables, depending on which shell you are using. For Command Prompt (`cmd.exe`), you can use the ``set`` command:
48
33
49
34
.. code-block:: powershell
50
35
51
-
set PYNQ_REMOTE_DEVICES-192.168.2.99
36
+
set PYNQ_REMOTE_DEVICES=192.168.2.99
52
37
53
38
For Powershell, you can use the ``$env:`` syntax:
54
39
55
40
.. code-block:: powershell
56
41
57
-
$env:PYNQ_REMOTE_DEVICES-"192.168.2.99"
42
+
$env:PYNQ_REMOTE_DEVICES="192.168.2.99"
58
43
59
44
Setting an Environment Variable in a Python Virtual Environment
If you are using a Python virtual environment, you can set the environment variable in the `activate` script of your virtual environment. This way, the variable will be set automatically each time you activate the virtual environment.
47
+
If you are using a Python virtual environment, you can set the environment variable in the ``activate`` script of your virtual environment. This way, the variable will be set automatically each time you activate the virtual environment.
63
48
64
-
For example, if you are using a virtual environment named `venv`, you can add the code above in the following directories:
49
+
For example, if you are using a virtual environment named ``venv``, you can add the code above in the following directories:
65
50
66
-
* For Linux/macOS: Add the code above to the `venv/bin/activate`
67
-
* For Windows: If using Command Prompt, add the code to `venv/Scripts/activate.bat`
68
-
* For Windows: If using PowerShell, add the following line to `venv/Scripts/Activate.ps1`
51
+
* For Linux/macOS: Add the code above to the ``venv/bin/activate``
52
+
* For Windows: If using Command Prompt, add the code to ``venv/Scripts/activate.bat``
53
+
* For Windows: If using PowerShell, add the following line to ``venv/Scripts/Activate.ps1``
Copy file name to clipboardExpand all lines: docs/source/pynq_remote/image_build.rst
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,9 +10,9 @@ Unlike Classic PYNQ, there are no pre-built PYNQ.remote SD card images available
10
10
11
11
**Prerequisites:**
12
12
13
+
- Host machine with Ubuntu 2022.4 OS installed
13
14
- AMD Tools: `Vivado, Vitis, and Petalinux version 2024.1 <https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/2024-1.html>`_
- Supported Linux distribution (see `UG973 <https://docs.amd.com/r/2024.1-English/ug973-vivado-release-notes-install-license/Supported-Operating-Systems>`_)
0 commit comments