日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

numpy 点乘_斯坦福CS217(六)Spatial点乘示例

發(fā)布時間:2025/3/13 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 numpy 点乘_斯坦福CS217(六)Spatial点乘示例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本節(jié)課主要介紹點乘的軟件實現(xiàn)以及使用Spatial的硬件實現(xiàn)

本節(jié)課內(nèi)容包括

點乘回顧、點乘的軟件實現(xiàn)、點乘的硬件設計、點乘的優(yōu)化以及如何理解性能

點乘就是兩個等長序列的累加和,它的幾何意義就是計算cos(a,b)

用軟件來仿真可以看到比較簡單,numpy包提供了自帶點乘函數(shù)dot來實現(xiàn)功能,它的計算結果和上面寫的遍歷累加和的結果一致。

用Spatial語言實現(xiàn)更加簡單,用zip的方法讓矩陣aIn和bIn,先每一項相乘(_*_),再將每一個乘積結果累加(_+_),這樣寫是scala語言的特性。

用Spatial進行硬件設計該如何設計呢,最直觀的方法是:

首先是工作在整型矩陣的T,然后需要實現(xiàn)兩個矩陣a和b從片外存儲拷貝到片內(nèi)存儲,所以片外存儲為a,b,用setMem的方法將aIn和bIn矩陣拷貝到片外存儲DRAM a和b中;片內(nèi)存儲為aTile和bTile。從片外DRAM拷貝到片內(nèi)SRAM需要控制邏輯,這里實現(xiàn)了一個寄存器用來存儲累加和accum,先用并行處理的方法將DRAM的每個條目拷貝到片內(nèi),然后將片內(nèi)存儲進行累加和處理結果保存到accum寄存器。最后將accum寄存器給result寄存器,用argOut的方法輸出給Host處理器。

回想一下我們是不是必須要使用序列控制器來實現(xiàn)點乘?因為點乘可以看做是一個縮減的操作,數(shù)據(jù)之間使用沒有依賴關系,我們可以用流水的方式進行處理。

將sequential語句改成reduce語句

得到硬件設計框圖如上圖所示。再考慮一下如何對該硬件結果進行優(yōu)化?

并行處理是一個重要的思路,代價是增加加法器和乘法器的開銷。首先是對計算內(nèi)積進行并行處理,并行度為4

得到的硬件結構為:

可以看到并行執(zhí)行使用了4套加法器和乘法器邏輯。

也可以對累加縮減進行并行處理,并行度為2,得到硬件結構如下所示

相比于內(nèi)積并行,累加縮減并行少用了乘法器,但增加了寄存器的用量,并且增加了計算延遲。不過內(nèi)積并行對于片上存儲帶寬要求很高,出數(shù)寬度等于原始數(shù)據(jù)寬度乘以并行度,這樣會帶來一定的開銷(線開銷,以及存儲器面積的變化)

最后思考一下性能分析,我們關心的一個是完成計算的拍數(shù),第二個就是資源利用率

從完成拍數(shù)上看,使用reduce流水的方法相比于序列串行實現(xiàn)的提升效果明顯,并行能夠縮減1倍的延遲是因為并行使用了reduce(2,4)并行,限制在2倍并行。但并行對操作個數(shù)提升很大,提升了6倍多

假設使用一個更大的并行度,外層并行度為2,內(nèi)積并行度為128,tilesize并行度為256

得到的性能如下表所示

如此大的并行度對延遲的減少并不明顯,對操作吞吐量的提升很大,但是存儲容量也爆炸增長。

從以上實驗結果分析可以基本得出:

tilesize的大小和片上BRAM的容量直接相關

并行度和操作吞吐量直接相關

延遲受外層并行度制約。

總結

以上是生活随笔為你收集整理的numpy 点乘_斯坦福CS217(六)Spatial点乘示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。