0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA加速N粒子重力并行模擬實(shí)現(xiàn)和仿真案例

電子設(shè)計(jì) ? 來源:Pynq ? 作者:Pynq ? 2020-12-03 15:18 ? 次閱讀

通過使用以200 MHz運(yùn)行的8個(gè)并行浮點(diǎn)加速器,展示小型ZU3EG SoC的科學(xué)計(jì)算能力。

硬件元件

96Boards Ultra96 ×1

Avnet AES-ACC-U96-PWR ×1

USB Cable Assembly, USB Type A Plug to Micro USB Type B Plug ×1

Mini displayport cable ×1

Micro SD card (Must be 8GB or larger)×1

DisplayPort monitor ×1

USB Mouse (Optional) ×1

USB Keyboard (Optional) ×1

軟件App與線上服務(wù)

Xilinx Vivado Design Suite

Avnet Ultra96 Pynq image v2.4

介紹

牛頓物理描述了我們宇宙中的行為和非常大的物體/粒子。根據(jù)某些假設(shè),這些定律可以應(yīng)用于天文尺寸到高爾夫球(甚至更小)尺寸的物體/粒子。不同粒子之間的相互作用由以下的重力方程控制。

在N粒子系統(tǒng)中,每個(gè)粒子經(jīng)受了其他(N-1)個(gè)粒子的力。力的組合結(jié)果導(dǎo)致了所述粒子的加速。類似地,所有其他(N-1)個(gè)粒子同時(shí)經(jīng)歷了系統(tǒng)中其他粒子對它作用的力。所得到的的所有粒子的加速度,結(jié)合空間里的初始位置,初始速度和時(shí)間不長分別得到所有N個(gè)粒子的新位置。為了簡化模型的實(shí)現(xiàn),做出了以下的假設(shè):

1. 所有粒子都是點(diǎn)質(zhì)量(質(zhì)點(diǎn)模型)

2. G=1

3. 在重力計(jì)算中引入一個(gè)修正系數(shù),以避免當(dāng)兩個(gè)點(diǎn)質(zhì)量處于完全相同的坐標(biāo)時(shí)候產(chǎn)生的誤差。

該設(shè)計(jì)已經(jīng)實(shí)現(xiàn)通過python軟件加載16bit正負(fù)整數(shù)格式的初始坐標(biāo)、質(zhì)量、修正系數(shù)和模擬時(shí)間步長。盡管Vivado環(huán)境中提供了浮點(diǎn)數(shù)的加法、減法和乘法,但我們還是努力設(shè)計(jì)自定義浮點(diǎn)數(shù)格式。

設(shè)計(jì):概念證明

算法采用python軟件實(shí)現(xiàn)和仿真,以下是硬件實(shí)現(xiàn)之前在PC上進(jìn)行粒子模擬的主要算法和屏幕截圖。

由于迭代過程,該算法具有O(N2)的計(jì)算復(fù)雜度。這是在硬件中實(shí)現(xiàn)加速器的絕佳機(jī)會。您可以嘗試使用nbody_x86.py來查看粒子模擬在軟件中的運(yùn)行速度。使用硬件實(shí)現(xiàn)的加速器可以更快地運(yùn)行粒子模擬。

該算法可被矢量化,因此如果使用矢量處理器,復(fù)雜度將會降低到O(N)。下面的示例是識別計(jì)算密集型算法的關(guān)鍵部分,并在fabric/PL中為它們提供加速器。


假設(shè)在t0時(shí)刻,所有粒子的位置和速度信息都是已知的。

考慮雙粒子系統(tǒng)。由第二個(gè)粒子引起第一個(gè)粒子的加速度計(jì)算如下:

a = (G*m2)/(r^2)n

為了保持加速度的方向信息:a = (G*m2*|r|)/(r^3)

N 物體問題:

1.上述概念可以擴(kuò)展到N個(gè)物體的體系。

2.在GRAPE-[x]中,修正系數(shù)“ε”用于研究尺寸的詳細(xì)影響。對于此項(xiàng)目,is設(shè)置為0。

3.另一個(gè)修正系數(shù)用于防止不同的顆粒彼此非常接近,即防止“r~=0”,如上面python軟件中的變量“sf”所示。

硬件設(shè)計(jì)

該設(shè)計(jì)采用8個(gè)并聯(lián)加速器發(fā)動,可完全支持多達(dá)4000多個(gè)物體并行模擬。

使用8個(gè)并行加速器的實(shí)現(xiàn)

最初的設(shè)計(jì)有一個(gè)加速器以75MHz運(yùn)行。并聯(lián)增加7個(gè)加速器是的工作頻率增加了一倍以上,功耗增加了約1W。一個(gè)加速器的數(shù)據(jù)將在后面的部分中顯示,此表給出了8個(gè)并聯(lián)加速器的數(shù)據(jù)。

性能

針對4000個(gè)粒子,該設(shè)計(jì)滿足了200MHz的定時(shí)!通過添加管道修改了浮點(diǎn)加法和乘法。

僅使用200MHz的加速器實(shí)現(xiàn) - 數(shù)據(jù)比較

盡管邏輯復(fù)雜,但實(shí)現(xiàn)在XCZU3EG上使用一個(gè)單重力計(jì)算引擎消耗了以下資源。一個(gè)重力引擎可以計(jì)算1024個(gè)粒子之間的相互作用(由輸入和輸出的BRAM深度決定)。定時(shí)器成功關(guān)閉在200MHz。流水線技術(shù)在重力引擎中實(shí)現(xiàn)。在每個(gè)本地模塊中重置流水線以實(shí)現(xiàn)優(yōu)化全局重置繞線傳播。整個(gè)設(shè)計(jì)在單個(gè)時(shí)鐘源上運(yùn)行。

浮點(diǎn)計(jì)算

由于科學(xué)計(jì)算中的數(shù)字從極小的數(shù)值到天文大值,IEEE754 FP32是浮點(diǎn)數(shù)計(jì)算的初始選擇。在IEEE754 FP32中,數(shù)字由1個(gè)符號位,8個(gè)指數(shù)位和23個(gè)尾數(shù)位表示,如圖所示:

然而,DSP48E2只能執(zhí)行27bx18b的乘法運(yùn)算。 因此,選擇使用僅具有18個(gè)尾數(shù)位的自定義浮點(diǎn)表示。 因此,該設(shè)計(jì)中的浮點(diǎn)運(yùn)算使用27b浮點(diǎn)表示。

可以這種格式表示的最小數(shù)字:+/- 1.000000000000000001 x 2 **(- 126)

可以此格式表示的最大數(shù)字:+/- 1.111111111111111111 x 2 **(127)

指數(shù)偏差為127

NaN,溢出和下溢的IEEE 754條件尚未最大限度地實(shí)施。

FP算法實(shí)現(xiàn)

實(shí)現(xiàn)了基于IPI的浮點(diǎn)運(yùn)算。 為了有效使用DSP48,浮點(diǎn)數(shù)的加,乘法被限定為27位,而由于限制,浮點(diǎn)數(shù)的逆平方根被固定為單精度浮點(diǎn)表示法。 int16到浮點(diǎn)數(shù),浮點(diǎn)數(shù)到int16也是使用Xilinx IP完成的。

流程圖

下圖顯示了RAM,計(jì)算引擎,流水線重力引擎等的最高層視圖。

重力引擎

重力引擎是設(shè)計(jì)的核心。 它是按照上圖所示的算法實(shí)現(xiàn)的。下圖顯示了重力引擎和所有15個(gè)管道的實(shí)現(xiàn)細(xì)節(jié)。

控制和狀態(tài)登記; 地址空間

所有BRAM均使用基于APB3總線的RTL開發(fā)的BRAM控制器進(jìn)行控制。 AXI -APB3橋在塊設(shè)計(jì)中實(shí)例化。 類似地,實(shí)現(xiàn)了另外的APB控制和狀態(tài)寄存器組以便控制計(jì)算引擎。

以下是地址段和寄存器空間:

設(shè)計(jì)層次結(jié)構(gòu)

i_design_1是PS系統(tǒng),i_compute_engine是PL部分中實(shí)現(xiàn)的硬件設(shè)計(jì)。

軟件流程

Python軟件是在PYNQ框架上編寫的,用于按順序執(zhí)行以下操作:

1. 計(jì)算系統(tǒng)中N粒子的x,y,z,m的初始條件,修正系數(shù)和模擬時(shí)間步長。

2. 通過將int16的x,y,z,m值加載到BRAM中來配置計(jì)算引擎

3. 啟動計(jì)算引擎

4. 等待計(jì)算引擎完成一個(gè)時(shí)間間隔的步驟

5. 從TXRAM中檢索新的x,y,z

6. 使用DisplayPort模塊創(chuàng)建DisplayPort框架。 將幀歸零,使用新數(shù)據(jù)加載幀并將幀寫入監(jiān)視器。

7. 重復(fù)!

DisplayPort配置為1280 x 720像素

粒子的新位置可能遠(yuǎn)遠(yuǎn)超出顯示器尺寸。它們只是沒有顯示。

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 加速器
    +關(guān)注

    關(guān)注

    2

    文章

    806

    瀏覽量

    38037
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    84982
收藏 人收藏

    評論

    相關(guān)推薦

    基于FPGA的ARM并行總線設(shè)計(jì)與仿真分析

    由于FPGA技術(shù)和ARM技術(shù)應(yīng)用越來越廣泛,通過設(shè)計(jì)并行總線接口來實(shí)現(xiàn)兩者之間的數(shù)據(jù)交換,可以較容易地解決快速傳輸數(shù)據(jù)的需求,因此設(shè)計(jì)滿足系統(tǒng)要求的FPGA
    發(fā)表于 08-15 10:44 ?8097次閱讀
    基于<b class='flag-5'>FPGA</b>的ARM<b class='flag-5'>并行</b>總線設(shè)計(jì)與<b class='flag-5'>仿真</b>分析

    基于FPGA的軟硬件協(xié)同仿真加速技術(shù)

    在系統(tǒng)設(shè)計(jì)中,硬件復(fù)雜電路設(shè)計(jì)的調(diào)試與仿真工作對于設(shè)計(jì)者來說十分困難。為了降低仿真復(fù)雜度,加快仿真速度,本文提出利用FPGA加速的思想,
    發(fā)表于 03-25 11:52 ?5425次閱讀

    并行3維全電磁粒子模擬軟件NEPTUNE的外加磁場模塊設(shè)計(jì)

    介紹了3維全電磁粒子模擬軟件NEPTUNE中常用外加磁場加載模塊的設(shè)計(jì)思路和方法,包括簡單的磁場分布方程和離散數(shù)值加載、螺線管磁場加載、直線及螺旋線磁場分布加載、搖擺器磁場加載以及永磁體磁場加載等
    發(fā)表于 05-13 09:12

    真心求助,基于FPGA重力感應(yīng)賽車游戲的一些問題

    是利用重力感應(yīng)實(shí)現(xiàn)控制賽車行進(jìn)過程中四個(gè)狀態(tài),前傾加速,后傾減速,左右控制方向。我們使用的是xinlinx的ISE設(shè)計(jì),那么具體設(shè)計(jì)過程中如何實(shí)現(xiàn)上述狀態(tài)
    發(fā)表于 03-21 08:52

    加速傳感器(重力感應(yīng))?

    度傳感器傾斜一個(gè)角度,重力場會在感應(yīng)場上產(chǎn)生一個(gè)分量,通過這個(gè)分量,可以測量出手機(jī)傾斜了多少角度,由此實(shí)現(xiàn)一些前后左右的控制;另外一種就是所謂的動態(tài)加速度,可以偵測速度、撞擊等.手機(jī)通過加速
    發(fā)表于 07-13 17:46

    Z軸加速度去除重力影響原理是什么

    * vecxZ + tempacc.y * vecyZ + tempacc.z * veczZ - baseZacc; /*Z軸加速度(去除重力加速度)*/”。我搞不懂原理是什么,哪位大神給指點(diǎn)指點(diǎn)。去除重力
    發(fā)表于 07-05 04:36

    重力加速度的研究

    重力加速度的研究 重力加速度是一個(gè)重要的地球物理常數(shù),其值隨地理緯度和海拔高度的不同而不同 . 準(zhǔn)確測定不同地區(qū)的重力加速度在
    發(fā)表于 11-24 15:14 ?2388次閱讀

    基于FPGA的ARM并行總線研究與仿真

    基于FPGA的ARM并行總線研究與仿真
    發(fā)表于 01-24 16:54 ?21次下載

    DSP并行系統(tǒng)的并行粒子群優(yōu)化目標(biāo)跟蹤

    DSP并行系統(tǒng)的并行粒子群優(yōu)化目標(biāo)跟蹤
    發(fā)表于 10-20 10:54 ?6次下載
    DSP<b class='flag-5'>并行</b>系統(tǒng)的<b class='flag-5'>并行</b><b class='flag-5'>粒子</b>群優(yōu)化目標(biāo)跟蹤

    改進(jìn)模擬退火與粒子群混合算法

    效率低的缺點(diǎn),對搜索策略和概率性的劣向轉(zhuǎn)移作出了改進(jìn),并將改進(jìn)后的模擬退火思想引入粒子群優(yōu)化算法中,使結(jié)合后的算法結(jié)合了粒子并行計(jì)算的特點(diǎn)和模擬
    發(fā)表于 11-30 17:25 ?1次下載
    改進(jìn)<b class='flag-5'>模擬</b>退火與<b class='flag-5'>粒子</b>群混合算法

    上海交大π2.0超算實(shí)現(xiàn)天文學(xué)N模擬粒子數(shù)的新記錄

    近日,上海交通大學(xué)π2.0實(shí)現(xiàn)天文學(xué)N模擬粒子數(shù)新突破,打破世界紀(jì)錄。
    的頭像 發(fā)表于 03-17 15:59 ?2025次閱讀

    如何使用FPGA實(shí)現(xiàn)并行結(jié)構(gòu)FFT

    及布局布線,并用ModelSim和Matlab對設(shè)計(jì)作了聯(lián)合仿真。結(jié)果表明,通過利用FPGA器件中大量的乘法器、邏輯單元及存儲器等硬件資源,采用全并行加流水結(jié)構(gòu),可在一個(gè)時(shí)鐘節(jié)拍內(nèi)完成32點(diǎn)FFT運(yùn)算的功能,設(shè)計(jì)最高運(yùn)算速度可達(dá)
    發(fā)表于 03-31 15:22 ?11次下載
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>實(shí)現(xiàn)</b>全<b class='flag-5'>并行</b>結(jié)構(gòu)FFT

    無與倫比的并行處理—FPGA加速的根本基石

    電子發(fā)燒友網(wǎng)站提供《無與倫比的并行處理—FPGA加速的根本基石.pdf》資料免費(fèi)下載
    發(fā)表于 09-15 14:57 ?3次下載
    無與倫比的<b class='flag-5'>并行</b>處理—<b class='flag-5'>FPGA</b><b class='flag-5'>加速</b>的根本基石

    粒子加速器的加速原理是啥呢?

    粒子加速器的加速原理是啥呢? 粒子加速器是一種重要的實(shí)驗(yàn)設(shè)備,用于研究粒子物理學(xué)、核物理學(xué)等領(lǐng)域
    的頭像 發(fā)表于 12-18 13:52 ?2288次閱讀

    用DE1-SOC進(jìn)行硬件加速的2D N-Body重力模擬器設(shè)計(jì)

    該項(xiàng)目的目標(biāo)是創(chuàng)建一個(gè)用DE1-SOC進(jìn)行硬件加速的2D N-Body重力模擬器。
    的頭像 發(fā)表于 04-09 11:08 ?631次閱讀
    用DE1-SOC進(jìn)行硬件<b class='flag-5'>加速</b>的2D <b class='flag-5'>N</b>-Body<b class='flag-5'>重力</b><b class='flag-5'>模擬</b>器設(shè)計(jì)