• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    PEST:由PYNQ 集群實(shí)現(xiàn)的高能效NEST 類(lèi)腦仿真器

    2021-11-17 08:23:38李佩琦郁龔健劉家航柴志雷
    計(jì)算機(jī)與生活 2021年11期
    關(guān)鍵詞:類(lèi)腦仿真器集群

    李佩琦,郁龔健,華 夏,劉家航,柴志雷,3+

    1.江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無(wú)錫214122

    2.江南大學(xué) 人工智能與計(jì)算機(jī)學(xué)院,江蘇 無(wú)錫214122

    3.江蘇省模式識(shí)別與計(jì)算智能工程實(shí)驗(yàn)室,江蘇 無(wú)錫214122

    當(dāng)前,以深度學(xué)習(xí)為代表的智能計(jì)算系統(tǒng)仍存在系統(tǒng)能耗高、通用智能水平弱兩個(gè)主要瓶頸,難以成為解決人工智能問(wèn)題的終極手段[1]。而人類(lèi)的大腦是由約1011個(gè)神經(jīng)元、1015個(gè)突觸構(gòu)成的復(fù)雜生物體,不但具有很高的智能水平而且功耗只有20 W 左右[2],其計(jì)算模式非常值得研究借鑒。目前的類(lèi)腦計(jì)算主要基于工作機(jī)理更接近生物大腦的脈沖神經(jīng)網(wǎng)絡(luò)(spiking neural networks,SNN)來(lái)實(shí)現(xiàn)[3]。由于達(dá)到一定規(guī)模的SNN 才能展現(xiàn)出較強(qiáng)的智能水平,類(lèi)腦計(jì)算最具挑戰(zhàn)性的難題之一,就是對(duì)大規(guī)模SNN進(jìn)行仿真時(shí)保持系統(tǒng)的高性能及低功耗。

    針對(duì)類(lèi)腦計(jì)算的高能效需求,工業(yè)界和學(xué)術(shù)界嘗試采用專(zhuān)用類(lèi)腦芯片和系統(tǒng)來(lái)實(shí)現(xiàn)脈沖神經(jīng)網(wǎng)絡(luò)。2018 年曼徹斯特大學(xué)推出了SpiNNaker2 神經(jīng)芯片,該芯片相比第一代專(zhuān)門(mén)構(gòu)建了用于指數(shù)和對(duì)數(shù)運(yùn)算的硬件加速器,通過(guò)定點(diǎn)化設(shè)計(jì),在有一定精度損失的情況下提高了芯片能效比[4-5]。2020 年,英特爾推出神經(jīng)擬態(tài)系統(tǒng)Pohoiki Springs,其內(nèi)部由768顆Loihi 神經(jīng)擬態(tài)芯片組成,該系統(tǒng)在低于500 W 功耗的情況下可使用多達(dá)1 億個(gè)神經(jīng)元來(lái)執(zhí)行任務(wù)[6]。“天機(jī)芯”是清華大學(xué)類(lèi)腦計(jì)算研究中心施路平團(tuán)隊(duì)研發(fā)的一款新型人工智能芯片,整個(gè)芯片由156 個(gè)計(jì)算單元(Fcore)組成,包含約4 萬(wàn)個(gè)神經(jīng)元和1 000 萬(wàn)個(gè)突觸,支持機(jī)器學(xué)習(xí)算法和現(xiàn)有類(lèi)腦計(jì)算算法[7]。2020 年浙江大學(xué)推出了類(lèi)腦芯片“達(dá)爾文2”,該芯片由576 個(gè)內(nèi)核組成,每個(gè)內(nèi)核支持256 個(gè)神經(jīng)元,神經(jīng)突觸超過(guò)1 000 萬(wàn),通過(guò)系統(tǒng)級(jí)擴(kuò)展可構(gòu)建千萬(wàn)級(jí)神經(jīng)元類(lèi)腦計(jì)算系統(tǒng)[8]。

    專(zhuān)用的類(lèi)腦芯片與系統(tǒng)可以達(dá)到更佳的性能和功耗指標(biāo),但存在面向不同應(yīng)用時(shí)適應(yīng)性差的缺陷。當(dāng)其與應(yīng)用負(fù)載不匹配時(shí),能效表現(xiàn)會(huì)大打折扣。例如,在SpiNNaker 上運(yùn)行一個(gè)全尺寸皮質(zhì)微電路模型時(shí)[9],由于該模型中神經(jīng)元連接的突觸數(shù)量超過(guò)了SpiNNaker 設(shè)定的最優(yōu)值,平臺(tái)無(wú)法運(yùn)行在最優(yōu)狀態(tài),計(jì)算能效還不如基于高性能集群的NEST 軟件模擬方式[10]或單塊GPU(graphics processing unit)方式[11]。

    類(lèi)腦計(jì)算的另一種實(shí)現(xiàn)方式是以軟件方式構(gòu)建類(lèi)腦仿真器,目前比較成熟的類(lèi)腦仿真器如Brain[12]、NEST[13]、BindsNET[14]等已得到了大量的應(yīng)用,并且形成了各自的生態(tài)。采用軟件方式實(shí)現(xiàn)具有靈活性強(qiáng)、精度高等優(yōu)點(diǎn),但存在計(jì)算復(fù)雜度高、仿真速度慢、運(yùn)行功耗高等問(wèn)題。

    軟件實(shí)現(xiàn)的類(lèi)腦仿真器中,NEST 仿真器生態(tài)完整、用戶(hù)眾多,相比其他類(lèi)腦仿真器,NEST 交互接口完備,可以在Arm、X86 等不同計(jì)算平臺(tái)上運(yùn)行,并且支持并行與分布式計(jì)算。本文首要解決的工程問(wèn)題是如何在保持良好應(yīng)用生態(tài)的前提下追求計(jì)算能效最高,因此本文的工作選擇通過(guò)PYNQ 集群加速NEST,而不是直接做類(lèi)腦芯片或系統(tǒng)。

    在基于PYNQ 集群加速NEST 時(shí),需要解決的關(guān)鍵問(wèn)題是如何通過(guò)硬件定制、軟硬件協(xié)同,使得SNN的應(yīng)用負(fù)載和硬件平臺(tái)相互最佳適配,達(dá)到最佳能效。本文提出一種基于PYNQ 集群的高能效NEST類(lèi)腦仿真器PEST,希望以此為類(lèi)腦仿真提供一個(gè)合適的計(jì)算平臺(tái),本文的主要工作如下:

    (1)構(gòu)建大規(guī)模PYNQ 集群,實(shí)現(xiàn)基于NEST 仿真器的規(guī)??缮炜s類(lèi)腦計(jì)算系統(tǒng);

    (2)針對(duì)單節(jié)點(diǎn)進(jìn)行優(yōu)化,設(shè)計(jì)軟硬件數(shù)據(jù)交互接口,通過(guò)FPGA(field programmable gate array)并行與流水化設(shè)計(jì)、計(jì)算定點(diǎn)化等實(shí)現(xiàn)IAF 神經(jīng)元FPGA硬件加速;

    (3)針對(duì)集群整體進(jìn)行優(yōu)化和分析,設(shè)計(jì)集群的網(wǎng)絡(luò)文件系統(tǒng),分析集群性能功耗平衡點(diǎn),通過(guò)消息傳遞接口(message passing interface,MPI)分布式計(jì)算實(shí)現(xiàn)PEST 高能效計(jì)算。

    1 NEST 仿真器

    NEST 是一個(gè)可以構(gòu)建大規(guī)模神經(jīng)網(wǎng)絡(luò)模型的脈沖神經(jīng)網(wǎng)絡(luò)仿真器。它包含了50 多種神經(jīng)元模型和10 余種突觸模型[15]。在NEST 中,不同的神經(jīng)元和突觸模型可以共存,任何兩個(gè)神經(jīng)元都可以有不同性質(zhì)的多重連接。NEST的另一個(gè)特點(diǎn)是可以進(jìn)行擴(kuò)展,用戶(hù)可以添加自定義神經(jīng)元、突觸和設(shè)備模型[16]。目前NEST 作為主流的脈沖神經(jīng)網(wǎng)絡(luò)模擬器被廣泛使用。NEST 的應(yīng)用從基礎(chǔ)的單個(gè)神經(jīng)元實(shí)現(xiàn)[17]到復(fù)雜的人類(lèi)小腦網(wǎng)絡(luò)模型仿真[18]都有涉及,并且運(yùn)行在NEST 上的應(yīng)用都可通過(guò)Python 語(yǔ)言進(jìn)行開(kāi)發(fā)。

    如圖1 所示,NEST 仿真器在運(yùn)行時(shí)主要包含創(chuàng)建、連接、仿真3 個(gè)階段。在仿真階段中一般又分為發(fā)送、更新和收集3 個(gè)部分。針對(duì)不同的應(yīng)用場(chǎng)景,每部分的仿真時(shí)間所占的比例有一定的差異。

    Fig.1 NEST simulator running mechanism圖1 NEST 仿真器運(yùn)行機(jī)制

    NEST 仿真器通過(guò)C++進(jìn)行開(kāi)發(fā),在NEST 中包含一個(gè)獨(dú)立的PyNN 后端接口,允許與PyNN 配合使用。PyNN 是一款開(kāi)源的神經(jīng)網(wǎng)絡(luò)仿真器的通用接口,用戶(hù)可以通過(guò)PyNN 將Python 腳本直接運(yùn)行在NEST 仿真器上,實(shí)現(xiàn)通過(guò)Python 對(duì)NEST 的編程和調(diào)試。

    NEST 可支持并行與分布式計(jì)算,它通過(guò)自身包含的MPI 通信協(xié)議與多臺(tái)計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信。通過(guò)MPI 的并行編程模式可以建立一個(gè)由多臺(tái)計(jì)算機(jī)構(gòu)成的計(jì)算集群,圖2 展示了NEST 運(yùn)行小型分布式網(wǎng)絡(luò)時(shí)的運(yùn)行機(jī)制。

    Fig.2 NEST parallel distributed computing diagram圖2 NEST 并行分布式計(jì)算圖

    圖2 中,NEST 運(yùn)行在由2 臺(tái)計(jì)算機(jī)(節(jié)點(diǎn))構(gòu)成的分布式計(jì)算平臺(tái)上,NEST 進(jìn)行分布式計(jì)算時(shí)會(huì)將要計(jì)算的神經(jīng)元平均分配給每個(gè)節(jié)點(diǎn),圖中設(shè)定4 個(gè)IAF 神經(jīng)元,因此每個(gè)節(jié)點(diǎn)分配2 個(gè),Proxy 用來(lái)表示存在于其他節(jié)點(diǎn)上的神經(jīng)元id。Sg 和Sd 分別代表脈沖生成器和脈沖探測(cè)器,這兩部分需要在每個(gè)節(jié)點(diǎn)上進(jìn)行構(gòu)建。

    2 基于PYNQ 的計(jì)算集群設(shè)計(jì)與搭建

    2.1 PYNQ-Z2 計(jì)算節(jié)點(diǎn)

    計(jì)算集群采用Xilinx PYNQ-Z2 開(kāi)發(fā)板構(gòu)建。其主芯片為Zynq 7020,該芯片是Xilinx 公司推出的全可編程SoC 芯片(all programmable system on chips,APSOC)。如圖3,它主要由ARM 處理器(processing system,PS)和可編程邏輯FPGA(programmable logic,PL)兩大部分組成[19],兩部分的數(shù)據(jù)主要通過(guò)AXI 總線進(jìn)行傳輸。

    Fig.3 Hardware architecture of PYNQ-Z2圖3 PYNQ-Z2 硬件架構(gòu)

    2.2 PYNQ 框架

    PYNQ 框架是在FPGA+CPU 異構(gòu)系統(tǒng)的基礎(chǔ)上引入了Python,其提供了一種更友好、更易用的開(kāi)發(fā)方式,降低了FPGA 開(kāi)發(fā)門(mén)檻。PYNQ 開(kāi)源框架主要包含PYNQ 硬件庫(kù)和Overlay 設(shè)計(jì)兩部分[20]。PYNQ硬件庫(kù)可用于加速軟件應(yīng)用程序,或?yàn)樘囟☉?yīng)用程序定制專(zhuān)用硬件平臺(tái)。Overlay 設(shè)計(jì)由兩個(gè)主要部分組成,一個(gè)是PL 設(shè)計(jì)(生成bitstream),另一個(gè)是Tcl項(xiàng)目框圖文件。PL 設(shè)計(jì)通常是高度優(yōu)化的特定任務(wù),Overlay 通常設(shè)計(jì)為可配置的,可用于不同的應(yīng)用程序中。

    圖4 為PYNQ 框架硬件結(jié)構(gòu)圖,用戶(hù)通過(guò)PC 訪問(wèn)ARM 端的Jupyter,在Jupyter 中可以調(diào)用PYNQ 硬件庫(kù)控制FPGA 以實(shí)現(xiàn)各種功能。

    Fig.4 Hardware structure diagram of PYNQ framework圖4 PYNQ 框架硬件結(jié)構(gòu)圖

    2.3 PYNQ-Z2 計(jì)算節(jié)點(diǎn)

    2.3.1 整體設(shè)計(jì)

    Fig.5 Cluster hardware structure diagram圖5 集群硬件結(jié)構(gòu)圖

    PYNQ 集群的結(jié)構(gòu)設(shè)計(jì)如圖5 所示,整體可以分為三層:第一層為計(jì)算節(jié)點(diǎn)層;第二層為網(wǎng)絡(luò)交互層;第三層為系統(tǒng)控制層。計(jì)算節(jié)點(diǎn)層在PYNQ 集群中負(fù)責(zé)數(shù)據(jù)的處理,該層每個(gè)節(jié)點(diǎn)間沒(méi)有連接關(guān)系,各節(jié)點(diǎn)都通過(guò)以太網(wǎng)連接到網(wǎng)絡(luò)交互層。網(wǎng)絡(luò)交互層主要是由網(wǎng)絡(luò)交換機(jī)組成的,在運(yùn)行時(shí)計(jì)算節(jié)點(diǎn)間會(huì)相互發(fā)送脈沖信息,該層的主要任務(wù)是負(fù)責(zé)節(jié)點(diǎn)間信息傳輸,另外系統(tǒng)控制層的各種指令會(huì)通過(guò)該層發(fā)送到每一個(gè)節(jié)點(diǎn)上,該層還起到連接系統(tǒng)控制層和計(jì)算節(jié)點(diǎn)層的作用。系統(tǒng)控制層由計(jì)算節(jié)點(diǎn)中的主節(jié)點(diǎn)構(gòu)成,任意節(jié)點(diǎn)都可充當(dāng)主節(jié)點(diǎn),用戶(hù)可自行定義,它相比其他節(jié)點(diǎn)最大的不同是要負(fù)責(zé)計(jì)算任務(wù)的分發(fā)和接收其他節(jié)點(diǎn)處理完的計(jì)算結(jié)果,主節(jié)點(diǎn)在系統(tǒng)運(yùn)行時(shí)也要執(zhí)行相應(yīng)的計(jì)算任務(wù),整體上與其他節(jié)點(diǎn)的差異很小。

    該集群可擴(kuò)展性強(qiáng),由于在本集群中不涉及到任何的專(zhuān)用電路,可以根據(jù)需要對(duì)集群規(guī)模進(jìn)行相應(yīng)的調(diào)整。如果要對(duì)計(jì)算節(jié)點(diǎn)進(jìn)行擴(kuò)充只需要將新的計(jì)算節(jié)點(diǎn)與網(wǎng)絡(luò)交互層相連并且保證主節(jié)點(diǎn)能夠訪問(wèn)到該節(jié)點(diǎn)即可。PYNQ集群計(jì)算平臺(tái)如圖6所示。

    Fig.6 PYNQ cluster computing platform圖6 PYNQ 集群計(jì)算平臺(tái)

    2.3.2 集群計(jì)算規(guī)模

    單塊PYNQ 開(kāi)發(fā)板的內(nèi)存大小為512 MB[21],通過(guò)實(shí)際測(cè)試,在排除用于運(yùn)行系統(tǒng)和NEST 仿真器初始化所需要的內(nèi)存后,可用的內(nèi)存大小約為200 MB左右。NEST 仿真器運(yùn)行時(shí)每個(gè)神經(jīng)元和突觸所占用的內(nèi)存大小分別約為1 500 B 和50 B[22]。如果NEST 運(yùn)行在單節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)上最多可以支持14萬(wàn)個(gè)神經(jīng)元或者410 萬(wàn)個(gè)突觸的計(jì)算規(guī)模。如果多個(gè)節(jié)點(diǎn)同時(shí)工作,由于NEST 在進(jìn)行分布式計(jì)算時(shí)會(huì)將神經(jīng)元和突觸平分給全部節(jié)點(diǎn)進(jìn)行計(jì)算,在單節(jié)點(diǎn)的計(jì)算規(guī)模不變的情況下,增加節(jié)點(diǎn)數(shù)量,相當(dāng)于成倍擴(kuò)大了計(jì)算規(guī)模,理論上N節(jié)點(diǎn)的集群最大支持14×N萬(wàn)個(gè)神經(jīng)元計(jì)算或者410×N萬(wàn)個(gè)突觸計(jì)算。

    2.3.3 網(wǎng)絡(luò)設(shè)計(jì)

    集群在運(yùn)行時(shí),位于各節(jié)點(diǎn)上的神經(jīng)元在達(dá)到閾值時(shí)會(huì)發(fā)射脈沖給目標(biāo)神經(jīng)元,如果目標(biāo)神經(jīng)元位于其他節(jié)點(diǎn)上則會(huì)通過(guò)網(wǎng)絡(luò)交互層將脈沖信息發(fā)送到對(duì)應(yīng)節(jié)點(diǎn),在PYNQ 集群中使用了2 個(gè)千兆交換機(jī)通過(guò)橋接的方式構(gòu)建網(wǎng)絡(luò)交互層。NEST 中單個(gè)神經(jīng)元發(fā)送脈沖時(shí)通信數(shù)據(jù)量為4 B,并且單個(gè)神經(jīng)元脈沖發(fā)射頻率通常低于100 次/s[16]。假設(shè)每個(gè)節(jié)點(diǎn)都工作在理論最大神經(jīng)元數(shù)量下,并且全部神經(jīng)元的所有脈沖都發(fā)射到其他節(jié)點(diǎn),那么每個(gè)節(jié)點(diǎn)的通信量為53 MB/s,千兆交換機(jī)的傳輸速度高于該值,可以保證集群物理層的數(shù)據(jù)傳輸需求。

    3 基于PYNQ 集群的NEST 軟硬件協(xié)同設(shè)計(jì)

    3.1 單節(jié)點(diǎn)的實(shí)現(xiàn)與優(yōu)化

    3.1.1 單節(jié)點(diǎn)實(shí)現(xiàn)

    單節(jié)點(diǎn)設(shè)計(jì)如圖7 所示,用戶(hù)可以通過(guò)Python 設(shè)計(jì)SNN 計(jì)算模型并運(yùn)行在Jupyter Notebook 上,在Jupyter Notebook 中調(diào)用PyNN 庫(kù),PyNN 通過(guò)PyNEST界面或者SLI 解釋器運(yùn)行NEST 來(lái)實(shí)現(xiàn)相應(yīng)的功能,ARM 端的NEST 仿真器包含有AXI 接口可以實(shí)現(xiàn)與FPGA 部分的數(shù)據(jù)傳輸。由于FPGA 設(shè)計(jì)靈活、可以并行計(jì)算的特點(diǎn),可以將NEST 仿真器上適合并行計(jì)算的步驟(神經(jīng)元更新、突觸更新等)根據(jù)使用需求移植到FPGA 上進(jìn)行計(jì)算,提升NEST 仿真器的整體計(jì)算速度。

    Fig.7 Single-node PEST structure framework圖7 單節(jié)點(diǎn)PEST 結(jié)構(gòu)框架

    3.1.2 PYNQ-Z2 內(nèi)存分配

    在PYNQ 中通常會(huì)通過(guò)CMA 函數(shù)申請(qǐng)一段連續(xù)內(nèi)存來(lái)實(shí)現(xiàn)ARM 與FPGA 之間的信息交互。CMA 函數(shù)申請(qǐng)到內(nèi)存后會(huì)將內(nèi)存的起始地址發(fā)送給ARM 與FPGA,ARM 與FPGA 再將所要相互傳輸?shù)臄?shù)據(jù)寫(xiě)入到這塊內(nèi)存中以供對(duì)方通過(guò)內(nèi)存地址直接讀取。通過(guò)CMA 函數(shù)申請(qǐng)內(nèi)存可以根據(jù)實(shí)際需求申請(qǐng)內(nèi)存大小,但是采用此種方法申請(qǐng)的內(nèi)存起始地址隨機(jī),并且每次使用時(shí)都需要重新申請(qǐng)。

    為了方便ARM 與FPGA 之間進(jìn)行數(shù)據(jù)的交互,將PYNQ-Z2 的內(nèi)存空間專(zhuān)門(mén)劃分出一部分用于數(shù)據(jù)交互,避免每次使用時(shí)都要重新申請(qǐng)內(nèi)存,內(nèi)存優(yōu)化如圖8 所示。在PYNQ 中DDR 大小為512 MB,內(nèi)存地址為0x0-0x20000000,劃分的共享內(nèi)存大小由所傳輸?shù)臄?shù)據(jù)量決定,計(jì)算公式為:

    其中,ddr_size為內(nèi)存的整體大??;neuron_num為神經(jīng)元的數(shù)量;data_type為數(shù)據(jù)類(lèi)型;para_num為神經(jīng)元的參數(shù)數(shù)量。

    Fig.8 PYNQ-Z2 shared memory allocation diagram圖8 PYNQ-Z2 共享內(nèi)存分配圖

    根據(jù)公式,本設(shè)計(jì)將每個(gè)節(jié)點(diǎn)的共享內(nèi)存大小設(shè)定為64 MB,起始地址為0x1C000000,該共享內(nèi)存大小可以保證單節(jié)點(diǎn)在最大神經(jīng)元數(shù)量時(shí)每個(gè)神經(jīng)元存儲(chǔ)119 個(gè)4 B 參數(shù),滿(mǎn)足NEST 計(jì)算時(shí)的使用需求。內(nèi)存重新分配后,ARM 與FPGA 進(jìn)行數(shù)據(jù)交互可以直接將數(shù)據(jù)寫(xiě)入共享內(nèi)存中而不需要每次重新申請(qǐng)內(nèi)存。

    3.1.3 通用數(shù)據(jù)傳輸接口設(shè)計(jì)

    NEST 運(yùn)行時(shí)神經(jīng)元與突觸的類(lèi)型和數(shù)量與計(jì)算模型的需求相關(guān),在運(yùn)行不同的計(jì)算模型時(shí)NEST計(jì)算瓶頸會(huì)有很大的不同,用戶(hù)可以根據(jù)不同的計(jì)算需求將需要被加速的計(jì)算模塊放到FPGA 上進(jìn)行并行和流水化設(shè)計(jì),因此設(shè)計(jì)通用的數(shù)據(jù)傳輸接口非常必要。

    ARM 端與FPGA 兩部分?jǐn)?shù)據(jù)傳輸?shù)慕涌谠O(shè)計(jì)如圖9 所示,被加速部分為計(jì)算瓶頸,將該部分在ARM端移除,放到FPGA 部分重新設(shè)計(jì)。當(dāng)ARM 端的NEST 仿真器開(kāi)始運(yùn)行時(shí),首先映射一段共享內(nèi)存用來(lái)存放需要FPGA 計(jì)算的數(shù)據(jù),當(dāng)開(kāi)始仿真時(shí),將計(jì)算所需數(shù)據(jù)存入共享內(nèi)存中。

    Fig.9 Software and hardware general data interface structure diagram圖9 軟硬件通用數(shù)據(jù)接口結(jié)構(gòu)圖

    當(dāng)數(shù)據(jù)準(zhǔn)備完成后,通過(guò)軟件驅(qū)動(dòng)程序?qū)?nèi)存映射的地址data_address 通過(guò)AXI 控制總線發(fā)送給FPGA,F(xiàn)PGA 根據(jù)data_address 讀取共享內(nèi)存中對(duì)應(yīng)數(shù)據(jù)進(jìn)行計(jì)算。該部分的偽代碼如下所示,其中mem_size為每段數(shù)據(jù)所需要的內(nèi)存大小,fpga_address為FPGA 控制總線的基地址,offset 為控制總線的地址偏移量。

    計(jì)算完成后FPGA 會(huì)通過(guò)AXI 控制總線發(fā)送完成信號(hào)到ARM 端,ARM 端接收到完成信號(hào)從共享內(nèi)存的指定位置讀出所需數(shù)據(jù)繼續(xù)運(yùn)行并解除映射,該部分偽代碼如下所示:

    3.1.4 IAF 神經(jīng)元的硬件設(shè)計(jì)

    在NEST 仿真器中,每個(gè)神經(jīng)元的計(jì)算相對(duì)獨(dú)立,各個(gè)神經(jīng)元在進(jìn)行更新的時(shí)候不會(huì)用到其他神經(jīng)元的數(shù)據(jù)和參數(shù),該種計(jì)算方式非常適合通過(guò)FPGA 進(jìn)行并行計(jì)算。IAF 神經(jīng)元是指數(shù)泄漏積分-觸發(fā)神經(jīng)元模型,其在SNN 中應(yīng)用廣泛,計(jì)算相對(duì)復(fù)雜,很可能會(huì)成為影響計(jì)算速度的瓶頸,對(duì)其進(jìn)行硬件加速十分必要。在不應(yīng)期之前IAF 神經(jīng)元只更新部分參數(shù),只有當(dāng)不應(yīng)期到來(lái)之后,IAF 神經(jīng)元才更新膜電位的值,膜電位的計(jì)算公式如下所示:

    式中,Vm(t)為更新后的神經(jīng)元膜電位,Vm(t-1)為更新之前的神經(jīng)元膜電位,P22、P21ex、P21in、P20分別對(duì)應(yīng)膜電位衰減因子、興奮型電流衰減因子、抑制型電流衰減因子和初始化與外部電流的衰減因子,Si_syn_ex和Si_syn_in分別為興奮型電流和衰減型電流,Sie為外部輸入電流,Si0為初始化電流。

    針對(duì)上述的計(jì)算方法,IAF 神經(jīng)元的硬件電路設(shè)計(jì)如圖10 所示,整個(gè)硬件電路分為三個(gè)階段:第一階段的主要工作是將單個(gè)神經(jīng)元計(jì)算所需要的衰減值、電流值和更新前的膜電位Vm(t-1)送入計(jì)算單元中進(jìn)行計(jì)算,得到最新的膜電位Vm(t);第二階段的工作是將Vm(t)與門(mén)限值進(jìn)行比較,如果Vm(t)大于門(mén)限值則進(jìn)入第三階段,否則將Vm(t)值暫存用于下一次的計(jì)算;第三階段Vm(t)會(huì)進(jìn)行復(fù)位并將該神經(jīng)元ID存入IDBuffer用于后續(xù)的計(jì)算。

    Fig.10 Hardware implementation of IAF neuron圖10 IAF 神經(jīng)元硬件實(shí)現(xiàn)

    在NEST 仿真器中神經(jīng)元計(jì)算為串行計(jì)算,正常情況下神經(jīng)元讀寫(xiě)數(shù)據(jù)各需要一個(gè)時(shí)鐘周期,假設(shè)單個(gè)神經(jīng)元的計(jì)算時(shí)間(latency)為N+2 個(gè)時(shí)鐘周期,當(dāng)串行計(jì)算時(shí)整體的計(jì)算時(shí)間為神經(jīng)元數(shù)量與單個(gè)神經(jīng)元計(jì)算時(shí)間的乘積。

    由于每個(gè)神經(jīng)元的計(jì)算參數(shù)各自獨(dú)立,神經(jīng)元間的數(shù)據(jù)沒(méi)有相互依賴(lài)性,可以對(duì)神經(jīng)元計(jì)算部分進(jìn)行并行化處理,但由于數(shù)據(jù)吞吐量和FPGA 邏輯資源的限制,計(jì)算并行度有一定的局限性,通過(guò)設(shè)計(jì)流水化的計(jì)算結(jié)構(gòu)可以在資源受限的情況下大幅提高資源利用率,提高整體的計(jì)算性能。

    針對(duì)IAF 神經(jīng)元的流水化設(shè)計(jì)如圖11 所示,IAF神經(jīng)元的計(jì)算過(guò)程在圖中簡(jiǎn)化為讀取數(shù)據(jù)(Rd)、計(jì)算(Ex)、寫(xiě)回?cái)?shù)據(jù)(Wr)三部分,其中num代表并行計(jì)算的神經(jīng)元數(shù)量,每個(gè)神經(jīng)元的計(jì)算時(shí)間同樣為N+2 個(gè)時(shí)鐘周期,當(dāng)同時(shí)使用并行處理和流水化操作后,其總體計(jì)算時(shí)間公式如下所示:

    式中,all_latancy代表計(jì)算所需要的整體時(shí)間,latency代表單個(gè)神經(jīng)元的計(jì)算時(shí)間,neuron_num為整體的神經(jīng)元數(shù)量,num為神經(jīng)元計(jì)算時(shí)的并行度。

    Fig.11 IAF neuron pipelining data processing圖11 IAF 神經(jīng)元流水化數(shù)據(jù)處理

    3.1.5 IAF 神經(jīng)元數(shù)據(jù)傳輸優(yōu)化

    IAF 神經(jīng)元的膜電位大于門(mén)限值時(shí)會(huì)對(duì)外發(fā)射脈沖,同時(shí)更新計(jì)算參數(shù)和權(quán)重,當(dāng)通過(guò)FPGA 進(jìn)行神經(jīng)元計(jì)算時(shí),每次需要傳輸?shù)臄?shù)據(jù)量如下所示:

    其中,spike_num代表發(fā)射脈沖的神經(jīng)元數(shù)量,data_type為數(shù)據(jù)類(lèi)型,para_num為每個(gè)神經(jīng)元需要更新的參數(shù)數(shù)量。IAF 神經(jīng)元計(jì)算參數(shù)較多,并且NEST 仿真器中數(shù)據(jù)大多采用雙精度浮點(diǎn)數(shù),如果每次計(jì)算后對(duì)所有參數(shù)進(jìn)行更新則每個(gè)神經(jīng)元單次更新的數(shù)據(jù)有80 B。通過(guò)對(duì)IAF 神經(jīng)元的參數(shù)和計(jì)算結(jié)果進(jìn)行分析,神經(jīng)元的計(jì)算參數(shù)并不是每次計(jì)算后都需要更新,對(duì)全部計(jì)算參數(shù)根據(jù)不同的更新需求進(jìn)行分類(lèi),每次計(jì)算時(shí)只更新必要的數(shù)據(jù)以減少數(shù)據(jù)傳輸量,減少數(shù)據(jù)傳輸時(shí)間,輸入數(shù)據(jù)的設(shè)計(jì)如圖12所示。

    Fig.12 Data input interface diagram圖12 數(shù)據(jù)輸入接口圖

    IAF 神經(jīng)元的衰減因子在模型運(yùn)行后初始化,整體的數(shù)據(jù)量不超過(guò)56 B,并且在運(yùn)行階段不會(huì)改變,通過(guò)AXI_LITE 接口傳輸衰減因子可以減少高速接口的使用,節(jié)省資源。

    IAF 神經(jīng)元的電流值與電壓值同樣只在模型運(yùn)行的初始化階段進(jìn)行賦值,但由于神經(jīng)元數(shù)量巨大,使用性能更好的AXI_Master 接口進(jìn)行數(shù)據(jù)傳輸,可以減少數(shù)據(jù)傳輸時(shí)間,計(jì)算傳輸時(shí)間的公式如下所示:

    式中,ex_time為傳輸時(shí)間,bus_width為總線位寬,clock_frequency為時(shí)鐘頻率,由于AXI_Master 總線最大數(shù)據(jù)位寬為64 bit,在時(shí)鐘頻率為100 MHz 的情況下,總線帶寬高達(dá)763 MB/s,足夠滿(mǎn)足大量神經(jīng)元的數(shù)據(jù)傳輸要求。

    IAF 神經(jīng)元的門(mén)限值和復(fù)位電壓等參數(shù)會(huì)在更新訓(xùn)練圖片時(shí)進(jìn)行更新,更新頻率較低,但每次更新時(shí)的數(shù)據(jù)量很大,對(duì)這些參數(shù)通過(guò)同一組AXI_Master接口進(jìn)行數(shù)據(jù)傳輸。

    最后單獨(dú)設(shè)計(jì)一個(gè)AXI_Master 接口用于發(fā)出IAF 神經(jīng)元ID 并更新權(quán)重值,神經(jīng)元發(fā)射脈沖時(shí)會(huì)將該神經(jīng)元的ID 發(fā)送到ARM 端,并接收ARM 端發(fā)送過(guò)來(lái)的新權(quán)重值,因此每次FPGA 發(fā)送的神經(jīng)元ID個(gè)數(shù)與接收到的權(quán)重值數(shù)量保持一致,將這兩個(gè)相關(guān)的參數(shù)放到同一個(gè)高速接口上可以節(jié)省接口資源,還可以在每次數(shù)據(jù)傳輸時(shí)檢查數(shù)據(jù)數(shù)量是否一樣,保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。

    3.1.6 IAF 神經(jīng)元計(jì)算定點(diǎn)化

    NEST 仿真器中默認(rèn)的數(shù)據(jù)類(lèi)型為雙精度浮點(diǎn)型,如果在FPGA 中使用雙精度浮點(diǎn)型數(shù)據(jù)進(jìn)行乘法或加法運(yùn)算會(huì)大量消耗FPGA 上的DSP 資源,嚴(yán)重影響神經(jīng)元計(jì)算并行度。

    IAF 神經(jīng)元計(jì)算時(shí)包含興奮和抑制兩種類(lèi)型的衰減因子,它們?cè)谀P统跏蓟瘯r(shí)生成且都為固定值,其計(jì)算公式為:

    其中,P為衰減因子,h為模型分辨率,tau為時(shí)間常數(shù)。由公式可知,衰減因子的數(shù)值主要分布在0~1之間。

    NEST中,IAF神經(jīng)元默認(rèn)的閾值電壓為15 mV[23],當(dāng)神經(jīng)元的膜電位超過(guò)閾值電壓時(shí)神經(jīng)元發(fā)射脈沖,膜電位清零,因此,膜電位數(shù)值主要分布在0~15范圍內(nèi)。

    IAF 神經(jīng)元的權(quán)重值分為興奮權(quán)重和抑制權(quán)重,它們主要受脈沖發(fā)射率影響,權(quán)重值會(huì)隨著脈沖發(fā)射率的提升而增大。IAF 神經(jīng)元的脈沖發(fā)射率一般低于20 Hz[24],因此權(quán)重值同樣存在一定數(shù)值范圍。通過(guò)運(yùn)行不同計(jì)算模型,統(tǒng)計(jì)IAF 神經(jīng)元數(shù)據(jù)分布情況,結(jié)果如圖13 所示。

    Fig.13 Data distribution of IAF neurons圖13 IAF 神經(jīng)元數(shù)據(jù)分布

    如圖13 所示,通過(guò)測(cè)試,IAF 神經(jīng)元的權(quán)重值主要分布在-1 400~1 400 之間,其數(shù)值范圍較大并且多為整數(shù),將權(quán)重值轉(zhuǎn)化為定點(diǎn)16 bit 數(shù)據(jù),可以在保證計(jì)算精度的情況下減少數(shù)據(jù)位寬,降低資源消耗,定點(diǎn)與浮點(diǎn)數(shù)轉(zhuǎn)化的計(jì)算公式如下所示。式中x為雙精度浮點(diǎn)數(shù),y為定點(diǎn)16 bit整數(shù),Q為定標(biāo)值。

    對(duì)于權(quán)重值,當(dāng)定點(diǎn)數(shù)的數(shù)據(jù)精度為Q4(-2 048 ≤x≤2 047.937 5)時(shí)即可滿(mǎn)足使用需求。

    衰減因子和膜電位大多位于0~1 之間,進(jìn)行計(jì)算時(shí)需要較高的精度。由于膜電位整數(shù)部分最少需要5 bit數(shù)據(jù),如果使用定點(diǎn)16 bit進(jìn)行計(jì)算,數(shù)據(jù)精度最多為Q11,會(huì)存在很大的精度損失。為保證更好的數(shù)據(jù)精度,將膜電位和衰減因子轉(zhuǎn)換成半精度浮點(diǎn)數(shù)進(jìn)行計(jì)算,使用半精度浮點(diǎn)數(shù)可以減少數(shù)據(jù)位寬,減少硬件資源的開(kāi)銷(xiāo)。在Xilinx 高層次綜合語(yǔ)言中包含有半精度浮點(diǎn)數(shù)(half)的功能,在硬件設(shè)計(jì)時(shí)可以直接使用half 進(jìn)行硬件設(shè)計(jì)。half 由16 bit 數(shù)據(jù)組成,可以表示6.10×10-5~6.550 4×104范圍內(nèi)的數(shù)值,在滿(mǎn)足整數(shù)范圍的同時(shí)小數(shù)位可以達(dá)到定點(diǎn)數(shù)Q14的精度。對(duì)定點(diǎn)16 bit、half、float 和double 類(lèi)型的資源消耗進(jìn)行對(duì)比,如圖14 所示,相比之下使用定點(diǎn)16 bit和half類(lèi)型的數(shù)據(jù)可以極大節(jié)省硬件資源。

    Fig.14 Resource consumption comparison of different data types圖14 不同數(shù)據(jù)類(lèi)型資源消耗對(duì)比

    3.2 基于集群的實(shí)現(xiàn)與優(yōu)化

    3.2.1 基于PYNQ 集群的實(shí)現(xiàn)

    如圖15 所示,整個(gè)集群通過(guò)以太網(wǎng)進(jìn)行連接,集群中的每個(gè)節(jié)點(diǎn)除了包含PYNQ 異構(gòu)計(jì)算單元外,還包含一組receive buffer 和send buffer,其中receive buffer 的作用是接收其他節(jié)點(diǎn)發(fā)送過(guò)來(lái)的脈沖信息供本節(jié)點(diǎn)進(jìn)行計(jì)算;send buffer 作用與receive buffer相反,用于將本節(jié)點(diǎn)內(nèi)產(chǎn)生的脈沖發(fā)送給其他節(jié)點(diǎn)。

    Fig.15 Operation mechanism of PYNQ cluster圖15 PYNQ 集群的運(yùn)行機(jī)制

    通過(guò)MPI 在多節(jié)點(diǎn)上運(yùn)行NEST 仿真器時(shí),仿真器首先會(huì)將神經(jīng)元與突觸的整體連接關(guān)系記錄下來(lái),再根據(jù)節(jié)點(diǎn)分布情況將神經(jīng)元和突觸平均分配給每一個(gè)節(jié)點(diǎn)進(jìn)行計(jì)算。當(dāng)其中一個(gè)節(jié)點(diǎn)上的某個(gè)神經(jīng)元需要發(fā)送脈沖時(shí),該節(jié)點(diǎn)會(huì)將神經(jīng)元信息放到send buffer 中并通過(guò)以太網(wǎng)發(fā)送給目標(biāo)節(jié)點(diǎn),目標(biāo)節(jié)點(diǎn)通過(guò)receive buffer 接收脈沖信息,進(jìn)行后續(xù)的計(jì)算。計(jì)算結(jié)束后再通過(guò)MPI 將各節(jié)點(diǎn)的神經(jīng)元計(jì)算結(jié)果收集起來(lái)。

    3.2.2 PYNQ 集群計(jì)算平衡點(diǎn)分析

    在理想情況下,如果運(yùn)行相同的計(jì)算模型,集群每個(gè)節(jié)點(diǎn)分配的計(jì)算量與節(jié)點(diǎn)數(shù)成反比,節(jié)點(diǎn)越多單個(gè)節(jié)點(diǎn)的計(jì)算量越小,整體計(jì)算速度越快。但是隨著節(jié)點(diǎn)增加,集群內(nèi)節(jié)點(diǎn)間通信愈加復(fù)雜,節(jié)點(diǎn)間的通信量增加,通信時(shí)間會(huì)隨著節(jié)點(diǎn)數(shù)增多而逐漸增加,集群整體計(jì)算性能甚至?xí)诠?jié)點(diǎn)數(shù)過(guò)多時(shí)出現(xiàn)下降。

    在集群運(yùn)行時(shí)計(jì)算時(shí)間主要分為數(shù)據(jù)更新時(shí)間、通信時(shí)間和其他時(shí)間(運(yùn)行準(zhǔn)備時(shí)間、數(shù)據(jù)收集時(shí)間)這三部分。數(shù)據(jù)更新時(shí)間是集群用于計(jì)算的時(shí)間,它與計(jì)算量高度相關(guān),當(dāng)計(jì)算量一定時(shí),隨著節(jié)點(diǎn)增多該時(shí)間線性減少;其他時(shí)間根據(jù)不同的計(jì)算模型會(huì)有所不同,節(jié)點(diǎn)數(shù)量對(duì)該部分時(shí)間影響相對(duì)較小。影響集群通信時(shí)間的因素有很多,影響最大的分別為通信信息量、通信進(jìn)程數(shù)和網(wǎng)絡(luò)帶寬,MPI通信時(shí)間的計(jì)算公式如下所示:

    其中,tmpi(sendbuffer,P)為P規(guī)模下每次發(fā)送sendbuffer內(nèi)數(shù)據(jù)所需要的時(shí)間,Td為整個(gè)計(jì)算的運(yùn)行次數(shù),tbandwidth為帶寬限制所造成的時(shí)間影響。由于設(shè)計(jì)集群時(shí)對(duì)網(wǎng)絡(luò)帶寬需求進(jìn)行過(guò)分析(2.3.3小節(jié)),網(wǎng)絡(luò)帶寬滿(mǎn)足使用需求,tbandwidth可以忽略不計(jì);tmpi(sendbuffer,P)可以通過(guò)時(shí)間統(tǒng)計(jì)函數(shù)進(jìn)行實(shí)際測(cè)量,當(dāng)計(jì)算節(jié)點(diǎn)增多或者計(jì)算規(guī)模增大時(shí),tmpi(sendbuffer,P)所需要的時(shí)間會(huì)相應(yīng)增多。

    3.2.3 PYNQ 集群文件系統(tǒng)優(yōu)化

    如果對(duì)集群中某一節(jié)點(diǎn)的文件或配置進(jìn)行修改,為保證集群能夠正常運(yùn)行,需要對(duì)所有節(jié)點(diǎn)都執(zhí)行相同的操作。隨著集群節(jié)點(diǎn)數(shù)量的增多,如果對(duì)每個(gè)節(jié)點(diǎn)的文件逐個(gè)修改會(huì)相當(dāng)耗時(shí),將網(wǎng)絡(luò)文件系統(tǒng)(network file system,NFS)引入PYNQ 集群可以方便對(duì)各節(jié)點(diǎn)文件進(jìn)行管理,集群中網(wǎng)絡(luò)文件系統(tǒng)整體設(shè)計(jì)如圖16 所示。

    Fig.16 PYNQ cluster network file system structure圖16 PYNQ 集群網(wǎng)絡(luò)文件系統(tǒng)結(jié)構(gòu)

    圖16 中,PC 作為服務(wù)器端存儲(chǔ)集群的文件系統(tǒng),不起到對(duì)集群的控制作用,PYNQ 集群的文件系統(tǒng)放在PC 指定的共享文件夾中,各節(jié)點(diǎn)作為客戶(hù)端通過(guò)交換機(jī)將文件系統(tǒng)加載到本地。如果對(duì)各個(gè)節(jié)點(diǎn)添加文件或者進(jìn)行修改,只需在PC 端的文件系統(tǒng)上進(jìn)行修改即可,以此可以提高集群的使用效率。

    4 實(shí)驗(yàn)結(jié)果

    4.1 實(shí)驗(yàn)環(huán)境介紹

    4.1.1 軟硬件實(shí)驗(yàn)平臺(tái)

    軟件環(huán)境:NEST 仿真器2.14 版本,PyNN API,XilinxVivado 2018.2,XilinxVivadoHLS 2018.2,PYNQ鏡像2.4 版本。

    硬件環(huán)境:集群每個(gè)節(jié)點(diǎn)為XilinxPYNQ-Z2 開(kāi)發(fā)板(FPGA 部分BlockRAMs 資源140,DSP48E資源220,LUT 資源53 200,F(xiàn)F 資源106 400)。目前集群使用48 塊PYNQ-Z2 開(kāi)發(fā)板構(gòu)建計(jì)算節(jié)點(diǎn)層,48 塊開(kāi)發(fā)板分成兩組連接在2 臺(tái)交換機(jī)上,位于網(wǎng)絡(luò)交互層的交換機(jī)相互橋接將48 塊開(kāi)發(fā)板構(gòu)建成一個(gè)完整的集群。

    FPGA 加速部分通過(guò)Vivado HLS 進(jìn)行設(shè)計(jì),通過(guò)Vivado 工具綜合實(shí)現(xiàn)整體硬件電路并生成bitstream,計(jì)算模型運(yùn)行在Jupyter 上并通過(guò)PYNQ 框架進(jìn)行調(diào)用。

    對(duì)照組硬件環(huán)境:IntelXeonE5-2620(8 cores,主頻2.1 GHz,128 GB 內(nèi)存)和AMDRyzen5 3600X(6 cores,主頻3.8 GHz,6 GB 內(nèi)存,虛擬機(jī))。

    4.1.2 計(jì)算模型介紹

    神經(jīng)網(wǎng)絡(luò)模型1:皮質(zhì)層視覺(jué)模型

    皮質(zhì)層視覺(jué)模型是一個(gè)無(wú)監(jiān)督的圖像識(shí)別方案,該網(wǎng)絡(luò)架構(gòu)屬于麻省理工學(xué)院提出的HMAX 模型中的一種,它可以模仿生物學(xué)的機(jī)制對(duì)圖像進(jìn)行分類(lèi)[25]。如圖17 所示,該網(wǎng)絡(luò)為5 層網(wǎng)絡(luò),每層都由IAF 神經(jīng)元組成,前4 層網(wǎng)絡(luò)為模型的訓(xùn)練部分,由簡(jiǎn)單和復(fù)雜網(wǎng)絡(luò)層(S1,C1,S2,C2)交替組成;第5層的模型推理部分主要由分類(lèi)器構(gòu)成。

    Fig.17 Cortical visual model network structure圖17 皮質(zhì)層視覺(jué)模型網(wǎng)絡(luò)結(jié)構(gòu)

    皮質(zhì)層視覺(jué)模型使用Caltech 101 數(shù)據(jù)集進(jìn)行模型訓(xùn)練與結(jié)果驗(yàn)證。實(shí)際使用時(shí),數(shù)據(jù)集中的圖片按照?qǐng)D片尺寸分成128×128、200×200 和300×300 3 個(gè)數(shù)據(jù)集分別進(jìn)行測(cè)試。網(wǎng)絡(luò)中的神經(jīng)元數(shù)量與圖片尺寸成正比,并且逐層遞減(128×128 像素圖像會(huì)生成約13 萬(wàn)IAF 神經(jīng)元)。模型訓(xùn)練階段每個(gè)神經(jīng)元平均更新1 700 次,該時(shí)間占到了整體運(yùn)行時(shí)間的92%以上,神經(jīng)元在計(jì)算時(shí)相互獨(dú)立,沒(méi)有相互依賴(lài)關(guān)系,運(yùn)行該模型時(shí)非常適合通過(guò)大規(guī)模集群并行計(jì)算的方法提升計(jì)算速度。

    神經(jīng)網(wǎng)絡(luò)模型2:皮層微電路模型

    該模型模擬1 mm2小鼠大腦皮層的運(yùn)行機(jī)制,模型分為5 層,整體結(jié)構(gòu)如圖18 所示,L1 層代表大腦未被建模部分的外部輸入,Th神經(jīng)元群落代表丘腦皮層的輸入,L2/3、L4、L5 和L6 層代表4 層皮質(zhì),每層皮質(zhì)都包含一對(duì)興奮性(三角形)和抑制性(圓形)群落[9]。

    Fig.18 Cortical microcircuit model network structure圖18 皮層微電路模型網(wǎng)絡(luò)結(jié)構(gòu)

    該模型主要用于推斷局部皮質(zhì)網(wǎng)絡(luò)的連通性與活性的關(guān)系,完整規(guī)模為80 000 神經(jīng)元,但由于實(shí)驗(yàn)對(duì)照組AMD 3600X 平臺(tái)受制于可用內(nèi)存的限制,最多運(yùn)行16 000 神經(jīng)元,因此運(yùn)行該模型時(shí)選擇8 000和16 000 個(gè)IAF 神經(jīng)元進(jìn)行后續(xù)測(cè)試。該模型神經(jīng)元數(shù)量相比皮質(zhì)層視覺(jué)模型有所減少,但每個(gè)神經(jīng)元平均計(jì)算次數(shù)為1 萬(wàn)次,因此同樣存在整體計(jì)算時(shí)間過(guò)長(zhǎng)的問(wèn)題。

    4.2 PEST 運(yùn)行準(zhǔn)確率驗(yàn)證

    運(yùn)行皮質(zhì)層仿真模型的圖片訓(xùn)練部分,對(duì)比原版NEST 與單節(jié)點(diǎn)PEST 的神經(jīng)元脈沖發(fā)射率和脈沖激發(fā)圖,驗(yàn)證計(jì)算結(jié)果正確性,測(cè)試圖片選擇128×128 像素大小,IAF 神經(jīng)元數(shù)量13 萬(wàn),圖片數(shù)量10 張,每張圖片的仿真時(shí)間為170 ms,步進(jìn)值0.1,圖片縮放量分別為1.00、0.71、0.50、0.35。通過(guò)觀察運(yùn)行過(guò)程中脈沖激發(fā)圖可以驗(yàn)證計(jì)算結(jié)果的正確性,運(yùn)行結(jié)果如圖19 所示。

    Fig.19 Contrast of cortical visual model results圖19 皮質(zhì)層視覺(jué)模型結(jié)果對(duì)比

    圖19 中橫坐標(biāo)代表運(yùn)行時(shí)間,縱坐標(biāo)為神經(jīng)元序號(hào),隨著時(shí)間的推移,當(dāng)某個(gè)神經(jīng)元發(fā)射脈沖時(shí)會(huì)在圖中相應(yīng)位置打點(diǎn)。由于對(duì)比時(shí)采用完全一致的數(shù)據(jù)集和計(jì)算參數(shù),神經(jīng)元發(fā)射脈沖的時(shí)間應(yīng)大致相同,對(duì)比兩張脈沖激發(fā)圖可以發(fā)現(xiàn),單節(jié)點(diǎn)PEST與原版NEST 的脈沖激發(fā)圖基本一致,結(jié)果正確。

    在各平臺(tái)運(yùn)行皮質(zhì)層視覺(jué)模型,使用100 張圖片進(jìn)行圖片分類(lèi)測(cè)試,查看最后的圖片分類(lèi)結(jié)果是否正確。如表1 所示,通過(guò)PC 運(yùn)行單精度浮點(diǎn)與雙精度浮點(diǎn)兩個(gè)版本的NEST 進(jìn)行對(duì)比,圖片分類(lèi)準(zhǔn)確率基本一致。在單節(jié)點(diǎn)PEST 上運(yùn)行半精度浮點(diǎn)和定點(diǎn)數(shù)混合的NEST版本圖片分類(lèi)準(zhǔn)確率降低4個(gè)百分點(diǎn)。

    Table 1 Comparison of image classification test accuracy表1 圖像分類(lèi)測(cè)試準(zhǔn)確率對(duì)比

    皮層微電路模型測(cè)試時(shí)使用8 000 個(gè)神經(jīng)元的模型規(guī)模進(jìn)行測(cè)試,其運(yùn)行結(jié)果以脈沖激發(fā)率的分布情況來(lái)表示。

    Fig.20 Comparison of cortical microcircuit model results圖20 皮層微電路模型結(jié)果對(duì)比

    圖20 為8 種不同皮層網(wǎng)絡(luò)連接時(shí)的脈沖發(fā)射率分布圖,其中深色矩形塊為脈沖發(fā)射率的主要分布區(qū)間,紅色豎線為脈沖發(fā)射率中位值,紅色加號(hào)為離群點(diǎn)。對(duì)比原版NEST 與單節(jié)點(diǎn)PEST 的運(yùn)行結(jié)果發(fā)現(xiàn),脈沖發(fā)射率的主要分布區(qū)間和中位值結(jié)果完全一致,離群點(diǎn)的結(jié)果由于計(jì)算精度的影響在個(gè)別情況下稍有誤差。

    4.3 資源消耗

    設(shè)計(jì)時(shí),在保證資源開(kāi)銷(xiāo)允許的情況下,最大限度地利用了FPGA 片上資源,資源消耗如表2 所示。

    Table 2 FPGA hardware resource utilization表2 FPGA 硬件資源利用率

    由于IAF 神經(jīng)元的計(jì)算大量消耗DSP,通過(guò)對(duì)數(shù)據(jù)位寬進(jìn)行優(yōu)化,如將浮點(diǎn)數(shù)轉(zhuǎn)換成16 bit 點(diǎn)或半精度浮點(diǎn),有效減少了DSP 的使用,在提高計(jì)算并行度的同時(shí)提高了整體資源的利用率。

    4.4 PEST 集群最佳節(jié)點(diǎn)數(shù)評(píng)估

    當(dāng)把某個(gè)SNN 工作負(fù)載運(yùn)行到PEST 上時(shí),節(jié)點(diǎn)過(guò)多或過(guò)少都會(huì)影響系統(tǒng)的能效,因此需要對(duì)該工作負(fù)載分配最佳數(shù)量的計(jì)算節(jié)點(diǎn)。在對(duì)PEST 進(jìn)行性能分析時(shí)運(yùn)行皮質(zhì)層視覺(jué)模型,圖片選擇128×128、200×200 和300×300 像素的不同數(shù)據(jù)集進(jìn)行測(cè)試。首先對(duì)不同節(jié)點(diǎn)數(shù)的計(jì)算時(shí)間進(jìn)行實(shí)際測(cè)試,實(shí)驗(yàn)結(jié)果如圖21 所示。

    Fig.21 Running time comparison of cortical visual model under different number of nodes圖21 皮質(zhì)視覺(jué)模型在不同節(jié)點(diǎn)數(shù)運(yùn)行時(shí)間對(duì)比

    以128×128 數(shù)據(jù)集的運(yùn)行結(jié)果為例進(jìn)行分析,神經(jīng)元更新計(jì)算時(shí)間隨著節(jié)點(diǎn)數(shù)的增加成比例減少,通信時(shí)間隨著節(jié)點(diǎn)數(shù)的增多而逐漸增大,其他時(shí)間包括仿真的準(zhǔn)備和神經(jīng)元更新后的結(jié)果收集,這些工作由于是集群的主節(jié)點(diǎn)獨(dú)自進(jìn)行處理,花費(fèi)時(shí)間較長(zhǎng)。同時(shí)由于這些步驟為主節(jié)點(diǎn)單獨(dú)進(jìn)行,當(dāng)計(jì)算模型一致時(shí),在不同節(jié)點(diǎn)規(guī)模下的處理時(shí)間差異不大。在運(yùn)行128×128 數(shù)據(jù)集時(shí),從2 節(jié)點(diǎn)開(kāi)始計(jì)算性能依次增加,在8 節(jié)點(diǎn)時(shí)達(dá)到最佳性能,當(dāng)超過(guò)8節(jié)點(diǎn)時(shí)其計(jì)算性能受制于通信時(shí)間的增長(zhǎng)反而會(huì)出現(xiàn)下降。

    運(yùn)行其他兩個(gè)數(shù)據(jù)集時(shí)由于圖片像素增多,所生成的神經(jīng)元數(shù)量也隨之增多,計(jì)算時(shí)間隨之增加。由于神經(jīng)元計(jì)算規(guī)模增大,通信時(shí)間和神經(jīng)元更新時(shí)間都相應(yīng)增加,其分布特性與運(yùn)行小數(shù)據(jù)集時(shí)類(lèi)似,運(yùn)行200×200 和300×300 數(shù)據(jù)集時(shí),PEST 仿真器的最佳計(jì)算節(jié)點(diǎn)數(shù)分別為16 節(jié)點(diǎn)和24 節(jié)點(diǎn)。

    在PEST 上運(yùn)行8 000 和16 000 兩種神經(jīng)元規(guī)模的皮層微電路模型進(jìn)行測(cè)試,測(cè)試結(jié)果如圖22 所示。

    Fig.22 Running time comparison of cortical microcircuit model with different number of nodes圖22 皮層微電路模型在不同節(jié)點(diǎn)數(shù)運(yùn)行時(shí)間對(duì)比

    皮層微電路模型整體神經(jīng)元數(shù)量相對(duì)較少,因此不同節(jié)點(diǎn)數(shù)下神經(jīng)元更新所占的計(jì)算時(shí)間差別較小。但由于整體計(jì)算次數(shù)很多,節(jié)點(diǎn)間的通信時(shí)間和其他時(shí)間受節(jié)點(diǎn)數(shù)量的影響很大。8 000 與16 000神經(jīng)元規(guī)模分別在16 節(jié)點(diǎn)和20 節(jié)點(diǎn)時(shí)性能最佳。

    目前已有研究自動(dòng)地為工作負(fù)載分配合適的計(jì)算節(jié)點(diǎn),限于篇幅在此不再展開(kāi)介紹。

    4.5 PEST 集群性能與能效評(píng)估

    實(shí)驗(yàn)選擇PEST 和其他的PC 平臺(tái)進(jìn)行對(duì)比,測(cè)試時(shí)使用不同的計(jì)算模型和規(guī)模進(jìn)行測(cè)試,PEST 的節(jié)點(diǎn)數(shù)量選取了最佳數(shù)。由上文所述,在PEST 上運(yùn)行計(jì)算模型時(shí),數(shù)據(jù)準(zhǔn)備和數(shù)據(jù)收集是由集群中主節(jié)點(diǎn)單獨(dú)運(yùn)行,受制于PYNQ-Z2ARM 端的性能,該部分處理時(shí)間過(guò)長(zhǎng),極大影響整體運(yùn)行時(shí)間。數(shù)據(jù)準(zhǔn)備工作只在模型初始化時(shí)運(yùn)行,并且不受節(jié)點(diǎn)數(shù)量的影響,因此它可由性能更好的計(jì)算平臺(tái)處理,集群主節(jié)點(diǎn)在運(yùn)行時(shí)可將處理好的數(shù)據(jù)分發(fā)給各節(jié)點(diǎn)進(jìn)行計(jì)算。數(shù)據(jù)收集與準(zhǔn)備工作類(lèi)似,主節(jié)點(diǎn)可以只負(fù)責(zé)收集各節(jié)點(diǎn)的計(jì)算結(jié)果,而將數(shù)據(jù)處理工作交給性能更強(qiáng)的計(jì)算平臺(tái)進(jìn)行處理。因此在進(jìn)行性能與能效評(píng)估時(shí),本實(shí)驗(yàn)只針對(duì)集群與其他平臺(tái)神經(jīng)元更新部分進(jìn)行對(duì)比。表中PEST 括號(hào)中的數(shù)字為測(cè)試時(shí)的節(jié)點(diǎn)數(shù)量,各平臺(tái)之間的性能對(duì)比如表3~表5所示。

    Table 3 Performance comparison of cortical visual models of different platforms(128×128 data set)表3 不同平臺(tái)皮質(zhì)視覺(jué)模型性能對(duì)比(128×128數(shù)據(jù)集)

    通過(guò)表3~表5 可知,PEST 的運(yùn)算性能與功率隨著計(jì)算節(jié)點(diǎn)的增多而線性增加,而Xeon 2620 和AMD 3600X 的運(yùn)算性能和功率在運(yùn)行皮質(zhì)層視覺(jué)模型時(shí)基本維持不變。

    在運(yùn)行皮質(zhì)層視覺(jué)模型128×128 數(shù)據(jù)集時(shí),PEST 集群在8 節(jié)點(diǎn)時(shí)計(jì)算性能最佳,神經(jīng)元更新時(shí)間相比3600X 提升16 倍,比Xeon 2620 快23.8 倍。在300×300 數(shù)據(jù)集下24 節(jié)點(diǎn)PEST 集群神經(jīng)元更新時(shí)間相比3600X 提升44 倍,是Xeon 2620 的62.9 倍。整體計(jì)算量越大,PEST 在計(jì)算速度上的優(yōu)勢(shì)越明顯。

    Table 4 Performance comparison of cortical visual models on different platforms(200×200 data set)表4 不同平臺(tái)皮質(zhì)視覺(jué)模型性能對(duì)比(200×200數(shù)據(jù)集)

    Table 5 Performance comparison of cortical visual models on different platforms(300×300 data set)表5 不同平臺(tái)皮質(zhì)視覺(jué)模型性能對(duì)比(300×300數(shù)據(jù)集)

    PEST 在節(jié)點(diǎn)數(shù)較少時(shí)能效比較高,隨著節(jié)點(diǎn)增多更新能效比逐漸下降,而Xeon 2620 和3600X 的更新能效比整體變化不大。運(yùn)行128×128 數(shù)據(jù)集時(shí),最佳性能的PEST(8)集群相比3600X 更新能效比提升36.9 倍,相比Xeon 2620 提升49 倍。在運(yùn)行300×300數(shù)據(jù)集時(shí),性能最優(yōu)的PEST(24)更新能效比相比3600X 提升34.5 倍,相比Xeon 2620 提升42.2 倍。

    如表6、表7 所示,運(yùn)行皮層微電路模型時(shí),PEST在神經(jīng)元更新部分相比其他兩個(gè)平臺(tái)依然優(yōu)勢(shì)明顯,在模型規(guī)模為8 000 神經(jīng)元時(shí),PEST 在16 節(jié)點(diǎn)時(shí)計(jì)算性能最佳,神經(jīng)元更新時(shí)間相比3600X 提升4.6倍,比Xeon 2620 快7.5 倍。在16 000 神經(jīng)元計(jì)算規(guī)模下20 節(jié)點(diǎn)PEST 的神經(jīng)元更新時(shí)間相比3600X 提升14.3 倍,是Xeon 2620 的24.5 倍。神經(jīng)元數(shù)量越大時(shí),PEST 運(yùn)行皮層微電路模型的性能優(yōu)勢(shì)越明顯。

    Table 6 Performance comparison of cortical microcircuit models on different platforms(8 000 neurons)表6 不同平臺(tái)皮質(zhì)微電路模型性能對(duì)比(8 000神經(jīng)元)

    Table 7 Performance comparison of cortical microcircuit models on different platforms(16 000 neurons)表7 不同平臺(tái)皮質(zhì)微電路模型性能對(duì)比(16 000神經(jīng)元)

    更新能效比方面,PEST 相比其他兩個(gè)平臺(tái)依然具有優(yōu)勢(shì),在8 000 神經(jīng)元規(guī)模下,16 節(jié)點(diǎn)的PEST 更新 能效比相比3600X 提升5.3 倍,比Xeon 2620提升7.9 倍。在16 000 神經(jīng)元規(guī)模下,PEST 的更新能效比相比3600X 提升13.4 倍,比Xeon 2620 提升20.2 倍。

    通過(guò)4.4 節(jié)可知,PEST 在節(jié)點(diǎn)最佳數(shù)時(shí)的計(jì)算性能與運(yùn)行在其他節(jié)點(diǎn)數(shù)時(shí)性能差距并不明顯,用戶(hù)可以根據(jù)需求選擇適當(dāng)?shù)墓?jié)點(diǎn)數(shù)進(jìn)行模型計(jì)算,在損失一定計(jì)算速度的情況下使用更少的節(jié)點(diǎn)數(shù)進(jìn)行計(jì)算可以在能效比方面達(dá)到更好的效果。

    5 結(jié)束語(yǔ)

    本文以PYNQ-Z2 開(kāi)發(fā)板為基礎(chǔ),結(jié)合PYNQ 框架和NEST 類(lèi)腦仿真器等軟硬件設(shè)備,搭建了一套異構(gòu)類(lèi)腦計(jì)算系統(tǒng)。通過(guò)對(duì)集群中IAF 神經(jīng)元更新部分進(jìn)行優(yōu)化,增加FPGA 并行計(jì)算模塊,優(yōu)化集群文件系統(tǒng)等方式,提升了整體計(jì)算性能,簡(jiǎn)化了操作復(fù)雜度,實(shí)現(xiàn)了高性能、低功耗、規(guī)模可伸縮的PEST 類(lèi)腦計(jì)算集群,為類(lèi)腦計(jì)算提供了一種新的計(jì)算平臺(tái)。

    后期工作可以從以下幾方面進(jìn)行研究:(1)繼續(xù)針對(duì)不同神經(jīng)元或突觸類(lèi)型設(shè)計(jì)FPGA 并行優(yōu)化方案;(2)探索計(jì)算性能與功耗的最佳平衡點(diǎn),設(shè)計(jì)自動(dòng)確定性能最佳節(jié)點(diǎn)的方法;(3)優(yōu)化仿真過(guò)程中的非主要性能瓶頸,進(jìn)一步提升集群整體的計(jì)算性能。

    猜你喜歡
    類(lèi)腦仿真器集群
    世界首款類(lèi)腦互補(bǔ)視覺(jué)芯片研制成功
    基于多尺度網(wǎng)格細(xì)胞模型的無(wú)人機(jī)類(lèi)腦矢量導(dǎo)航方法
    海上小型無(wú)人機(jī)集群的反制裝備需求與應(yīng)對(duì)之策研究
    一種無(wú)人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
    電子制作(2018年11期)2018-08-04 03:25:40
    中國(guó)成立“類(lèi)腦國(guó)家實(shí)驗(yàn)室”“借鑒人腦”攻關(guān)人工智能
    Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
    勤快又呆萌的集群機(jī)器人
    基于多線程的慣導(dǎo)邏輯仿真器設(shè)計(jì)
    天文測(cè)量仿真器模擬星圖精度分析
    并行片上網(wǎng)絡(luò)仿真器ParaNSim的設(shè)計(jì)及性能分析
    丝袜脚勾引网站| 丝袜在线中文字幕| 日韩精品免费视频一区二区三区 | 国产成人精品一,二区| 欧美日本中文国产一区发布| 欧美日韩精品成人综合77777| av一本久久久久| 中文乱码字字幕精品一区二区三区| 极品少妇高潮喷水抽搐| 欧美日韩一区二区视频在线观看视频在线| 亚洲精品乱久久久久久| 能在线免费看毛片的网站| 亚洲人成网站在线播| 日日摸夜夜添夜夜添av毛片| 欧美精品一区二区免费开放| 色视频在线一区二区三区| 日韩一区二区三区影片| 久久亚洲国产成人精品v| a级毛片在线看网站| 2018国产大陆天天弄谢| 国产精品熟女久久久久浪| 新久久久久国产一级毛片| 国产精品.久久久| 成人黄色视频免费在线看| 丰满迷人的少妇在线观看| 99热6这里只有精品| 99久久人妻综合| 亚洲av.av天堂| 免费大片18禁| 国产爽快片一区二区三区| 九草在线视频观看| www.色视频.com| 精品少妇内射三级| 国产高清三级在线| 中文天堂在线官网| 狂野欧美激情性xxxx在线观看| a 毛片基地| 秋霞伦理黄片| 亚洲激情五月婷婷啪啪| 青青草视频在线视频观看| 亚洲五月色婷婷综合| 久久这里有精品视频免费| 男女免费视频国产| 欧美国产精品一级二级三级| 狂野欧美激情性bbbbbb| 十八禁网站网址无遮挡| 少妇人妻 视频| 久久 成人 亚洲| 女的被弄到高潮叫床怎么办| 免费高清在线观看日韩| 欧美精品国产亚洲| 久久久精品区二区三区| 成人免费观看视频高清| 色吧在线观看| 亚洲国产精品成人久久小说| 尾随美女入室| 日韩精品有码人妻一区| 久久午夜福利片| 国产在线一区二区三区精| 久久精品人人爽人人爽视色| 国产精品人妻久久久影院| 欧美 亚洲 国产 日韩一| 一个人免费看片子| 日韩av在线免费看完整版不卡| 色哟哟·www| 水蜜桃什么品种好| 久久鲁丝午夜福利片| 精品国产乱码久久久久久小说| 亚洲,一卡二卡三卡| 中文字幕制服av| 亚洲中文av在线| 免费播放大片免费观看视频在线观看| 人妻人人澡人人爽人人| 日韩精品免费视频一区二区三区 | 日本午夜av视频| 国产黄片视频在线免费观看| 精品人妻一区二区三区麻豆| 男的添女的下面高潮视频| 多毛熟女@视频| 99热全是精品| videosex国产| 一边亲一边摸免费视频| 日韩一区二区三区影片| 女人久久www免费人成看片| www.色视频.com| 最近手机中文字幕大全| 国产精品国产av在线观看| 亚洲精品久久久久久婷婷小说| 国产精品一区二区在线不卡| 成年av动漫网址| 亚洲成人av在线免费| 十分钟在线观看高清视频www| 免费观看的影片在线观看| 在线观看一区二区三区激情| 汤姆久久久久久久影院中文字幕| 午夜福利视频精品| 丁香六月天网| 亚洲精品自拍成人| 久久韩国三级中文字幕| 日韩精品免费视频一区二区三区 | 一区二区av电影网| 插阴视频在线观看视频| 国产午夜精品一二区理论片| 亚洲欧美成人综合另类久久久| 人妻人人澡人人爽人人| 另类亚洲欧美激情| 成人国产麻豆网| 最后的刺客免费高清国语| 精品久久久噜噜| 久久久亚洲精品成人影院| 黑人欧美特级aaaaaa片| 国产亚洲av片在线观看秒播厂| 午夜福利在线观看免费完整高清在| 啦啦啦在线观看免费高清www| 在线免费观看不下载黄p国产| 久久毛片免费看一区二区三区| 欧美精品一区二区免费开放| 午夜福利影视在线免费观看| 久久这里有精品视频免费| 国产黄频视频在线观看| 午夜91福利影院| 欧美一级a爱片免费观看看| 国产女主播在线喷水免费视频网站| 我的女老师完整版在线观看| 最后的刺客免费高清国语| 亚洲av在线观看美女高潮| 看免费成人av毛片| 国产一区二区在线观看日韩| av一本久久久久| 美女cb高潮喷水在线观看| 99热这里只有是精品在线观看| 国产高清三级在线| 国产探花极品一区二区| 老司机影院毛片| 蜜臀久久99精品久久宅男| 26uuu在线亚洲综合色| 一级毛片电影观看| 美女cb高潮喷水在线观看| 狂野欧美激情性bbbbbb| 国产乱人偷精品视频| 亚洲性久久影院| 精品熟女少妇av免费看| a级毛片免费高清观看在线播放| 国产一级毛片在线| 美女脱内裤让男人舔精品视频| 午夜激情久久久久久久| 免费黄网站久久成人精品| 在线天堂最新版资源| a级毛片免费高清观看在线播放| 香蕉精品网在线| 国产熟女欧美一区二区| 在线观看国产h片| 婷婷色av中文字幕| 高清午夜精品一区二区三区| xxxhd国产人妻xxx| 中文字幕人妻熟人妻熟丝袜美| 纵有疾风起免费观看全集完整版| 成人漫画全彩无遮挡| 九九爱精品视频在线观看| 国产成人精品无人区| 中国国产av一级| 老熟女久久久| 一区二区三区精品91| 91久久精品国产一区二区成人| 亚洲图色成人| 日韩熟女老妇一区二区性免费视频| 久久99一区二区三区| 亚洲国产av新网站| 我要看黄色一级片免费的| 国产日韩欧美亚洲二区| 欧美日韩一区二区视频在线观看视频在线| 精品久久蜜臀av无| 一级毛片我不卡| 久久久久久人妻| 伦精品一区二区三区| 成年美女黄网站色视频大全免费 | 飞空精品影院首页| 亚洲精华国产精华液的使用体验| 亚洲第一区二区三区不卡| 亚洲av成人精品一二三区| 日韩成人av中文字幕在线观看| a 毛片基地| 精品久久久噜噜| 免费观看av网站的网址| 亚洲av成人精品一二三区| 少妇猛男粗大的猛烈进出视频| 国产色婷婷99| 99热国产这里只有精品6| 亚洲国产色片| 色网站视频免费| 欧美少妇被猛烈插入视频| 亚洲av不卡在线观看| 制服丝袜香蕉在线| 热re99久久国产66热| 久热这里只有精品99| 精品久久久久久久久亚洲| 大香蕉97超碰在线| 在线精品无人区一区二区三| 日韩av免费高清视频| 亚洲国产成人一精品久久久| 久久久亚洲精品成人影院| 91久久精品国产一区二区成人| 国产淫语在线视频| 我的女老师完整版在线观看| 亚洲国产成人一精品久久久| 欧美日韩成人在线一区二区| 免费日韩欧美在线观看| 亚洲成人av在线免费| 制服人妻中文乱码| 中文字幕久久专区| 欧美bdsm另类| 国产精品国产三级国产专区5o| 免费av不卡在线播放| 黑人猛操日本美女一级片| 国产深夜福利视频在线观看| 国产精品无大码| 国产亚洲精品久久久com| 国产精品99久久久久久久久| 夫妻午夜视频| 天天影视国产精品| 亚洲怡红院男人天堂| 韩国av在线不卡| 插逼视频在线观看| av卡一久久| 亚洲欧美成人精品一区二区| 日韩av免费高清视频| 欧美日韩亚洲高清精品| 成人亚洲欧美一区二区av| 国产男女内射视频| 日本av手机在线免费观看| 大陆偷拍与自拍| 久久久久久伊人网av| 五月天丁香电影| 亚洲精品456在线播放app| 国产不卡av网站在线观看| 国产免费一级a男人的天堂| 亚洲国产欧美在线一区| 久久精品国产亚洲网站| 日韩在线高清观看一区二区三区| 久久99精品国语久久久| 久久影院123| 国产欧美日韩一区二区三区在线 | 精品久久国产蜜桃| 人妻人人澡人人爽人人| 日日啪夜夜爽| kizo精华| 成人亚洲欧美一区二区av| 成人国语在线视频| 毛片一级片免费看久久久久| 久久久久久人妻| 伦理电影大哥的女人| 99热国产这里只有精品6| 中文字幕av电影在线播放| 中文字幕免费在线视频6| 精品酒店卫生间| 国产精品无大码| 丰满迷人的少妇在线观看| 麻豆乱淫一区二区| 伦精品一区二区三区| 亚洲美女黄色视频免费看| xxxhd国产人妻xxx| 嘟嘟电影网在线观看| 久久久久国产网址| 久久午夜综合久久蜜桃| 另类亚洲欧美激情| 97在线视频观看| 一个人免费看片子| 日韩中字成人| 国产精品久久久久久久久免| 大香蕉久久成人网| 麻豆精品久久久久久蜜桃| 两个人的视频大全免费| 老司机亚洲免费影院| 人人妻人人澡人人爽人人夜夜| 久久影院123| 日韩精品免费视频一区二区三区 | 色哟哟·www| 精品亚洲成国产av| 国产伦精品一区二区三区视频9| 麻豆精品久久久久久蜜桃| 边亲边吃奶的免费视频| 亚洲欧美清纯卡通| 国产高清不卡午夜福利| videossex国产| 日本黄色日本黄色录像| 色视频在线一区二区三区| 80岁老熟妇乱子伦牲交| 国产精品三级大全| 大又大粗又爽又黄少妇毛片口| 亚洲国产av影院在线观看| 成人二区视频| 成人手机av| 51国产日韩欧美| 免费观看在线日韩| 日韩欧美精品免费久久| 欧美日本中文国产一区发布| 免费观看性生交大片5| 18+在线观看网站| 亚洲内射少妇av| 国产一区有黄有色的免费视频| 人人妻人人澡人人看| 欧美3d第一页| 国产精品一国产av| 嘟嘟电影网在线观看| 欧美日韩成人在线一区二区| 国产视频内射| av在线观看视频网站免费| 美女国产高潮福利片在线看| 亚洲国产精品一区二区三区在线| 国模一区二区三区四区视频| 最近中文字幕2019免费版| 卡戴珊不雅视频在线播放| 午夜免费男女啪啪视频观看| 一级a做视频免费观看| 免费黄频网站在线观看国产| 爱豆传媒免费全集在线观看| 十八禁高潮呻吟视频| 婷婷色综合大香蕉| 亚洲一级一片aⅴ在线观看| 黄色怎么调成土黄色| av黄色大香蕉| 免费播放大片免费观看视频在线观看| 久久久久久人妻| 69精品国产乱码久久久| 丝袜在线中文字幕| 男人操女人黄网站| 久久久久久久大尺度免费视频| 国产精品无大码| 国产视频内射| 国产午夜精品久久久久久一区二区三区| 人妻少妇偷人精品九色| 免费观看av网站的网址| 一区二区三区乱码不卡18| 看十八女毛片水多多多| 精品国产国语对白av| av有码第一页| 王馨瑶露胸无遮挡在线观看| 波野结衣二区三区在线| 久久午夜福利片| 亚洲av二区三区四区| av在线播放精品| 国产探花极品一区二区| 中文字幕av电影在线播放| 亚洲国产日韩一区二区| 卡戴珊不雅视频在线播放| www.av在线官网国产| 国产成人av激情在线播放 | 精品久久久久久久久av| 考比视频在线观看| 欧美另类一区| 中国美白少妇内射xxxbb| 搡老乐熟女国产| 80岁老熟妇乱子伦牲交| 黑人猛操日本美女一级片| 午夜免费观看性视频| √禁漫天堂资源中文www| 免费人成在线观看视频色| av又黄又爽大尺度在线免费看| 丁香六月天网| 啦啦啦在线观看免费高清www| 黄色欧美视频在线观看| 夫妻午夜视频| 国产伦理片在线播放av一区| 青青草视频在线视频观看| 欧美人与善性xxx| 日韩成人av中文字幕在线观看| 精品少妇黑人巨大在线播放| 国产高清有码在线观看视频| 色94色欧美一区二区| 91精品国产国语对白视频| 九草在线视频观看| 亚洲婷婷狠狠爱综合网| 中文字幕人妻丝袜制服| 在现免费观看毛片| 亚洲精品乱码久久久久久按摩| 黄色视频在线播放观看不卡| 亚洲激情五月婷婷啪啪| 另类精品久久| 免费播放大片免费观看视频在线观看| 极品少妇高潮喷水抽搐| 亚洲综合色网址| 亚洲国产毛片av蜜桃av| 日本猛色少妇xxxxx猛交久久| 秋霞伦理黄片| 9色porny在线观看| av有码第一页| 最近手机中文字幕大全| 中文天堂在线官网| 麻豆乱淫一区二区| 婷婷色综合大香蕉| 97在线人人人人妻| 五月玫瑰六月丁香| 国产午夜精品一二区理论片| 观看美女的网站| 伊人久久精品亚洲午夜| 一区二区三区免费毛片| 三级国产精品欧美在线观看| 亚洲欧美一区二区三区国产| 免费人妻精品一区二区三区视频| 国产精品久久久久久久久免| 极品人妻少妇av视频| 精品人妻一区二区三区麻豆| 一级片'在线观看视频| 99久久精品一区二区三区| 高清av免费在线| 少妇被粗大的猛进出69影院 | 国产免费一区二区三区四区乱码| 欧美xxⅹ黑人| 99热全是精品| 3wmmmm亚洲av在线观看| 国产亚洲av片在线观看秒播厂| 亚洲国产欧美在线一区| 热99久久久久精品小说推荐| 校园人妻丝袜中文字幕| 老司机影院毛片| 我要看黄色一级片免费的| 国产女主播在线喷水免费视频网站| 国产成人aa在线观看| 一区二区三区精品91| 国产精品久久久久久精品古装| 哪个播放器可以免费观看大片| 内地一区二区视频在线| 国产精品人妻久久久影院| 国产淫语在线视频| 久久人人爽av亚洲精品天堂| 性高湖久久久久久久久免费观看| 大香蕉97超碰在线| freevideosex欧美| 亚洲国产欧美日韩在线播放| 七月丁香在线播放| 久久精品熟女亚洲av麻豆精品| 欧美少妇被猛烈插入视频| 亚洲性久久影院| 在线观看免费高清a一片| 精品国产露脸久久av麻豆| 成年人午夜在线观看视频| 亚洲av国产av综合av卡| 久热久热在线精品观看| 桃花免费在线播放| 一级毛片aaaaaa免费看小| av一本久久久久| 国产探花极品一区二区| 一区二区三区乱码不卡18| 亚洲精品aⅴ在线观看| 国产日韩欧美视频二区| 人人妻人人澡人人看| 少妇精品久久久久久久| 狂野欧美激情性xxxx在线观看| 亚洲,欧美,日韩| 嫩草影院入口| 成人毛片a级毛片在线播放| 国产精品一二三区在线看| 五月伊人婷婷丁香| 在线观看人妻少妇| 亚洲精品国产色婷婷电影| 国产一区二区三区综合在线观看 | 亚洲国产精品国产精品| 国产成人精品婷婷| 欧美激情国产日韩精品一区| 午夜老司机福利剧场| 人妻夜夜爽99麻豆av| 亚洲第一av免费看| 777米奇影视久久| 蜜桃在线观看..| 国产成人免费无遮挡视频| 肉色欧美久久久久久久蜜桃| 97精品久久久久久久久久精品| 免费观看a级毛片全部| 午夜精品国产一区二区电影| 中文精品一卡2卡3卡4更新| 日韩在线高清观看一区二区三区| 美女福利国产在线| 两个人的视频大全免费| 嘟嘟电影网在线观看| 桃花免费在线播放| 免费看不卡的av| 少妇猛男粗大的猛烈进出视频| 成年美女黄网站色视频大全免费 | 亚洲欧美成人综合另类久久久| 国产日韩欧美在线精品| 亚洲情色 制服丝袜| 亚洲成色77777| 老司机亚洲免费影院| 日本与韩国留学比较| 久久精品国产a三级三级三级| 大片电影免费在线观看免费| 99re6热这里在线精品视频| 精品久久久精品久久久| 亚洲激情五月婷婷啪啪| 九九爱精品视频在线观看| 高清av免费在线| 国产探花极品一区二区| 国内精品宾馆在线| 亚洲色图 男人天堂 中文字幕 | a级片在线免费高清观看视频| 91久久精品国产一区二区成人| 在线看a的网站| 国产乱来视频区| 精品久久久久久电影网| 午夜视频国产福利| 美女福利国产在线| 日韩人妻高清精品专区| 高清毛片免费看| 一边亲一边摸免费视频| 黄色一级大片看看| 欧美日韩av久久| 3wmmmm亚洲av在线观看| 男女无遮挡免费网站观看| 国产黄片视频在线免费观看| 在线看a的网站| 欧美亚洲日本最大视频资源| 在线观看三级黄色| 亚洲精品美女久久av网站| 成人漫画全彩无遮挡| 免费高清在线观看日韩| 少妇熟女欧美另类| 极品人妻少妇av视频| 另类亚洲欧美激情| 99九九在线精品视频| 亚洲精品乱码久久久久久按摩| 自线自在国产av| √禁漫天堂资源中文www| 国产精品.久久久| 欧美精品亚洲一区二区| 国产欧美日韩综合在线一区二区| 午夜免费观看性视频| 少妇猛男粗大的猛烈进出视频| 中文天堂在线官网| 蜜桃久久精品国产亚洲av| 五月玫瑰六月丁香| 久久久久国产网址| 熟女人妻精品中文字幕| 又大又黄又爽视频免费| 午夜视频国产福利| 国模一区二区三区四区视频| 久久99精品国语久久久| tube8黄色片| 人人澡人人妻人| 欧美xxⅹ黑人| 久久久久久久大尺度免费视频| 日韩av免费高清视频| 女人久久www免费人成看片| 日本欧美国产在线视频| 国产午夜精品久久久久久一区二区三区| 国产色爽女视频免费观看| 免费大片18禁| 亚洲欧美一区二区三区黑人 | 久久人人爽人人片av| 99热网站在线观看| 久久av网站| 日本欧美国产在线视频| 欧美bdsm另类| 国产午夜精品一二区理论片| 精品久久久精品久久久| 如日韩欧美国产精品一区二区三区 | 国产av一区二区精品久久| 18禁在线无遮挡免费观看视频| 男女边摸边吃奶| 精品亚洲成a人片在线观看| 国产高清国产精品国产三级| 欧美日韩一区二区视频在线观看视频在线| 亚洲精品中文字幕在线视频| 亚洲内射少妇av| 亚洲av二区三区四区| 国产日韩欧美视频二区| 日韩中文字幕视频在线看片| www.av在线官网国产| 51国产日韩欧美| 国产成人免费观看mmmm| 国产成人一区二区在线| 一本一本综合久久| 日韩精品有码人妻一区| 赤兔流量卡办理| 日韩免费高清中文字幕av| 街头女战士在线观看网站| 夜夜爽夜夜爽视频| 国产精品久久久久久av不卡| 国产精品国产三级专区第一集| 国产精品麻豆人妻色哟哟久久| 日本爱情动作片www.在线观看| av网站免费在线观看视频| 精品亚洲乱码少妇综合久久| 久久影院123| 在线看a的网站| 黑人巨大精品欧美一区二区蜜桃 | 嘟嘟电影网在线观看| 国产精品三级大全| 99国产综合亚洲精品| 嘟嘟电影网在线观看| 免费av中文字幕在线| 色网站视频免费| 国产一级毛片在线| 丰满乱子伦码专区| 久久人妻熟女aⅴ| 狠狠精品人妻久久久久久综合| 狂野欧美激情性xxxx在线观看| 日本-黄色视频高清免费观看| 久久久久久久国产电影| 中国国产av一级| 国产女主播在线喷水免费视频网站| av线在线观看网站| 黑人欧美特级aaaaaa片| 欧美精品一区二区大全| 亚洲精品一区蜜桃| 天堂8中文在线网| 天天躁夜夜躁狠狠久久av| 久久久a久久爽久久v久久| 一二三四中文在线观看免费高清| 亚洲av中文av极速乱| 久久久久久久亚洲中文字幕| av卡一久久| 欧美日韩视频精品一区| 成人午夜精彩视频在线观看| 99久久精品国产国产毛片| 日韩中字成人|