版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Word如何高效、可擴放地對FPGA+CPU的異構(gòu)系統(tǒng)進行編程?
一、為什么使用(FPGA)?
眾所周知,通用處理器((CPU))的摩爾定律已入暮年,而(機器學(xué)習(xí))和Web服務(wù)的規(guī)模卻在指數(shù)級增長。
人們使用定制(硬件)來加速常見的計算任務(wù),然而日新月異的行業(yè)又要求這些定制的硬件可被重新(編程)來執(zhí)行新類型的計算任務(wù)。
FPGA正是一種硬件可重構(gòu)的體系結(jié)構(gòu)。它的英文全稱是FieldProg(ram)mableGateArray,中文名是現(xiàn)場可編程門陣列。
FPGA常年來被用作專用(芯片)((ASIC))的小批量替代品,然而近年來在微軟、百度等公司的數(shù)據(jù)中心大規(guī)模部署,以同時提供強大的計算能力和足夠的靈活性。
不同體系結(jié)構(gòu)性能和靈活性的比較
FPGA為什么快?「都是同行襯托得好」。
CPU、(GPU)都屬于馮·諾依曼結(jié)構(gòu),指令譯碼執(zhí)行、共享內(nèi)存。FPGA之所以比CPU甚至GPU能效高,本質(zhì)上是無指令、無需共享內(nèi)存的體系結(jié)構(gòu)帶來的福利。
馮氏結(jié)構(gòu)中,由于執(zhí)行單元(如CPU核)可能執(zhí)行任意指令,就需要有指令存儲器、譯碼器、各種指令的運算器、分支跳轉(zhuǎn)處理邏輯。由于指令流的控制邏輯復(fù)雜,不可能有太多條獨立的指令流,因此GPU使用SIMD(單指令流多數(shù)據(jù)流)來讓多個執(zhí)行單元以同樣的步調(diào)處理不同的數(shù)據(jù),CPU也支持SIMD指令。
而FPGA每個邏輯單元的功能在重編程(燒寫)時就已經(jīng)確定,不需要指令。
馮氏結(jié)構(gòu)中使用內(nèi)存有兩種作用。一是保存狀態(tài),二是在執(zhí)行單元間(通信)。
由于內(nèi)存是共享的,就需要做訪問仲裁;為了利用訪問局部性,每個執(zhí)行單元有一個私有的緩存,這就要維持執(zhí)行部件間緩存的一致性。
對于保存狀態(tài)的需求,F(xiàn)PGA中的(寄存器)和片上內(nèi)存(BRAM)是屬于各自的控制邏輯的,無需不必要的仲裁和緩存。
對于通信的需求,F(xiàn)PGA每個邏輯單元與周圍邏輯單元的連接在重編程(燒寫)時就已經(jīng)確定,并不需要通過共享內(nèi)存來通信。
說了這么多三千英尺高度的話,F(xiàn)PGA實際的表現(xiàn)如何呢?我們分別來看計算密集型任務(wù)和通信密集型任務(wù)。
計算密集型任務(wù)的例子包括矩陣運算、圖像處理、機器學(xué)習(xí)、壓縮、非對稱加密、Bing搜索的排序等。這類任務(wù)一般是CPU把任務(wù)卸載(offlo(ad))給FPGA去執(zhí)行。對這類任務(wù),目前我們正在用的(Altera)(似乎應(yīng)該叫(Intel)了,我還是習(xí)慣叫Altera……)Stra(ti)xVFPGA的整數(shù)乘法運算性能與20核的CPU基本相當(dāng),浮點乘法運算性能與8核的CPU基本相當(dāng),而比GPU低一個數(shù)量級。我們即將用上的下一代FPGA,Stratix10,將配備更多的乘法器和硬件浮點運算部件,從而理論上可達到與現(xiàn)在的頂級GPU計算卡旗鼓相當(dāng)?shù)挠嬎隳芰Α?/p>
FPGA的整數(shù)乘法運算能力(估計值,不使用(DSP),根據(jù)邏輯資源占用量估計)。
FPGA的浮點乘法運算能力(估計值,float16用軟核,float32用硬核)。
在數(shù)據(jù)中心,F(xiàn)PGA相比GPU的核心優(yōu)勢在于延遲。
像Bing搜索排序這樣的任務(wù),要盡可能快地返回搜索結(jié)果,就需要盡可能降低每一步的延遲。
如果使用GPU來加速,要想充分利用GPU的計算能力,batchsize就不能太小,延遲將高達毫秒量級。
使用FPGA來加速的話,只需要微秒級的PCIe延遲(我們現(xiàn)在的FPGA是作為一塊PCIe加速卡)。
未來Intel推出通過Q(PI)連接的Xeon+FPGA之后,CPU和FPGA之間的延遲更可以降到100納秒以下,跟訪問主存沒什么區(qū)別了。
FPGA為什么比GPU的延遲低這么多?
這本質(zhì)上是體系結(jié)構(gòu)的區(qū)別。
FPGA同時擁有流水線并行和數(shù)據(jù)并行,而GPU幾乎只有數(shù)據(jù)并行(流水線深度受限)。
例如處理一個數(shù)據(jù)包有10個步驟,F(xiàn)PGA可以搭建一個10級流水線,流水線的不同級在處理不同的數(shù)據(jù)包,每個數(shù)據(jù)包流經(jīng)10級之后處理完成。每處理完成一個數(shù)據(jù)包,就能馬上輸出。
而GPU的數(shù)據(jù)并行方法是做10個計算單元,每個計算單元也在處理不同的數(shù)據(jù)包,然而所有的計算單元必須按照統(tǒng)一的步調(diào),做相同的事情(SIMD,SingleInstructionMultipleData)。這就要求10個數(shù)據(jù)包必須一起輸入、一起輸出,輸入輸出的延遲增加了。
當(dāng)任務(wù)是逐個而非成批到達的時候,流水線并行比數(shù)據(jù)并行可實現(xiàn)更低的延遲。因此對流式計算的任務(wù),F(xiàn)PGA比GPU天生有延遲方面的優(yōu)勢。
計算密集型任務(wù),CPU、GPU、FPGA、ASIC的數(shù)量級比較(以16位整數(shù)乘法為例,數(shù)字僅為數(shù)量級的估計。
ASIC專用芯片在吞吐量、延遲和功耗三方面都無可指摘,但微軟并沒有采用,出于兩個原因:
數(shù)據(jù)中心的計算任務(wù)是靈活多變的,而ASIC研發(fā)成本高、周期長。好不容易大規(guī)模部署了一批某種(神經(jīng)網(wǎng)絡(luò))的加速卡,結(jié)果另一種神經(jīng)網(wǎng)絡(luò)更火了,錢就白費了。FPGA只需要幾百毫秒就可以更新邏輯功能。FPGA的靈活性可以保護投資,事實上,微軟現(xiàn)在的FPGA玩法與最初的設(shè)想大不相同。
數(shù)據(jù)中心是租給不同的租戶使用的,如果有的機器上有神經(jīng)(網(wǎng)絡(luò))加速卡,有的機器上有Bing搜索加速卡,有的機器上有網(wǎng)絡(luò)虛擬化加速卡,任務(wù)的調(diào)度和服務(wù)器的運維會很麻煩。使用FPGA可以保持數(shù)據(jù)中心的同構(gòu)性。
接下來看通信密集型任務(wù)。
相比計算密集型任務(wù),通信密集型任務(wù)對每個輸入數(shù)據(jù)的處理不甚復(fù)雜,基本上簡單算算就輸出了,這時通信往往會成為瓶頸。對稱加密、防火墻、網(wǎng)絡(luò)虛擬化都是通信密集型的例子。
通信密集型任務(wù),CPU、GPU、FPGA、ASIC的數(shù)量級比較(以64字節(jié)網(wǎng)絡(luò)數(shù)據(jù)包處理為例,數(shù)字僅為數(shù)量級的估計)
對通信密集型任務(wù),F(xiàn)PGA相比CPU、GPU的優(yōu)勢就更大了。
從吞吐量上講,F(xiàn)PGA上的(收發(fā)器)可以直接接上40Gbps甚至100Gbps的網(wǎng)線,以線速處理任意大小的數(shù)據(jù)包;而CPU需要從網(wǎng)卡把數(shù)據(jù)包收上來才能處理,很多網(wǎng)卡是不能線速處理64字節(jié)的小數(shù)據(jù)包的。盡管可以通過插多塊網(wǎng)卡來達到高性能,但CPU和主板支持的PCIe插槽數(shù)量往往有限,而且網(wǎng)卡、(交換機)本身也價格不菲。
從延遲上講,網(wǎng)卡把數(shù)據(jù)包收到CPU,CPU再發(fā)給網(wǎng)卡,即使使用DPDK這樣高性能的數(shù)據(jù)包處理框架,延遲也有4~5微秒。更嚴重的問題是,通用CPU的延遲不夠穩(wěn)定。例如當(dāng)負載較高時,轉(zhuǎn)發(fā)延遲可能升到幾十微秒甚至更高(如下圖所示);現(xiàn)代(操作系統(tǒng))中的(時鐘)中斷和任務(wù)調(diào)度也增加了延遲的不確定性。
ClickNP(FPGA)與DellS6000交換機(商用交換機芯片)、Click+DPDK(CPU)和(Linux)(CPU)的轉(zhuǎn)發(fā)延遲比較,errorbar表示5%和95%。
雖然GPU也可以高性能處理數(shù)據(jù)包,但GPU是沒有網(wǎng)口的,意味著需要首先把數(shù)據(jù)包由網(wǎng)卡收上來,再讓GPU去做處理。這樣吞吐量受到CPU和/或網(wǎng)卡的限制。GPU本身的延遲就更不必說了。
那么為什么不把這些網(wǎng)絡(luò)功能做進網(wǎng)卡,或者使用可編程交換機呢?ASIC的靈活性仍然是硬傷。
盡管目前有越來越強大的可編程交換機芯片,比如支持P4語言的Tofino,ASIC仍然不能做復(fù)雜的有狀態(tài)處理,比如某種自定義的加密(算法)。
綜上,在數(shù)據(jù)中心里FPGA的主要優(yōu)勢是穩(wěn)定又極低的延遲,適用于流式的計算密集型任務(wù)和通信密集型任務(wù)。
二、微軟部署FPGA的實踐
2021年9月,《連線》(Wired)雜志發(fā)表了一篇《微軟把未來押注在FPGA上》的報道[3],講述了Catapult項目的前世今生。
緊接著,Catapult項目的老大DougBurger在Igni(te)2021大會上與微軟CEOSatyaNadella一起做了FPGA加速機器翻譯的演示。
演示的總計算能力是103萬Tops,也就是1.03Exa-op,相當(dāng)于10萬塊頂級GPU計算卡。一塊FPGA(加上板上內(nèi)存和網(wǎng)絡(luò)接口等)的功耗大約是30W,僅增加了整個服務(wù)器功耗的十分之一。
Ignite2021上的演示:每秒1Exa-op(10^18)的機器翻譯運算能力。
微軟部署FPGA并不是一帆風(fēng)順的。對于把FPGA部署在哪里這個問題,大致經(jīng)歷了三個階段:
專用的FPGA集群,里面插滿了FPGA
每臺機器一塊FPGA,采用專用網(wǎng)絡(luò)連接
每臺機器一塊FPGA,放在網(wǎng)卡和交換機之間,共享服務(wù)器網(wǎng)絡(luò)
微軟FPGA部署方式的三個階段。
第一個階段是專用集群,里面插滿了FPGA加速卡,就像是一個FPGA組成的超級計算機。
下圖是最早的BFB實驗板,一塊PCIe卡上放了6塊FPGA,每臺1U服務(wù)器上又插了4塊PCIe卡。
最早的BFB實驗板,上面放了6塊FPGA。
可以注意到該公司的名字。在(半導(dǎo)體)行業(yè),只要批量足夠大,芯片的價格都將趨向于沙子的價格。據(jù)傳聞,正是由于該公司不肯給「沙子的價格」,才選擇了另一家公司。
當(dāng)然現(xiàn)在數(shù)據(jù)中心領(lǐng)域用兩家公司FPGA的都有。只要規(guī)模足夠大,對FPGA價格過高的擔(dān)心將是不必要的。
最早的BFB實驗板,1U服務(wù)器上插了4塊FPGA卡。
像超級計算機一樣的部署方式,意味著有專門的一個機柜全是上圖這種裝了24塊FPGA的服務(wù)器(下圖左)。
這種方式有幾個問題:
不同機器的FPGA之間無法通信,F(xiàn)PGA所能處理問題的規(guī)模受限于單臺服務(wù)器上FPGA的數(shù)量;
數(shù)據(jù)中心里的其他機器要把任務(wù)集中發(fā)到這個機柜,構(gòu)成了in-cast,網(wǎng)絡(luò)延遲很難做到穩(wěn)定。
FPGA專用機柜構(gòu)成了單點故障,只要它一壞,誰都別想加速了;
裝FPGA的服務(wù)器是定制的,冷卻、運維都增加了麻煩。
部署FPGA的三種方式,從中心化到分布式。
一種不那么激進的方式是,在每個機柜一面部署一臺裝滿FPGA的服務(wù)器(上圖中)。這避免了上述問題(2)(3),但(1)(4)仍然沒有解決。
第二個階段,為了保證數(shù)據(jù)中心中服務(wù)器的同構(gòu)性(這也是不用ASIC的一個重要原因),在每臺服務(wù)器上插一塊FPGA(上圖右),F(xiàn)PGA之間通過專用網(wǎng)絡(luò)連接。這也是微軟在ISCA'14上所發(fā)表論文采用的部署方式。
OpenComputeServer在機架中。
OpenComputeServer內(nèi)景。紅框是放FPGA的位置。
插入FPGA后的OpenComputeServer。
FPGA與OpenComputeServer之間的連接與固定。
FPGA采用StratixVD5,有172K個ALM,2021個M20K片上內(nèi)存,1590個DSP。板上有一個8GBDDR3-1333內(nèi)存,一個PCIeGen3x8接口,兩個10Gbps網(wǎng)絡(luò)接口。一個機柜之間的FPGA采用專用網(wǎng)絡(luò)連接,一組10G網(wǎng)口8個一組連成環(huán),另一組10G網(wǎng)口6個一組連成環(huán),不使用交換機。
機柜中FPGA之間的網(wǎng)絡(luò)連接方式。
這樣一個1632臺服務(wù)器、1632塊FPGA的集群,把Bing的搜索結(jié)果排序整體性能提高到了2倍(換言之,節(jié)省了一半的服務(wù)器)。
如下圖所示,每8塊FPGA穿成一條鏈,中間用前面提到的10Gbps專用網(wǎng)線來通信。這8塊FPGA各司其職,有的負責(zé)從文檔中提取特征(黃色),有的負責(zé)計算特征表達式(綠色),有的負責(zé)計算文檔的得分(紅色)。
FPGA加速Bing的搜索排序過程。
FPGA不僅降低了Bing搜索的延遲,還顯著提高了延遲的穩(wěn)定性。
本地和遠程的FPGA均可以降低搜索延遲,遠程FPGA的通信延遲相比搜索延遲可忽略。
FPGA在Bing的部署取得了成功,Catapult項目繼續(xù)在公司內(nèi)擴張。
微軟內(nèi)部擁有最多服務(wù)器的,就是(云計算)Azure部門了。
Azure部門急需解決的問題是網(wǎng)絡(luò)和存儲虛擬化帶來的開銷。Azure把虛擬機賣給客戶,需要給虛擬機的網(wǎng)絡(luò)提供防火墻、負載均衡、隧道、NAT等網(wǎng)絡(luò)功能。由于云存儲的物理存儲跟計算節(jié)點是分離的,需要把數(shù)據(jù)從存儲節(jié)點通過網(wǎng)絡(luò)搬運過來,還要進行壓縮和加密。
在1Gbps網(wǎng)絡(luò)和(機械)硬盤的時代,網(wǎng)絡(luò)和存儲虛擬化的CPU開銷不值一提。隨著網(wǎng)絡(luò)和存儲速度越來越快,網(wǎng)絡(luò)上了40Gbps,一塊SSD的吞吐量也能到1GB/s,CPU漸漸變得力不從心了。
例如Hyper-V虛擬交換機只能處理25Gbps左右的流量,不能達到40Gbps線速,當(dāng)數(shù)據(jù)包較小時性能更差;AES-256加密和SHA-1簽名,每個CPU核只能處理100MB/s,只是一塊SSD吞吐量的十分之一。
網(wǎng)絡(luò)隧道協(xié)議、防火墻處理40Gbps需要的CPU核數(shù)。
為了加速網(wǎng)絡(luò)功能和存儲虛擬化,微軟把FPGA部署在網(wǎng)卡和交換機之間。
如下圖所示,每個FPGA有一個4GBDDR3-1333(DRAM),通過兩個PCIeGen3x8接口連接到一個CPUsocket(物理上是PCIeGen3x16接口,因為FPGA沒有x16的硬核,邏輯上當(dāng)成兩個x8的用)。物理網(wǎng)卡(NIC)就是普通的40Gbps網(wǎng)卡,僅用于宿主機與網(wǎng)絡(luò)之間的通信。
Azure服務(wù)器部署FPGA的架構(gòu)。
FPGA(SmartNIC)對每個虛擬機虛擬出一塊網(wǎng)卡,虛擬機通過SR-IOV直接訪問這塊虛擬網(wǎng)卡。原本在虛擬交換機里面的數(shù)據(jù)平面功能被移到了FPGA里面,虛擬機收發(fā)網(wǎng)絡(luò)數(shù)據(jù)包均不需要CPU參與,也不需要經(jīng)過物理網(wǎng)卡(NIC)。這樣不僅節(jié)約了可用于出售的CPU資源,還提高了虛擬機的網(wǎng)絡(luò)性能(25Gbps),把同數(shù)據(jù)中心虛擬機之間的網(wǎng)絡(luò)延遲降低了10倍。
網(wǎng)絡(luò)虛擬化的加速架構(gòu)。
這就是微軟部署FPGA的第三代架構(gòu),也是目前「每臺服務(wù)器一塊FPGA」大規(guī)模部署所采用的架構(gòu)。
FPGA復(fù)用主機網(wǎng)絡(luò)的初心是加速網(wǎng)絡(luò)和存儲,更深遠的影響則是把FPGA之間的網(wǎng)絡(luò)連接擴展到了整個數(shù)據(jù)中心的規(guī)模,做成真正cloud-scale的「超級計算機」。
第二代架構(gòu)里面,F(xiàn)PGA之間的網(wǎng)絡(luò)連接局限于同一個機架以內(nèi),F(xiàn)PGA之間專網(wǎng)互聯(lián)的方式很難擴大規(guī)模,通過CPU來轉(zhuǎn)發(fā)則開銷太高。
第三代架構(gòu)中,F(xiàn)PGA之間通過LTL(LightweightTransportLayer)通信。同一機架內(nèi)延遲在3微秒以內(nèi);8微秒以內(nèi)可達1000塊FPGA;20微秒可達同一數(shù)據(jù)中心的所有FPGA。第二代架構(gòu)盡管8臺機器以內(nèi)的延遲更低,但只能通過網(wǎng)絡(luò)訪問48塊FPGA。為了支持大范圍的FPGA間通信,第三代架構(gòu)中的LTL還支持(PFC)流控協(xié)議和(DC)QCN擁塞控制協(xié)議。
縱軸:LTL的延遲,橫軸:可達的FPGA數(shù)量。
FPGA內(nèi)的邏輯模塊關(guān)系,其中每個Role是用戶邏輯(如DNN加速、網(wǎng)絡(luò)功能加速、加密),外面的部分負責(zé)各個Role之間的通信及Role與外設(shè)之間的通信。
FPGA構(gòu)成的數(shù)據(jù)中心加速平面,介于網(wǎng)絡(luò)交換層(TOR、L1、L2)和傳統(tǒng)服務(wù)器軟件(CPU上運行的軟件)之間。
通過高帶寬、低延遲的網(wǎng)絡(luò)互聯(lián)的FPGA構(gòu)成了介于網(wǎng)絡(luò)交換層和傳統(tǒng)服務(wù)器軟件之間的數(shù)據(jù)中心加速平面。
除了每臺提供云服務(wù)的服務(wù)器都需要的網(wǎng)絡(luò)和存儲虛擬化加速,F(xiàn)PGA上的剩余資源還可以用來加速Bing搜索、深度神經(jīng)網(wǎng)絡(luò)(DNN)等計算任務(wù)。
對很多類型的應(yīng)用,隨著分布式FPGA加速器的規(guī)模擴大,其性能提升是超線性的。
例如CNNinference,當(dāng)只用一塊FPGA的時候,由于片上內(nèi)存不足以放下整個模型,需要不斷訪問DRAM中的模型權(quán)重,性能瓶頸在DRAM;如果FPGA的數(shù)量足夠多,每塊FPGA負責(zé)模型中的一層或者一層中的若干個特征,使得模型權(quán)重完全載入片上內(nèi)存,就消除了DRAM的性能瓶頸,完全發(fā)揮出FPGA計算單元的性能。
當(dāng)然,拆得過細也會導(dǎo)致通信開銷的增加。把任務(wù)拆分到分布式FPGA集群的關(guān)鍵在于平衡計算和通信。
從神經(jīng)網(wǎng)絡(luò)模型到HaaS上的FPGA。利用模型內(nèi)的并行性,模型的不同層、不同特征映射到不同F(xiàn)PGA。
在MICRO'16會議上,微軟提出了HardwareasaService(HaaS)的概念,即把硬件作為一種可調(diào)度的云服務(wù),使得FPGA服務(wù)的集中調(diào)度、管理和大規(guī)模部署成為可能。
HardwareasaService(HaaS)。
從第一代裝滿FPGA的專用服務(wù)器集群,到第二代通過專網(wǎng)連接的FPGA加速卡集群,到目前復(fù)用數(shù)據(jù)中心網(wǎng)絡(luò)的大規(guī)模FPGA云,三個思想指導(dǎo)我們的路線:
硬件和軟件不是相互取代的關(guān)系,而是合作的關(guān)系;
必須具備靈活性,即用軟件定義的能力;
必須具備可擴放性(scalability)。
三、FPGA在云計算中的角色
FPGA在云規(guī)模的網(wǎng)絡(luò)互連系統(tǒng)中應(yīng)當(dāng)充當(dāng)怎樣的角色?
如何高效、可擴放地對FPGA+CPU的異構(gòu)系統(tǒng)進行編程?
我對FPGA業(yè)界主要的遺憾是,F(xiàn)PGA在數(shù)據(jù)中心的主流用法,從除微軟外的互聯(lián)網(wǎng)巨頭,到兩大FPGA廠商,再到學(xué)術(shù)界,大多是把FPGA當(dāng)作跟GPU一樣的計算密集型任務(wù)的加速卡。然而FPGA真的很適合做GPU的事情嗎?
前面講過,F(xiàn)PGA和GPU最大的區(qū)別在于體系結(jié)構(gòu),F(xiàn)PGA更適合做需要低延遲的流式處理,GPU更適合做大批量同構(gòu)數(shù)據(jù)的處理。
由于很多人打算把FPGA當(dāng)作計算加速卡來用,兩大FPGA廠商推出的高層次編程模型也是基于OpenCL,模仿GPU基于共享內(nèi)存的批處理模式。CPU要交給FPGA做一件事,需要先放進FPGA板上的DRAM,然后告訴FPGA開始執(zhí)行,F(xiàn)PGA把執(zhí)行結(jié)果放回DRAM,再通知CPU去取回。
CPU和FPGA之間本來可以通過PCIe高效通信,為什么要到板上的DRAM繞一圈?也許是工程實現(xiàn)的問題,我們發(fā)現(xiàn)通過OpenCL寫DRAM、啟動kernel、讀DRAM一個來回,需要1.8毫秒。而通過PCIe(DMA)來通信,卻只要1~2微秒。
PCIeI/Ochannel與OpenCL的性能比較??v坐標為對數(shù)坐標。
OpenCL里面多個kernel之間的通信就更夸張了,默認的方式也是通過共享內(nèi)存。
本文開篇就講,F(xiàn)PGA比CPU和GPU能效高,體系結(jié)構(gòu)上的根本優(yōu)勢是無指令、無需共享內(nèi)存。使用共享內(nèi)存在多個kernel之間通信,在順序通信(FIFO)的情況下是毫無必要的。況且FPGA上的DRAM一般比GPU上的DRAM慢很多。
因此我們提出了ClickNP網(wǎng)絡(luò)編程框架[5],使用管道(channel)而非共享內(nèi)存來在執(zhí)行單元(element/kernel)間、執(zhí)行單元和主機軟件間進行通信。
需要共享內(nèi)存的應(yīng)用,也可以在管道的基礎(chǔ)上實現(xiàn),畢竟CSP(CommunicatingSequentialProcess)和共享內(nèi)存理論上是等價的嘛。ClickNP目前還是在OpenCL基礎(chǔ)上的一個框架,受到C語言描述硬件的局限性(當(dāng)然HLS比(Verilog)的開發(fā)效率確實高多了)。理想的硬件描述語言,大概不會是C語言吧。
ClickNP使用channel在element
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年健康檢測儀項目申請報告模范
- 2025年不含膠原蛋白酶的耐堿性蛋白酶項目規(guī)劃申請報告
- 2025年流量計項目提案報告模范
- 2025年房地產(chǎn)開發(fā)經(jīng)營服務(wù)項目立項申請報告
- 2025年衛(wèi)星導(dǎo)航定位系統(tǒng)項目申請報告模范
- 2025年新型鋁鎂合金材料項目立項申請報告模板
- 2025年永磁式步進電機項目申請報告模式
- 活動邀請函范文集合七篇
- 2025年醫(yī)用注射泵項目規(guī)劃申請報告模板
- 激烈的乒乓球比賽作文400字8篇
- 大型能源集團公司信息化規(guī)劃(一)應(yīng)用系統(tǒng)架構(gòu)規(guī)劃課件
- 《三氣周瑜》兒童故事繪本ppt課件(圖文演講)
- 2023海南省圖書館公開招聘財政定額補貼人員15人(一)模擬預(yù)測(共500題)筆試參考題庫附答案詳解
- 2022年北京外國語大學(xué)博士生英語入學(xué)考試試題
- 新《煤礦安全規(guī)程》第08講 《煤礦安全規(guī)程》關(guān)于爆破事故防治的規(guī)定
- 防爆電氣設(shè)備安全管理規(guī)定
- 提高做好群眾工作的能力主講陶通艾
- 崗位價值評估表-附件一
- 門店所屬關(guān)系證明
- 《“歪腦袋”木頭樁》閱讀測試
- 有關(guān)原始股權(quán)買賣協(xié)議書通用(7篇)
評論
0/150
提交評論