[发明专利]基于PYNQ集群的高能效NEST类脑仿真器在审
申请号: | 202011495737.7 | 申请日: | 2020-12-17 |
公开(公告)号: | CN112784975A | 公开(公告)日: | 2021-05-11 |
发明(设计)人: | 柴志雷;李佩琦;郁龚健;华夏;吴秦;肖志勇;刘家航 | 申请(专利权)人: | 江南大学 |
主分类号: | G06N3/063 | 分类号: | G06N3/063 |
代理公司: | 苏州市中南伟业知识产权代理事务所(普通合伙) 32257 | 代理人: | 杨慧林 |
地址: | 214000 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 pynq 集群 能效 nest 仿真器 | ||
1.一种基于PYNQ集群的高能效NEST类脑仿真器,其特征在于,包括以下步骤:
S1:基于NEST仿真器建立单节点结构框架,实现Arm端与FPGA部分的数据传输;
S2:设计Arm端与FPGA之间的通用数据传输接口;
S3:对传输数据进行分类,并设计不同的接口进行传输,实现数据传输优化;
S4:将NEST仿真器中的权重值和双精度浮点数据类型进行数据量化转化设计;
S5:采用以太网连接PYNQ集群,通过MPI将计算数据平均分配到PYNQ集群中的每个节点,每个节点上运行单节点结构框架,实现Arm端与FPGA部分的数据传输,建立PYNQ集群的类脑仿真器。
2.如权利要求1所述的基于PYNQ集群的高能效NEST类脑仿真器,其特征在于,步骤S1中单节点结构框架的搭建过程为:通过Python设计SNN计算模型并运行在Jupyter Notebook上,在Jupyter Notebook中调用PyNN库,PyNN通过PyNEST界面或者SLI解释器运行NEST仿真器来实现相应的功能搭建。
3.如权利要求2所述的基于PYNQ集群的高能效NEST类脑仿真器,其特征在于,所述NEST仿真器中包含有AXI接口,所述AXI接口实现与FPGA部分的数据传输。
4.如权利要求1所述的基于PYNQ集群的高能效NEST类脑仿真器,其特征在于,步骤S2中,当Arm端的NEST仿真器开始运行时,首先映射一段共享内存用来存放需要FPGA计算的数据,当开始仿真时,将计算所需数据存入共享内存中,当数据准备完成后,通过软件驱动程序将内存映射的地址data_address通过AXI控制总线发送给FPGA,FPGA根据data_address读取共享内存中对应数据进行计算,计算完成后FPGA会通过AXI控制总线发送完成信号到Arm端,Arm端接收到完成信号从共享内存的指定位置读出所需数据继续运行并解除映射。
5.如权利要求1所述的基于PYNQ集群的高能效NEST类脑仿真器,其特征在于,步骤S3中,传输数据分为IAF神经元的衰减因子、IAF神经元的电流值与电压值、IAF神经元的门限值和复位电压、权重值;所述IAF神经元的衰减因子在模型运行后初始化,运行阶段不更新,衰减因子整体的数据量不超过56Byte,通过AXI_LITE接口传输衰减因子;所述IAF神经元的电流值与电压值只在模型运行的初始化阶段进行赋值,但由于神经元数量巨大,通过性能更好的AXI_Master_0接口进行数据传输;所述IAF神经元的门限值和复位电压会在更新训练图片时进行更新,更新频率较低,但每次更新时的数据量很大,对这些参数通过同一组AXI_Master_1接口进行数据传输;所述权重值更新频率并不固定,并且神经元各自独立,因此每次权重值更新数量不是定值,通过AXI_Master_2接口进行数据传输。
6.如权利要求5所述的基于PYNQ集群的高能效NEST类脑仿真器,其特征在于,在设计AXI_Master_2接口传输权重值时,并发出神经元ID。
7.如权利要求1所述的基于PYNQ集群的高能效NEST类脑仿真器,其特征在于,步骤S4中,将权重值转化为定点16位数据,定点化的计算公式为:
int16(y)=double(x)*2Q;
double(x)=int16(y)*2-Q;
其中,式中x为双精度浮点数,y为定点16位整数,Q为定标值;
对权重值转化为定点16位数据的部分将默认的双精度浮点数据类型转化为半精度浮点数进行计算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于江南大学,未经江南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011495737.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种具有减震功能的动感单车
- 下一篇:组合式旋转分散盘碳粉研磨装置