{"id":114,"date":"2021-02-12T14:41:47","date_gmt":"2021-02-12T14:41:47","guid":{"rendered":"https:\/\/smartfpga.de\/?p=114"},"modified":"2021-02-12T15:18:32","modified_gmt":"2021-02-12T15:18:32","slug":"xilinx-runtime-library-xrt-fuer-ubuntu-20-04","status":"publish","type":"post","link":"https:\/\/smartfpga.de\/?p=114","title":{"rendered":"Xilinx Runtime Library (xrt) f\u00fcr Ubuntu 20.04"},"content":{"rendered":"\n<p>Im Rahmen meiner Experimente mit OpenCL, wollte ich ein &#8222;Hello World&#8220; Design f\u00fcr Alveo U200 machen. Selbst wenn es nicht beabsichtigt wird in einem Rechner die U200 Karte einzubauen, ist es f\u00fcr die Entwicklung notwendig das .deb Paket mit der &#8222;Deployment Target Platform&#8220; zu installieren. Diese beinhaltet z.B. die .xsa Datei sowie das Kommunikationslayer f\u00fcr die U200 Karte selbst. Die Voraussetzung f\u00fcr die Installation dieses Pakets ist allerdings die Installation von Xilinx Runtime Library (XRT), welche man mit einem separaten .deb Paket von Xilinx Webseite herunterl\u00e4dt.<\/p>\n\n\n\n<p>An der Stelle habe ich das erste Problem getroffen: Stand heute (12.02.2021) sind die .deb Pakete mit XRT nur f\u00fcr Ubuntu 16.04 und 18.04 erh\u00e4ltlich. F\u00fcr mich sah es schlecht aus, weil ich seit zwei Monaten auf dem neuen Laptop das Linux Mint 20 Cinnamon benutze, was Ubuntu 20.04 (die modernste LTS Version) ungef\u00e4hr gleich ist. <\/p>\n\n\n<p><!--more--><\/p>\n\n\n<p>Gl\u00fccklicherweise hat sich schnell eine L\u00f6sung im Xilinx Github Repository gefunden. Unter dem <a href=\"https:\/\/github.com\/Xilinx\/XRT\">Link<\/a> ist das XRT Projekt mit Quellcode erh\u00e4ltlich. Das Projekt l\u00e4sst sich fast problemlos kompilieren. Damit es tats\u00e4chlich &#8222;problemlos&#8220; verl\u00e4uft (nicht also &#8222;fast&#8220;), m\u00f6chte ich auf ein paar Kleinigkeiten aufmerksam machen. N\u00e4chst sind die Schritte aufgelistet, die auf der Projekt-Seite auf Github unter dem Link &#8222;Build Instructions&#8220; zu finden sind. Dazu schreibe ich meine erg\u00e4nzenden Kommentare. <\/p>\n\n\n\n<p>Zuerst, selbstverst\u00e4ndlich das Projekt vom Githab ziehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/Xilinx\/XRT.git<\/code><\/pre>\n\n\n\n<p>Dann als erstes ein Skript laufen lassen, das die Abh\u00e4ngigkeiten \u00fcberpr\u00fcft und ggf. Upgrades verlangt. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo &lt;XRT>\/src\/runtime_src\/tools\/scripts\/xrtdeps.sh<\/code><\/pre>\n\n\n\n<p>Unter Ubuntu sollte dieses Skript problemlos laufen. Unter Linux Mint ist es allerdings nicht der Fall, denn das Skript \u00fcberpr\u00fcft die ID Zeile der Datei \/etc\/os-release. Eine einfache L\u00f6sung ist in der ID Zeile &#8222;ubuntu&#8220; anstatt &#8222;linuxmint&#8220; zu schreiben. <\/p>\n\n\n\n<p>Danach kommt es zum Build Skript:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;XRT>\/build\/build.sh<\/code><\/pre>\n\n\n\n<p>Bevor dieses Skript mit der Kompilierung anf\u00e4ngt, f\u00fchrt es auch eine kleine \u00dcberpr\u00fcfung durch. Gepr\u00fcft werden z.B. Versionen der im Build-Prozess teilhehmenden Software. Hier wird wieder Vorsicht geboten, denn es ist nicht selten, dass man in seiner Terminal-Session das Skript settings64.sh bereits ausgef\u00fchrt hat. Bei manchen Kollegen ist settings64.sh sogar in der .bashrc eingetragen. Das damit verbundene Problem ist, dass settings64.sh den CMake auf den Vivado-eigenenen CMake umstellt, der eine \u00e4ltere Version hat (3.3.2). <\/p>\n\n\n\n<p>Mit dem Rest soll es keine Probleme geben. In den Release Ordner \u00fcbergehen und <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>make package<\/code><\/pre>\n\n\n\n<p>ausf\u00fchren. Danach zur\u00fcck in den build Ordner \u00fcbergehen und die Dokumentation zusammenstellen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/build.sh docs<\/code><\/pre>\n\n\n\n<p>Ah ja. Am Ende nicht vergessen das frisch kompilierte Paket mit dem Paket-Manager zu installieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo dpkg -i xrt_202110.2.10.0_20-amd64-xrt.deb<\/code><\/pre>\n\n\n\n<p>Mit der XRT-Bibliothek installiert, verl\u00e4uft die Installation des &#8222;Deployment Target Platforms&#8220;  des FPGA-Beschleunigers problemlos. Somit ist der Weg f\u00fcr die Entwickulung Ihrer Applikation f\u00fcr die Zielplatform mit Vitis und Vivado offen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Rahmen meiner Experimente mit OpenCL, wollte ich ein &#8222;Hello World&#8220; Design f\u00fcr Alveo U200 machen. Selbst wenn es nicht beabsichtigt wird in einem Rechner die U200 Karte einzubauen, ist es f\u00fcr die Entwicklung notwendig das .deb Paket mit der &#8222;Deployment Target Platform&#8220; zu installieren. Diese beinhaltet z.B. die .xsa Datei sowie das Kommunikationslayer f\u00fcr [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,5],"tags":[7,9,10,11,12,8,6],"class_list":["post-114","post","type-post","status-publish","format-standard","hentry","category-fpga-primitiven","category-parallel-programming","tag-linux-mint","tag-u200","tag-ubuntu-20-04","tag-vitis","tag-vivado","tag-xilinx","tag-xrt"],"_links":{"self":[{"href":"https:\/\/smartfpga.de\/index.php?rest_route=\/wp\/v2\/posts\/114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smartfpga.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/smartfpga.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/smartfpga.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smartfpga.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=114"}],"version-history":[{"count":8,"href":"https:\/\/smartfpga.de\/index.php?rest_route=\/wp\/v2\/posts\/114\/revisions"}],"predecessor-version":[{"id":122,"href":"https:\/\/smartfpga.de\/index.php?rest_route=\/wp\/v2\/posts\/114\/revisions\/122"}],"wp:attachment":[{"href":"https:\/\/smartfpga.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smartfpga.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smartfpga.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}