- Xilinx Runtime versions match with the tool that you created your Vitis AFI with.
- We provide pre-built RPM's for Centos/RHEL/AL2 and instructions for building XRT
- Use the below table as reference to install and use the correct XRT version for your applications.
From 2019.2 toolset onwards, Xilinx XRT architecture has been made more modular. To be able to do so, the new architecture implements a Message Proxy Daemon in user space that interacts with the management library. This also allows us to make calls to the management library without requiring privileged access to the user on the host.
Since this Daemon is only required for the Vitis flow, it is disabled by default on the FPGA Developer AMI as we support both the Vitis and The Vivado flows.
The vitis_runtime_setup.sh
script when called automatically checks for and starts the MPD daemon.
Once MPD Daemon starts up, it loads a 'Default AFI' on all the slots that lets the XOCL driver bind to the device.
Since we only support Device ID 0xF010 for the Vitis workflow, any subsequent loads of AFI's would work seamlessly.
However, after MPD has started if you clear the slot, the cleared slot will show a Device ID 0x1042 and XOCL will not bind.
Therefore, to be able to run your host application again after clearing a slot manually, you will need to restart the MPD service:
sudo systemctl restart mpd
Note that MPD service starts asynchronously, so you might have to wait till all the slots are loaded with the Default AFI before your application can run.
On your custom Runtime AMI, MPD will be enabled by default once you install Xilinx XRT.
On startup, MPD will check if the instance has FPGA's and will load the Default AFI's.
After MPD has started if you clear the slot, the cleared slot will show a Device ID 0x1042 and XOCL will not bind.
Therefore, to be able to run your host application again after clearing a slot manually, you will need to restart the MPD service:
sudo systemctl restart mpd
Note that MPD service starts asynchronously, so you might have to wait till all the slots are loaded with the Default AFI before your application can run.
The Default AFI loaded is a regular Hello World
AFI that provides the Device ID 0xF010.
XRT_RELEASE_TAG=2019.2.0.3 # Substitute XRT_RELEASE_TAG=<TAG from above table>
git clone https://github.com/aws/aws-fpga.git
cd aws-fpga
source vitis_setup.sh
cd $VITIS_DIR/Runtime
export XRT_PATH="${VITIS_DIR}/Runtime/${XRT_RELEASE_TAG}"
git clone http://www.github.com/Xilinx/XRT.git -b ${XRT_RELEASE_TAG} ${XRT_PATH}
cd ${XRT_PATH}
sudo ./src/runtime_src/tools/scripts/xrtdeps.sh
cd build
scl enable devtoolset-6 bash
./build.sh
cd Release
sudo yum reinstall xrt_*.rpm -y
XRT_RELEASE_TAG=202010.2.6.AWS # Substitute XRT_RELEASE_TAG=<TAG from above table>
git clone https://github.com/aws/aws-fpga.git
cd aws-fpga
source vitis_setup.sh
cd $VITIS_DIR/Runtime
export XRT_PATH="${VITIS_DIR}/Runtime/${XRT_RELEASE_TAG}"
git clone http://www.github.com/Xilinx/XRT.git -b ${XRT_RELEASE_TAG} ${XRT_PATH}
cd ${XRT_PATH}
sudo ./src/runtime_src/tools/scripts/xrtdeps.sh
cd build
./build.sh
cd Release
sudo yum reinstall xrt_*.rpm -y
curl -s <xrt rpm link from above table> -o xrt.rpm
curl -s <xrt-aws rpm link from above table> -o xrt-aws.rpm
sudo yum reinstall xrt*.rpm -y
Q: What should I do if I see this message when I run the host application: xclProbe found 1 FPGA slots with xocl driver running WARNING: AwsXcl - Cannot open userPF: /dev/dri/renderD0 WARNING: AwsXcl isGood: invalid user handle. WARNING: xclOpen Handle check failed device[0].user_instance : 0 WARNING: AwsXcl - Cannot open userPF: /dev/dri/renderD0 WARNING: AwsXcl isGood: invalid user handle. ERROR: xclOpen Handle check failed
This means that the XOCL driver hasn't been able to bind to the User PF. Please try to restart MPD: sudo systemctl restart mpd
Q: How do I verify that my device is usable?:
Use the Xilinx xbutil
utility. If you sourced the vitis_runtime_setup.sh
script, it should be available in your path.
xbutil scan
INFO: Found total 1 card(s), 1 are usable
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
System Configuration
OS name: Linux
Release: 3.10.0-1062.4.1.el7.x86_64
Version: #1 SMP Fri Oct 18 17:15:30 UTC 2019
Machine: x86_64
Model: HVM domU
CPU cores: 8
Memory: 122724 MB
Glibc: 2.17
Distribution: CentOS Linux 7 (Core)
Now: Thu Jan 30 03:29:45 2020
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
XRT Information
Version: 2.3.0
Git Hash: 42da4cceb02e0386e0daeaea230bdc86ea40d19a
Git Branch: 2019.2
Build Date: 2020-01-30 02:56:41
XOCL: 2.3.0,42da4cceb02e0386e0daeaea230bdc86ea40d19a
XCLMGMT: unknown
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[0] 0000:00:1d.0 xilinx_aws-vu9p-f1_dynamic_5_0(ts=0xabcd) user(inst=128)
An unusable device will show up like this:
xbutil scan
INFO: Found total 1 card(s), 1 are usable
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
System Configuration
OS name: Linux
Release: 3.10.0-1062.4.1.el7.x86_64
Version: #1 SMP Fri Oct 18 17:15:30 UTC 2019
Machine: x86_64
Model: HVM domU
CPU cores: 8
Memory: 122724 MB
Glibc: 2.17
Distribution: CentOS Linux 7 (Core)
Now: Thu Jan 30 03:29:45 2020
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
XRT Information
Version: 2.3.0
Git Hash: 42da4cceb02e0386e0daeaea230bdc86ea40d19a
Git Branch: 2019.2
Build Date: 2020-01-30 02:56:41
XOCL: 2.3.0,42da4cceb02e0386e0daeaea230bdc86ea40d19a
XCLMGMT: unknown
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*[0] 0000:00:1d.0 xilinx_aws-vu9p-f1_dynamic_5_0(ts=0xabcd) user(inst=128)
WARNING: card(s) marked by '*' are not ready, is MPD runing? run 'systemctl status mpd' to check MPD details.```