numpy 点乘_斯坦福CS217(六)Spatial点乘示例
本節(jié)課主要介紹點(diǎn)乘的軟件實(shí)現(xiàn)以及使用Spatial的硬件實(shí)現(xiàn)
本節(jié)課內(nèi)容包括
點(diǎn)乘回顧、點(diǎn)乘的軟件實(shí)現(xiàn)、點(diǎn)乘的硬件設(shè)計(jì)、點(diǎn)乘的優(yōu)化以及如何理解性能
點(diǎn)乘就是兩個(gè)等長(zhǎng)序列的累加和,它的幾何意義就是計(jì)算cos(a,b)
用軟件來(lái)仿真可以看到比較簡(jiǎn)單,numpy包提供了自帶點(diǎn)乘函數(shù)dot來(lái)實(shí)現(xiàn)功能,它的計(jì)算結(jié)果和上面寫(xiě)的遍歷累加和的結(jié)果一致。
用Spatial語(yǔ)言實(shí)現(xiàn)更加簡(jiǎn)單,用zip的方法讓矩陣aIn和bIn,先每一項(xiàng)相乘(_*_),再將每一個(gè)乘積結(jié)果累加(_+_),這樣寫(xiě)是scala語(yǔ)言的特性。
用Spatial進(jìn)行硬件設(shè)計(jì)該如何設(shè)計(jì)呢,最直觀的方法是:
首先是工作在整型矩陣的T,然后需要實(shí)現(xiàn)兩個(gè)矩陣a和b從片外存儲(chǔ)拷貝到片內(nèi)存儲(chǔ),所以片外存儲(chǔ)為a,b,用setMem的方法將aIn和bIn矩陣拷貝到片外存儲(chǔ)DRAM a和b中;片內(nèi)存儲(chǔ)為aTile和bTile。從片外DRAM拷貝到片內(nèi)SRAM需要控制邏輯,這里實(shí)現(xiàn)了一個(gè)寄存器用來(lái)存儲(chǔ)累加和accum,先用并行處理的方法將DRAM的每個(gè)條目拷貝到片內(nèi),然后將片內(nèi)存儲(chǔ)進(jìn)行累加和處理結(jié)果保存到accum寄存器。最后將accum寄存器給result寄存器,用argOut的方法輸出給Host處理器。
回想一下我們是不是必須要使用序列控制器來(lái)實(shí)現(xiàn)點(diǎn)乘?因?yàn)辄c(diǎn)乘可以看做是一個(gè)縮減的操作,數(shù)據(jù)之間使用沒(méi)有依賴關(guān)系,我們可以用流水的方式進(jìn)行處理。
將sequential語(yǔ)句改成reduce語(yǔ)句
得到硬件設(shè)計(jì)框圖如上圖所示。再考慮一下如何對(duì)該硬件結(jié)果進(jìn)行優(yōu)化?
并行處理是一個(gè)重要的思路,代價(jià)是增加加法器和乘法器的開(kāi)銷。首先是對(duì)計(jì)算內(nèi)積進(jìn)行并行處理,并行度為4
得到的硬件結(jié)構(gòu)為:
可以看到并行執(zhí)行使用了4套加法器和乘法器邏輯。
也可以對(duì)累加縮減進(jìn)行并行處理,并行度為2,得到硬件結(jié)構(gòu)如下所示
相比于內(nèi)積并行,累加縮減并行少用了乘法器,但增加了寄存器的用量,并且增加了計(jì)算延遲。不過(guò)內(nèi)積并行對(duì)于片上存儲(chǔ)帶寬要求很高,出數(shù)寬度等于原始數(shù)據(jù)寬度乘以并行度,這樣會(huì)帶來(lái)一定的開(kāi)銷(線開(kāi)銷,以及存儲(chǔ)器面積的變化)
最后思考一下性能分析,我們關(guān)心的一個(gè)是完成計(jì)算的拍數(shù),第二個(gè)就是資源利用率
從完成拍數(shù)上看,使用reduce流水的方法相比于序列串行實(shí)現(xiàn)的提升效果明顯,并行能夠縮減1倍的延遲是因?yàn)椴⑿惺褂昧藃educe(2,4)并行,限制在2倍并行。但并行對(duì)操作個(gè)數(shù)提升很大,提升了6倍多
假設(shè)使用一個(gè)更大的并行度,外層并行度為2,內(nèi)積并行度為128,tilesize并行度為256
得到的性能如下表所示
如此大的并行度對(duì)延遲的減少并不明顯,對(duì)操作吞吐量的提升很大,但是存儲(chǔ)容量也爆炸增長(zhǎng)。
從以上實(shí)驗(yàn)結(jié)果分析可以基本得出:
tilesize的大小和片上BRAM的容量直接相關(guān)
并行度和操作吞吐量直接相關(guān)
延遲受外層并行度制約。
總結(jié)
以上是生活随笔為你收集整理的numpy 点乘_斯坦福CS217(六)Spatial点乘示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 米兔积木机器人能飞吗_米兔积木机器人AP
- 下一篇: 自定义曲线_完美动力小课堂:Animat