【AIE】AIE微信合集

AIE微信合集

AIE(1)

對于Versal,我們從系統角度看,可將其分為3個Domain:AIE、PS和PL,如下圖所示。如果要運行一個AIE的應用,絕大多數情況下,這3個Domain我們都會用到,使其協同工作。這里我們僅關注AIE Domain,將介紹如何使用Vitis 2021.2創建AIE應用工程。

File->New->Application Project。

圖中標記1:simple_application將是我們在AIE上運行的工程。標記2:文件夾data,這里存放了仿真需用的輸入文件input.txt和輸出參考文件golden.txt。標記3:文件夾src,這里存放了設計需用的各種源文件,還包括一個子目錄標記4:Kernels,用于存放描述Kernel的源文件。

在這里插入圖片描述
project.h創建了一個類simpleGraph。
在這里插入圖片描述

在這里插入圖片描述

實際上,仿真平臺與graph之間的連接關系可用下圖表述。
在這里插入圖片描述


AIE(2) graph

自適應數據流 (Adaptive Data Flow, ADF) 計算圖是 AIE 應用的更高層次。這些計算圖是以 C++ 編寫的,包含節點和邊緣,其中節點表示計算內核函數和/或子計算圖,邊緣表示數據連接。所有 ADF 計算圖類定義都是預定義的數據流計算圖類 adf::graph 的子類,必須位于頭文件內。

在這里插入圖片描述

AIE(3) kernel

需用注意的是多個Kernel可運行在同一個AIE上,但是一個Kernel不能運行在多個AIE上,這就要求設計者對函數進行合理的分割,以保證每個Kernel至多僅占用一個AIE。

AIE要求所有的Kernel都是void。

數據訪問機制

在這個案例中,Kernel訪問數據是通過window方式。另一種方式為stream。

基于window的數據訪問方式意味著Kernel直接從當前AIE的本地Memory(32KB)或與之相鄰的AIE的本地Memory讀取數據。只有當window寫滿時,Kernel才會將數據加載到AIE中。這意味著在第一次調用Kernel時會有一些延遲,因為填滿window需用一定的時間。但是,由于采用的是乒乓緩沖,當Kernel在運行的過程中,下一套數據就可以寫入Memory,這樣當再次調用Kernel時,數據已準備就緒了。

基于stream的數據訪問方式意味著Kernel直接從AIX-Stream接口讀取數據。在這種情況下,Kernel按采樣方式讀取數據。采用stream方式可能會造成上游Kernel反壓。這是因為下游Kernel處理數據還不夠快。也可能會造成下游Kernal停滯,這是因為上游Kernel不能更快的提供數據。


AIE(6)—用Vitis Analyzer查看AIE編譯結果

在Explorer窗口中,雙擊文件project.aiecompile_summary(位于目錄Emulation-AIE/Work),即可打開Vitis Analyzer。

或者只是$vitis_analyzer 打開project.aiecompile_summary

Graph視圖

點擊Vitis Analyzer左側控制面板的Graph即可呈現graph視圖,如下圖所示。從這個視圖中可以看到kernel的連接關系以及kernel之間的memory(對應圖中的buf)。從輸入到第一個kernel使用了雙緩存buf0和buf0d(double buffers,字母d的來歷),本質上就是乒乓操作。同樣地,從第二個kernel到輸出也使用了雙緩存buf2和buf2d。兩個kernel之間使用了單緩存buf1,這是因為這兩個kernel是按順序執行,不會同時訪問同一個memory。Graph視圖底部的表格顯示了具體kernel信息,例如first為kernel的實例化名字,simple為描述kernel功能的C++函數名,這個kernel運行在AIE上,AIE位于AIE陣列的第25列第0行。表格和Graph視圖是相互關聯的,例如在表格中選中first,Graph中的first就會以高亮方式顯示。

在這里插入圖片描述
選擇上圖中紅色方框內的Tile View,則整個Graph視圖將顯示為下圖所示方式。從圖中可以看到first和second這兩個kernel位于AIE Tile [25, 0],這意味著這兩個kernel在同一個AIE上順序執行。還可以看到這兩個kernel訪問的memory位于AIE Tile[24,0]和[25,1],分別位于[25,0]的左側和上方,與[25,0]是相鄰位置,故不需要任何DMA。
在這里插入圖片描述


AIE(7)—理解Runtime Ratio

在這里插入圖片描述

增加runtime ratio使得每個kernel運行在不同的AIE Core上有可能提升graph吞吐率,但也增加了AIE的利用率。
降低runtime ratio有可能會降低AIE的利用率。這是因為只有當多個kernel確實可以運行在同一個AIE上時,工具才會將其映射到同一個AIE Core上。


AIE(8)—創建一個包含PL/PS/AIE的Vitis工程(1)

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在此基礎上,可得到platform與graph的連接關系,如下圖所示。

在這里插入圖片描述

Hardware link Application

那么AIE與PL之間究竟如何連接呢?這就要看HW Link部分。
在這里插入圖片描述
在這里插入圖片描述

生成XCLBIN之后,我們也可以看到生成該文件的Vivado工程,工程名為prj.xpr,具體路徑如下圖所示。

在這里插入圖片描述


AIE(12)—AI Engine架構概覽

AI Engine陣列是由一系列的AI EngineTile構成。每個AI Engine Tile包含一個AI Engine,一個存儲單元和一個互連單元,如下圖所示。可以看到相鄰兩行AI Engine Tile的存儲單元與AI Engine的位置正好相反。
在這里插入圖片描述
在這里插入圖片描述

互連單元采用AIX4 Stream接口將數據在東西南北四個方向傳送。同時每個AI Engine Tile的存儲單元都包含一個DMA。每個DMA由一個獨立的S2MM和一個獨立的MM2S構成。前者用于將數據從Stream上取下來寫入到存儲單元,后者用于將存儲單元的數據上傳到Stream,如下圖所示。

在這里插入圖片描述


AIE(17)—更新RTP(1)

AIE Kernel有時需要由外部提供參數更新kernel行為,此時就要用到RTP(Run-Time Parameter)。
AIE支持兩種類型的RTP,一種是異步(Asynchronous),通常由PS或其他AIE Kernel控制。“異步”意味著RTP可以隨時被更改。在每次Kernel被調用時,RTP都會被讀取,而不會進行任何同步處理。這種機制適合于參數不經常更新的場合,例如濾波器系數。另一種為同步RTP(Synchronous)。“同步”意味著只有當處理器將RTP傳遞給AIE Kernel后,該Kernel才能被觸發執行。無論是哪種類型,RTL都可以是標量(Scalar)或數組(Array)。
我們先看一個同步RTP。系統框圖如下圖所示。圖中sine為AIE Kernel,其中trigger為RTP,此處為標量。s2mm為HLS Kernel,最終通過HLS在PL側實現。

在這里插入圖片描述

如前所述,RTP也可以是數組。我們看一下數組為RTP的一個例子。如下圖所示,HLS Kernel random_noise產生輸入數據傳遞給AIE Kernel fir24_sym。fir24_sym是一個濾波器,濾波器系數作為輸入參數由PS傳遞,其輸出經HLS Kernel s2mm寫入到外部存儲器。這里既用到了AIE API(對應AIE Kernel),又用到了OpenCL API(對應Host)。

在這里插入圖片描述


AIE(19)—Packet Switching(1)

多個stream數據流可以共享一個物理通道,這個物理通道可以是PL到AIE也可以是AIE到PL。這樣的好處是節省了PL接口,尤其適用于低帶寬的場合。
本質上,packet switching使用了一對解復用器(de-multiplexer)和復用器(multiplexer)。前者將打包的數據流根據packet ID分配給不同的kernel,后者將來自于不同kernel上的數據流合并匯聚為一個數據流。為此,在ADF graph library中引入了pktsplit和pktmerge。pktsplit是一個1:n的解復用器,pktmerge是一個n:1的復用器。n最大值為32。
我們通過一個具體案例來體會一下packet switching的使用方法。這個例子包含4個AIE kernel,每個kernel的輸入/輸出均采用Window-based方式。4個Kernel的輸入數據分別來自于pktsplit解復用器的4個輸出,而4個Kernel的輸出數據則通過pktmerge復用器合并為一路輸出數據。需要注意的是將packet stream與window連接時connect里填的參數分別為pktstream和window,如下圖中紅色方框所示。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
Packet sender由兩部分構成。第一部分用于生成packet header,第二部分則是將4路數據分時發送到PLIO stream上。本質上就是分時復用一個PLIO channel。如下圖所示。

在這里插入圖片描述
在這里插入圖片描述
再看packet receiver。Packet receiver收到的是一個打包好的數據流,因此,它需要根據packet header提供的信息將數據分發到不同的stream上。具體代碼如下圖所示。
在這里插入圖片描述
無論是packet sender還是packet receiver,都需要獲知packet ID和stream的對應關系,這可由packet_ids_c.h文件獲取,如上述代碼中的深藍色方框所示。這個文件是在AIE編譯完之后生成的。因此,一旦AIE側發生改變就需要重新編譯生成此文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213237.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213237.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213237.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux less命令(less指令)(查看開頭、從開頭查看、從起始查看、反向導航、反向查找)

文章目錄 Linux Less 命令1. Less 命令簡介2. 基礎用法less filename<command> | less 3. 常用命令行選項4. 高級技巧和用法4.1 搜索內容4.2 標記和跳轉4.3 查看多個文件 5. less命令使用文檔6. 總結 Linux Less 命令 less 是一種在Linux環境中查看文件內容的工具&#…

《絕地求生》新手怎么玩 游戲基本介紹

隨著電競熱潮的興起&#xff0c;《絕地求生》已經成為了一款備受玩家熱愛的游戲。這款游戲在全球范圍內擁有龐大的玩家群體&#xff0c;它將你置身于一個荒無人煙的島嶼上&#xff0c;與其他99名玩家展開生死競爭。作為一個新手&#xff0c;下面閑游盒小盒子就為大家詳細介紹一…

Ubuntu20.04創建并掛在zfs池

Ubuntu 下使用 ZFS [適用于中高級用戶] 主磁盤上清潔安裝帶有ZFS的Ubuntu后&#xff0c;可以開始體驗其特性。 所有ZFS配置過程都需要命令行。 我不知道有GUI工具。 創建一個 ZFS 池 本節僅適用于具有多個磁盤的系統。 如果只有一個磁盤&#xff0c;Ubuntu會在安裝時自動創建…

寫實3D游戲模型紋理貼圖設置

在線工具推薦&#xff1a; 3D數字孿生場景編輯器 - GLTF/GLB材質紋理 - 3D模型在線轉換 - Three.js AI自動紋理開發包 - YOLO 虛幻合成數據生成器 - 三維模型預覽圖生成器 - 3D模型語義搜索引擎 當談到游戲角色的3D模型風格時&#xff0c;有幾種不同的風格&#xff1a; …

Mybatis源碼解析5:Mapper執行流程1

Mybatis源碼解析5&#xff1a;Mapper執行流程1 1.項目結構2. 源碼分析2.1 Mapper代理 MapperProxy#invoke2.2 創建MapperMethod2.2.1 方法名稱解析器ParamNameResolve2.2.2 MapperMethod#execute 2.3 DefaultSqlSession2.4 CachingExecutor2.5 SimpleExecutor#doQuery獲取連接對…

Nacos源碼解讀09——配置中心配置信息創建修改怎么處理的

存儲配置 從整體上Nacos服務端的配置存儲分為三層&#xff1a; 內存&#xff1a;Nacos每個節點都在內存里緩存了配置&#xff0c;但是只包含配置的md5&#xff08;緩存配置文件太多了&#xff09;&#xff0c;所以內存級別的配置只能用于比較配置是否發生了變更&#xff0c;只用…

進行生成簡單數字圖片

1.之前只能做一些圖像預測,我有個大膽的想法,如果神經網絡正向就是預測圖片的類別,如果我只有一個類別那就可以進行生成圖片,專業術語叫做gan對抗網絡 2.訓練代碼 import torch import torch.nn as nn import torch.optim as optim import torchvision.transforms as transfo…

飛天使-rsync大文件斷點續傳與vim批量刪除

文章目錄 rsync 斷點續傳&#xff0c;親測有效vim 批量刪除消息 rsync 斷點續傳&#xff0c;親測有效 rsync -vzrtp -P --append -e "/usr/bin/ssh -p 22 -o StrictHostKeyCheckingno" m.tar.gz root10.0.0.1:/tmp后臺運行 screem 既可 或者 nohup rsync -vzrt…

【華為od】存在一個m*n的二維數組,其成員取值范圍為0,1。其中值為1的元素具備擴散性,每經過1S,將上下左右值為0的元素同化為1。

存在一個m*n的二維數組,其成員取值范圍為0,1。其中值為1的元素具備擴散性,每經過1S,將上下左右值為0的元素同化為1。將數組所有成員初始化為0,將矩陣的[i, j]和[m,n]位置上元素修改成1后,在經過多長時間所有元素變為1。 輸入描述 輸入的前兩個數字是矩陣大小。后面是數字…

盛域宏數合伙人張天:AI時代,數字化要以AI重構

大數據產業創新服務媒體 ——聚焦數據 改變商業 在這個飛速發展的科技時代&#xff0c;數字化已經深刻地改變了我們的生活和商業方式。信息技術的迅猛發展使得數據成為現代社會最寶貴的資源之一。數字化已經不再是可選項&#xff0c;而是企業持續發展的必由之路。背靠著數據的…

【React】路由的基礎使用

react-router-dom6的基礎使用 1、安裝依賴 npm i react-router-dom默認安裝最新版本的 2、在src/router/index.js import { createBrowserRouter } from "react-router-dom"/* createBrowserRouter&#xff1a;[/home]--h5路由createHashRouter&#xff1a;[/#/ho…

Linux訪問NFS存儲及自動掛載

本章主要介紹NFS客戶端的使用 創建NFS服務器并通過NFS共享一個目錄在客戶端上訪問NFS共享的目錄自動掛載的配置和使用 1.1 訪問NFS存儲 前面那篇介紹了本地存儲&#xff0c;本章就來介紹如何使用網絡上上的存儲設備。NFS即網絡文件系統&#xff0c;所實現的是Linux和Linux之…

通信:mqtt學習網址

看這個網址&#xff1a;講的很詳細&#xff0c;后面補實戰例子 第一章 - MQTT介紹 MQTT協議中文版 (gitbooks.io)https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/01-Introduction.html

【網絡編程】-- 04 UDP

網絡編程 6 UDP 6.1 初識Tomcat 服務端 自定義 STomcat S 客戶端 自定義 C瀏覽器 B 6.2 UDP 6.2.1 udp實現發送消息 接收端&#xff1a; package com.duo.lesson03;import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketExceptio…

【論文極速讀】LVM,視覺大模型的GPT時刻?

【論文極速讀】LVM&#xff0c;視覺大模型的GPT時刻&#xff1f; FesianXu 20231210 at Baidu Search Team 前言 這一周&#xff0c;LVM在arxiv上剛掛出不久&#xff0c;就被眾多自媒體宣傳為『視覺大模型的GPT時刻』&#xff0c;筆者抱著強烈的好奇心&#xff0c;在繁忙工作之…

m.2固態硬盤怎么選擇?

一、什么是固態硬盤 固態硬盤又稱SSD&#xff0c;是Solid State Drive的簡稱&#xff0c;由于采用了閃存技術&#xff0c;其處理速度遠遠超過傳統的機械硬盤&#xff0c;這主要是因為固態硬盤的數據以電子的方式存儲在閃存芯片中&#xff0c;不需要像機械硬盤那樣通過磁頭讀寫磁…

linux查看筆記本電池健康情況

本人的老電腦&#xff0c;筆記本x1 carbon 5th 用久了&#xff0c;電池不行了&#xff0c;實際容量只有27.657%&#xff0c;充電到40%的時候&#xff0c;一瞬間彪滿100%。到某寶淘了一個 model: 01AV430的電池,等更換了再看看使用情況 $ upower --help 用法&#xff1a;upower…

Linux 安裝 中間件 Tuxedo

安裝步聚 一、首先&#xff0c;下載中間件安裝包&#xff1a; tuxedo121300_64_Linux_01_x86 Tuxedo下載地址&#xff1a; Oracle Tuxedo Downloads 二、新建Oracle用戶組&#xff08;創建Oracle用戶時&#xff0c;需要root權限操作&#xff0c;登陸&#xff09; [rootloca…

【CiteSpace】引文可視化分析軟件CiteSpace下載與安裝

CiteSpace 譯“引文空間”&#xff0c;是一款著眼于分析科學分析中蘊含的潛在知識&#xff0c;是在科學計量學、數據可視化背景下逐漸發展起來的引文可視化分析軟件。由于是通過可視化的手段來呈現科學知識的結構、規律和分布情況&#xff0c;因此也將通過此類方法分析得到的可…

【Spring教程23】Spring框架實戰:從零開始學習SpringMVC 之 SpringMVC簡介與SpringMVC概述

目錄 1&#xff0c;SpringMVC簡介2、SpringMVC概述 歡迎大家回到《Java教程之Spring30天快速入門》&#xff0c;本教程所有示例均基于Maven實現&#xff0c;如果您對Maven還很陌生&#xff0c;請移步本人的博文《如何在windows11下安裝Maven并配置以及 IDEA配置Maven環境》&…