国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

優化基于FPGA的深度卷積神經網絡的加速器設計

2019-11-08 02:30:04
字體:
來源:轉載
供稿:網友

http://www.openhw.org/module/forum/forum.php?mod=viewthread&tid=596480&highlight=神經網絡【卜居博客】優化基于FPGA的深度卷積神經網絡的加速器設計 

[復制鏈接]
  
熊孩子a

18

主題

176

帖子

625

積分

高級會員

Rank: 4

積分625發消息
跳轉到指定樓層樓主 發表于 2015-9-28 16:06 | 只看該作者 |只看大圖 回帖獎勵
近期,在虎姐姐(管理菌)的推薦下,看了一些大神的技術文章,感覺,跟著大神走,迷路也不愁,當然,迷路也是很難的管理菌除了推薦站內的資料,還給我推薦了幾個大牛的博客,其中一個據說是OpenHW2012大賽的參加者,大賽期間在社區分享了很多資料,大家可以看看。大賽過后,他就去別的網站發博客了他的博客很值得學習,就轉到社區了,大家一起開啟閱讀學習模式--------------------------------------------------------------------------------------------------------------------------------------

英文論文鏈接:http://cadlab.cs.ucla.edu/~cong/slides/fpga2015_chen.pdf

翻譯:卜居

【0. 摘要】

CNN已經廣泛用于圖像識別,因為它能模仿生物視覺神經的行為獲得很高識別準確率。最近,基于深度學習算法的現代應用高速增長進一步改善了研究和實現。特別地,多種基于FPGA平臺的深度CNN加速器被提出,具有高性能、可重配置、快速開發周期等優勢。

盡管目前FPGA加速器已經展示了相比通用處理器更好的性能,加速器設計空間并沒有很好發掘。一個嚴重的問題是,一個FPGA平臺的計算吞吐并未很好匹配內存帶寬。因此,已有的方案要么未充分利用邏輯資源,要么未充分利用內存帶寬,都不能獲得最佳性能。同時,深度學習應用不斷增加的復雜度和可擴展性讓這個問題更加嚴重。

為了克服這個問題,我們利用roofline模型提出一種設計分析方法。對于任意CNN設計方案,我們量化分析它使用不同優化技術(循環分塊、變換)的計算吞吐和所需內存帶寬。在roofline模型幫助下,我們可以發現最好性能和最低FPGA資源需求的解決方案。

作為案例研究,我們在VC707 FPGA板卡上實現了一個CNN加速器,并將它與之前的方案對比。我們的實現在100MHz工作頻率下可獲得61.62GFLOPS的峰值處理能力,大大優于之前的方案。

【1. 簡介】

CNN是著名的深度學習架構,從人工神經網絡擴展而來,它已經大量用于不同應用,包括視頻監控,移動機器人視覺,數據中心的圖像搜索引擎等【6】【7】【8】【10】【14】

受生物視覺神經行為的啟發,CNN用多層神經元相連處理數據,在圖像識別中可獲得很高準確率。最近,基于深度學習算法的現代應用快速增長進一步改善了DCNN的研究。

由于CNN的特殊計算模式,通用處理器實現CNN并不高效,所以很難滿足性能需求。于是,最近基于FPGA,GPU甚至ASIC的不同加速器被相繼提出【3】【4】【9】以提升CNN設計性能。在這些方案中,基于FPGA的加速器由于其更好的性能,高能效,快速開發周期以及可重配置能力吸引了越來越多研究者的注意【1】【2】【3】【6】【12】【14】。

對于任意CNN算法實現,存在很多潛在解決方案,導致巨大的設計空間。在我們的實驗中,我們發現使用同樣FPGA邏輯資源的不同方案性能有最大90%差距。尋找最優解不無價值,尤其當考慮FPGA平臺計算資源和內存帶寬限制時。實際上,如果一個加速器結構并未仔細設計,它的計算吞吐與內存帶寬不匹配。未充分利用邏輯資源或內存帶寬都意味著性能下降。

不幸的是,FPGA技術進步和深度學習算法同時將該問題復雜化了。一方面,當前FPGA平臺不斷提升的邏輯資源和內存帶寬擴大了設計空間,采取不同FPGA優化技術(如循環分塊、變換)會進一步擴大設計空間。另一方面,為了滿足現代應用需求,深度學習可擴展性和復雜性在持續增長。因此,在巨大的設計空間中尋找最優解就更加困難,亟需一種高效檢索基于FPGA的CNN設計空間的方法。

為了高效檢索設計空間,本文提出了分析設計的方法。我們的工作優于以前的方法,原因有二:

首先,【1,2,3,6,14】主要關注計算引擎優化,要么忽視了外部存儲器操作,要么直接將他們的加速器接入外部存儲器。我們的工作則考慮了緩沖區管理和帶寬優化。

其次,【12】通過數據重用減少了外部數據獲取從而獲得加速。但是這種方法不必導致最優全局性能。另外他們的方法需要對每層重新配置,不太方便。我們的加速器無需重編程FPGA就能執行不同層的計算。

本文主要貢獻如下:

* 量化分析可能解決方案的計算吞吐和所需內存帶寬;

* 在計算資源和內存帶寬限制下,我們用roofline模型識別所有可能的解決方案,討論了不同層如何尋找最優解;

* 我們提出一種CNN加速器設計,對每層使用統一的循環展開因子;

* 實現了CNN加速器,獲得61.62GFLOPS處理性能,是目前最優的;

【2. 背景】

2.1 CNN基礎

CNN受神經科學研究的啟發,經過長達20多年的演變,CNN在計算機視覺、AI(【11】【9】)領域越來越突出。作為一種經典有監督學習算法,CNN使用前饋處理用于識別,反饋用于訓練。在工業實踐中,很多應用設計者離線訓練CNN,然后用訓練好的CNN實現實時任務。因此,前饋計算速度是比較重要的。本文關注用基于FPGA的加速器設計前饋計算加速。

一個典型CNN由兩部分組成:特征提取器 + 分類器。

特征提取器用于過濾輸入圖像,產生表示圖像不同特征的特征圖。這些特征可能包括拐角,線,圓弧等,對位置和形變不敏感。特征提取器的輸出是包含這些特征的低維向量。

該向量送入分類器(通常基于傳統的人工神經網絡)分類器的目的是決定輸入屬于某個類別的可能性。

一個典型CNN包括多個計算層,例如,特征提取器可能包括幾個卷積層和可選的下采樣層。圖1展示了卷積層的計算。

卷積層收到N個特征圖作為輸入,每個輸入特征圖被一個K * K的核卷積,產生一個輸出特征圖的一個像素。滑動窗的間隔為S,一般小于K。總共產生M個輸出特征圖用于下一卷積層。卷積層的偽代碼如下:

for(row = 0; row < R; row ++){  for(col = 0; col < C; col ++)  {     for(to = 0; to < M; to ++)     {        for(ti = 0; ti < N; ti ++)        {           for(i = 0; i < K; i++)           {              for(j = 0; j < K; j++)              {                  output_fm[to][row][col] += weights[to][ti][i][j] * input_fm[ti][S * row + i][S * col + j];               }            }          }       }    }}復制代碼

在前饋計算角度,之前的論文【5】證明卷及操作會占據超過90%的總計算時間,所以本文我們關注加速卷積層。后面會考慮集成其他可選層,如下采樣層、最大池化層。

一個真實的CNN

圖2展示了一個真實CNN應用,摘自【9】。該CNN包括8層,前5層為卷積層,第6~8層為全連接人工神經網絡。該算法接收3通道224x224輸入圖像(從原始256x256三通道RGB圖像變換而來),輸出1000維向量表示1000個類別的可能性。

第一層輸入為3個224x224分辨率的特征圖,輸出96個55x55分辨率的特征圖,輸出分為兩個集,每個48組特征圖。表1記錄了該CNN的配置。

2.2 Roofline模型

計算和通信是系統吞吐優化的兩個基本限制。一個實現可能是計算受限的或訪存受限的。【15】開發了roofline性能模型來將系統性能同片外存儲帶寬、峰值計算性能相關聯。

公式(1)表示了特定硬件平臺的可達吞吐率,用GFLOPS作為評估指標。

一個應用實際GFLOPS不會高于這兩項中的最小值:第一項為所有可用計算資源提供的峰值計算能力(計算上限),第二項為給定計算-通信比時系統訪存帶寬可支持的最大浮點性能(IO帶寬上限)。計算-通信比,又稱每DRAM傳輸運算量,表示特定系統實現所需的DRAM訪問量。

圖3將roofline模型可視化,分別展示了計算上限和IO帶寬上限。算法2相比算法1有更高計算-通信比,或更好的數據重用.從圖中看到算法2充分利用所有硬件計算資源,性能優于算法1。

【3. 加速器設計探索】

本節首先提供了我們的加速器結構概覽,介紹了FPGA平臺上的幾個設計挑戰。為了克服這些挑戰,我們提出了相應的優化技術。

3.1 設計概覽

如圖4所示,一個CNN加速器設計包括:處理單元(PE),片上緩存,外部存儲器以及片內外互聯。PE是卷積的基本計算單元。用于處理的所有數據放在外部存儲器。由于片上資源限制,數據首先緩存到片上buffer,之后送入PE。這里使用雙緩沖將傳輸時間掩蓋于計算時間。片上互聯用于PE和片上緩沖的通信。

在FPGA平臺上有這樣幾個設計挑戰阻礙了高效的CNN加速器設計:首先,片上數據只有很小一部分,故循環分塊(loop tiling)是必要的,不合適的循環分塊可能降低數據重用和數據并行處理效率。

其次,PE和緩沖區組織及其互聯應仔細考慮,這樣能高效處理片上數據。第三,PE的數據處理吞吐應該匹配FPGA平臺的片外訪存帶寬。

本節我們從Code1開始優化,提供了連續步驟獲得最優處理效率。

使用了循環分塊的代碼如下:

注意到循環變量i和j并未分塊,因為CNN中卷積層kernel尺寸K太小(3~11)。

第二,我們討論了計算引擎優化并將計算性能與分塊系數建立聯系。

第三,我們使用數據重用技術減少外存訪問,建立了計算-訪存比和分塊系數的聯系;

第四,利用上述兩個變量,我們定義了設計空間,在FPGA平臺上找最優解;

第五,我們討論了怎樣為多層CNN應用選擇最好的加速器。

3.2 計算優化

本節使用標準基于多面體的數據相關性分析【13】來通過循環調度和循環分塊尺寸窮舉法衍生出一系列等效CNN設計實現。

計算優化目標是使用有效的循環展開、流水線,將計算資源完全利用。本節假設所有需要的數據都在片上。片外存儲帶寬限制將在3.3節討論。

循環展開:用于增加海量計算資源利用率。在不同循環層次展開會產生不同實現。展開的執行單元是否共享數據以及共享到什么程度會影響生成硬件的復雜性,最終影響展開的復制品數量和硬件運行頻率。某個循環維度中對一個數組的共享關系可以分為三種類型:

* 無關,如果循環變量i不出現在數組A的任何訪問函數,則稱相應循環維度對數組A是無關的;

* 獨立,如果數組A沿著某個循環維度i是完全可分的,稱i對數組A獨立;

* 相關,如果數組A沿某個循環維度i不可分,稱i對數組A依賴;

圖6顯示了不同數據共享關系時產生的硬件實現。

獨立數據共享關系:buffer和計算引擎直接連接;

無關:生成廣播式連接;

相關:產生帶多路開關的互聯;

對圖5中代碼分析相關性,結論如下表:

最終,選擇too和tii兩個循環維度做循環展開,從而避免生成復雜硬件拓撲。我們需要將循環嵌套次序做修改,讓too和tii到最內層循環,簡化HLS代碼生成。生成的硬件實現如圖7所示。

循環流水線: 是HLS里一項重要優化技術,通過將不同循環層次操作執行交疊,可提高系統吞吐。可獲得的吞吐受資源和數據相關性限制。loop-carried相關性會導致循環不能完全流水線。

經過循環展開和流水線優化的代碼如圖所示。

分塊尺寸選擇:將循環結構固定后,不同循環分塊尺寸變化會有巨大性能變化。代碼3中有效的循環分塊尺寸由公式(2)確定:

(卜居注:后面4個條件是顯然的,第一個是由于循環展開、流水線的要求而必須加以限制,為了獲得高計算能力,必須付出增加硬件面積的代價)

給定特定分塊尺寸組合(Tm, Tn, Tr, Tc),計算性能(或roofline模型中的計算上限)可以由公式(3)計算得到。從公式中看到,計算上限是Tm和Tn的函數。

(卜居注:計算上限的單位是GFLOPS,也就是計算量除以耗時。公式分子為完成代碼(1)的總乘、加計算量,分母為完成計算所需的時鐘周期,由于使用了循環分塊,所以括號內的時鐘周期數目為流水線從開始到結束的總周期,括號外為分塊外循環次數。)

3.3 訪存優化

在3.2節,我們討論了如何衍生設計變種使用不同計算上限,假設計算引擎所有數據訪問都是片上已經緩存的。但是,當考慮內存帶寬限制時,高計算上限的設計變種不一定能達到更高計算上限。本節我們將展示如何通過高效數據重用降低所需通信量。

圖9展示了一個CNN層的內存傳輸操作。輸入/輸出特征圖和權值在計算引擎開始之前就已經載入,產生的輸出特征圖寫回主存。

本地存儲提升:如果最內層循環的通信部分(圖9循環變量為ti)與某個數組是無關的,那么該循環會有冗余內存操作。本地存儲提升【13】可以用于降低冗余操作。

在圖9中,最內層循環ti與output_fm是無關的,所以訪問output_fm的操作可以提升到外層循環。注意到提升操作可以一直執行,直到與循環變量相關。

利用該技術,對output_fm的訪存需求從 

降低至 

為了數據重用而實行循環變換:為了最大可能進行數據重用,我們使用基于多面體的優化框架來發現所有有效的循環變換。表3顯示了循環層次和數組之間的數據共享關系。本地存儲提升方法用到每個可能的循環調度中,盡可能減少總通信量。

計算-通信比:用來描述每次訪存的計算操作。數據重用優化會降低總的訪存次數,進而提升計算-通信比。

圖9代碼的計算-通信比可以由公式(4)計算:

里面變量較多,分別表示如公式(5)~(11)

給定一個特定循環結構和分塊尺寸組(Tm, Tn, Tr, Tc),計算-通信比可以通過上述公式計算得到。

3.4 設計空間探索

綜上所述,給定(Tm, Tn, Tr, Tc),可以計算該設計的計算能力上限和計算-通信比。枚舉所有可能的循環次序和分塊尺寸可以產生一系列計算性能和計算-通信比對,圖8(a)顯示了例子CNN第5層在roofline模型中的所有有效解,X軸表示計算-通信比,或者每DRAM字節訪問的浮點處理性能。Y軸表示計算性能(GFLOPS)。任意點與原點(0, 0)的連線斜率表示該實現的最低訪存帶寬需求。

例如,設計P的最低訪存帶寬需求和P' 是相同的。

在圖8(b)中,帶寬上限線和計算上限是由特定平臺決定的。在帶寬上限線左側的點需要比平臺能提供的訪存帶寬更高,因此不可實現,即圖中雖然設計A取得了最高的計算性能,但平臺內存帶寬不能滿足該設計的需求,所以平臺上可以獲得的性能落到A' 位置。

平臺支持的設計定義為:位于帶寬上限線右側的集合。位于帶寬上限線的是左側點的投影。

我們探索平臺支持最優方案的策略如下:最高性能,最高計算-通信比(這樣有最小的訪存需求)。該準則基于我們可以使用更少IO口,更少LUT和硬件連線,數據傳輸引擎有更低帶寬需求。因此,點C是CNN第5層的最終選擇,它的帶寬需求為2.2GB/s。

3.5 多層CNN加速器設計

前幾節我們討論了如何為每個卷積層尋找最優實現參數。在CNN應用中,這些參數可能在不同層之間變化。表4顯示了例子CNN中每層最優展開系數(Tm和Tn):

設計一個支持不同展開系數的多個卷積層的硬件加速器將會非常有挑戰性,因為需要設計復雜的硬件架構來支持重配置計算引擎和互聯。

一種替代方案是所有層都用同一套展開系數。我們枚舉了所有可行的解來選擇最優的全局設計參數。使用統一展開系數易于設計實現,但對某些層是次優解。表4表明使用統一展開系數(64, 7),性能下降不超過5%。因此我們的實驗選擇了這個展開系數。

枚舉空間大約98,000,使用普通筆記本大約10分鐘就能完成。

【4. 實現細節】

本節描述我們解決方案的具體實現。

4.1. 系統概述

圖10 顯示了我們的實現概述。

全部系統都放在了單個FPGA芯片,使用DDR3 DRAM用于外部存儲。

MicroBlaze是一個RISC處理器軟核,用于幫助CNN加速器啟動,與主機CPU通信,以及計時。

AXI4lite總線用于傳輸命令,AXI4總線用于傳輸數據

CNN加速器作為AXI總線上一個ip。它從MicroBlaze接收命令和配置參數,與定制的數據傳輸引擎通過FIFO接口通信,該數據傳輸引擎可以獲取通過AXI4總線外部存儲。

MicroBlaze和CNN加速器使用中斷機制來提供精確的計時。

4.2 計算引擎

圖11的計算引擎部分顯示了我們實現的模塊圖。它們是基于第三節分析結果而設計的。

二級循環展開(圖2中的Tm和Tn)實現為并行執行計算引擎,使用了類似圖7的樹狀結構。對于最優的跨層設計(Tm, Tn)=(64,7),單個引擎接收來自輸入特征圖的7個輸入,以及7個來自權值的輸入以及一個bias輸入。64個復制的結構用來展開Tm。

(卜居注:由于使用了64個相同的計算引擎,每個消耗35個dsp,有7個乘法器和7個加法器組成,每個加法器消耗2個dsp,每個乘法器消耗3個dsp)

4.3 存儲子系統

片上緩沖區是基于雙緩沖設計的,工作在乒乓模式來掩蓋數據傳輸時間到計算時間中。它們一共有4組,兩組用于輸入特征圖、權值,兩組用于輸出特征圖。我們先介紹每個緩沖區的組織,隨后介紹乒乓數據傳輸機制。

每個緩沖區包括幾個獨立的緩沖區bank,每個輸入緩沖區的bank數目等于Tn(input_fm的分塊尺寸)。輸出緩沖區的bank數目等于Tm(output_fm的分塊尺寸)。

雙緩沖用于實現乒乓操作。為了簡化討論,我們使用圖9的具體例子來展示乒乓操作機制。見圖9中的代碼。“off-load”操作只有在[N/Tn]次“load”操作后才會發生一次。但每個output_fm傳輸的數據量大于input_fm,比例大約為Tm/Tn = 64/7 = 9.1,為了提高帶寬利用率,我們實現了兩套獨立通道,一個用于load操作,另一個用于off-load操作。

圖12顯示了計算和數據傳輸階段的時序圖。

第一個階段時,計算引擎處理輸入緩沖區0同時拷貝下一階段數據到輸入緩沖區1,下一階段做相反的操作。這是輸入特征圖、權值的乒乓操作。

當[N/Tn]個階段之后,輸出特征圖寫入DRAM,"off-load"操作會將位于輸出緩沖區0的結果寫回DRAM,直到輸出緩沖區1產生新的結果。這是輸出特征圖的乒乓操作。注意這兩個獨立存取通道機制適用于該框架下任何其他數據重用的場景。

4.4 外部數據傳輸引擎

使用外部數據傳輸引擎的目的有兩個:(1)可以提供加速器和外部DRAM之間的數據傳輸;(2)可以隔離加速器和平臺、工具相關帶寬特性。

圖13展示了一個實驗,在Vivado 2013.4中的AXI4總線帶寬。

兩幅圖中,我們設置兩個參數,AXI總線到DRAM控制器的位寬,和DRAM控制器的外部帶寬,在它們最高配置下單改變IP-AXI接口數目和每個IP的位寬。

在圖13(a)中,增加IP-AXI接口位寬不影響帶寬(400MB/s在100MHz頻率下)。

在圖13(b)中,更多IP接口加入AXI總線,它的帶寬幾乎線性增長,最高帶寬大約4.5GB/s。

在我們CNN加速器設計中,最小帶寬需要1.55GB/s。根據圖13,4個IP接口足夠用于這個設計。我們使用兩個AXI-IP接口用于數據傳輸引擎0,兩個用于數據傳輸引擎1,如圖10所示。

【5. 評估】

本節首先介紹我們實驗環境設置,然后提供了全面的實驗結果。

5.1 實驗設置

加速器設計用Vivado HLS(v2013.4)實現。該工具允許用C語言實現加速器,并導出RTL為一個Vivado IP核。CNN設計C代碼通過增加HLS定義的編譯向導實現并行化,并行化版本通過時序分析工具進行了驗證。快速綜合前仿真使用該工具的C仿真和C/RTL聯合仿真完成。綜合前資源報告用于設計空間探索和性能估計。導出的RTL使用Vivado v2013.4進行綜合、實現。

我們的實現基于VC707板卡,有一片Xilinx FPGA芯片Virtex 7 485t。它的工作頻率為100MHz,軟件實現運行在Intel Xeon CPU E5-2430(@2.2GHz),15MB Cache。

5.2 實驗結果

本小節我們先匯報資源占用,之后對比軟件實現(CPU上)和我們的加速器實現(FPGA上)。最后,給出了我們的實現和已有FPGA實現的對比情況。

布局布線由Vivado工具集提供。之后,工具會匯報資源占用情況,如表6所示。可以看出我們的CNN加速器已經差不多完全利用了FPGA的硬件資源。

我們的加速器和基于軟件的實現性能對比如表7所示。

我們選擇本文提出的跨層加速器作為對比。軟件在單線程和16線程使用gcc帶-O3優化選項實現。我們的FPGA實現相比單線程軟件實現獲得了17.42x加速比,同時相比16線程軟件實現獲得4.8x加速比。我們的加速器總性能達到61.62GFLOPS。

圖14顯示了我們板卡實現圖。

一個功率計用來測量運行時功率特性,大約18.6瓦特。CPU的熱設計功率為95瓦特。因此,我們可以粗略估計軟件和FPGA的功率。

表8顯示了能耗相差至少24.6倍,FPGA實現消耗更少能量。

在表5中列出了已有的不同基于FPGA的CNN加速器同我們實現的對比情況。

之前的方法是用GMACS,而我們用GFLOPS作為性能指標。我們首次將所有結果數字表示為GOPS,實現同等對比。注意每個乘加操作包括兩個整數操作。表5的第9行顯示,我們的加速器具有61.62GOPS吞吐,相比其他實現至少有3.62倍加速。

由于不同工作使用了不同并行策略和不同FPGA平臺,很難有一個直接對比。為了提供公平對比,我們進一步給出“性能密度”結果,定義為單位面積(每slice)的GOPS,可表示一個設計的效率而無需考慮所用的FPGA平臺,最終結果如表5最后一行所示,我們的設計獲得最高性能密度,比第二名高1.8倍。另外,如果使用定點計算引擎,我們的方法可以獲得更好性能和性能密度,因為定點處理單元使用更少的資源(如表9所示)。

(卜居注:定點評估有問題,加法器不需要DSP,乘法器所需資源不比浮點少)

【6. 相關工作】

本節,我們討論不同設計方法,參考其他之前的基于FPGA的CNN加速器設計工作。

首先,很多CNN應用加速器都聚焦在優化計算引擎上。實現【6】【14】【3】是三個代表。

最早的方法【6】主要用軟件搭起CNN應用,而是用一個硬件脈動結構加速器完成濾波卷積工作。這個設計省下大量硬件資源,用于自動駕駛機器人的嵌入式系統。

【14】【2】【3】在FPGA上實現了完整CNN應用,但采取了不同并行措施。【14】【2】主要利用了特征圖內部卷積核的并行性。【3】使用了輸出內、輸出間的并行性。我們的并行方法類似,但他們并未使用片上緩沖區做數據重用,而是用很高帶寬和動態重配置來提高性能。我們的實現合理進行數據重用,平衡了帶寬限制和FPGA計算能力。

其次,【12】考慮了CNN的通信問題,選擇最大化數據重用,將帶寬需求降至最低。但他們的方法并未考慮最大化計算性能,另外當換到下一層計算時他們需要為FPGA重編程(大約10秒),而我們的方案秩序消耗不到1us來配置幾個寄存器。

【7. 結論】

本文中,我們提出了基于roofline模型的CNN FPGA加速方法。首先優化CNN的計算和訪存,之后將所有可能涉及在roofline模型下建模,為每層尋找最優解。我們通過枚舉發現了最好的跨層設計。最終,我們在Xilinx VC707板卡上實現,性能優于以往的實現。

【8. 致謝】

【9. 參考文獻】


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西乌珠穆沁旗| 永城市| 铜川市| 绥棱县| 灵川县| 永春县| 富民县| 铁岭县| 南部县| 贵港市| 永昌县| 通榆县| 通许县| 息烽县| 阳曲县| 玉龙| 射洪县| 瑞丽市| 上林县| 周口市| 河津市| 大英县| 深水埗区| 赤水市| 华池县| 根河市| 九寨沟县| 兴和县| 辽源市| 湘乡市| 潮州市| 上蔡县| 珲春市| 永和县| 阜城县| 华蓥市| 连江县| 田林县| 惠水县| 峡江县| 巴东县|