SNN simulator
这里是8月底闲来无事随便玩玩的一个项目
原链接为:https://github.com/OpenHEC/SNN-simulator-on-PYNQcluster?tab=readme-ov-file
是github上面的一个库(江南大学openheclab),具体是在FPGA上实现了针对网络中计算密集型环节设计了加速模块,可以实现多块FPGA并行计算,加速模块可以根据特定的网络结构和计算要求进行灵活的配置,从而显著提高整个系统的运算效率。
简单看了一下readme,发现这个项目使用的板卡型号和我的那个是一样的,虽然我只有一块,但是还是可以借机学习一下加速模块设计和多板卡协同计算(虽然这个可能无法实际测试)。
我直接一个开冲(bushi)
当然是先烧录一个PYNQ的镜像
这一步为插播,其实是在做完连网线和ssh/jupyter连接之后才发现的,原先内置的pynq镜像其实有点问题,于是这里重新烧录一下,感觉逻辑上来讲这一步应该放到最前面,于是就写到这里了。可能会导致ip地址前后不一致,不过应该不是什么大问题,Ciallo~(∠・ω< )⌒★
在AMD的官网我们可以下载对应的镜像,我这里是ZYNQ 7020,就下载 PYNQ-Z2,然后使用balenaetcher(随便什么软件都行)对插入SD卡的读卡器进行烧录。
但是此处烧录完成后出现了问题,板卡无法从SD卡正常启动,用读卡器插入电脑可以发现烧录是正常的,但是出现了无法启动的情况,使用uart进行检查也出现了putty没有任何输出的情况,我怀疑是pynq版本过新导致的,查阅手册后发现当时使用的版本是2.6,此处在官网下载了3.1版本,于是这里下载一个比较旧的版本(3.0.1和2.6)重新进行尝试后,发现这两个可以正常打开,通过uart打开的串口显示如下:

由此可以发现,192.168.2.99/24这个地址为静态地址,192.168.31.193这个地址为DHCP获取的动态地址,一般来讲两个应该都是可以用的。
首先是连上网线
我之前没怎么用过这个ZYNQ的网口(甚至连网线都没买),于是第一步就变成了接入FPGA的IP地址(这一步是我猜的,感觉应该是需要这一步的)
接入网线后发现没有出现新的可用IP地址,ping了一下默认IP192.168.2.1发现是失败的,可能跟我没有初始化过这个电脑的网口有关系,ip route和ip link show的结果如下:

可能需要手动给端口分配一个IP?启动:
1 | sudo ip addr add 192.168.2.2/24 dev enp58s0 |
但是之后的连接似乎还是不对,那就只能使用路由器大法了,直接把板子用网线连到路由器上,再打开路由器配置页面,查看已连接设备,找到实际编号,最后发现使用路由器会分配同一子网下的IP,最终找到了真正的IP地址为192.168.31.244(DHCP获取),ping一下:

开通控制PYNQ的终端
那么就可以通过ssh来登录一下PYNQ,默认的密码和用户名都是xilinx
1 |
|
结果居然提示我电脑的ssh和板子的ssh不匹配,有点气晕了。
只好添加允许ssh-rsa的算法的选项:
1 | ssh -oHostKeyAlgorithms=+ssh-rsa xilinx@192.168.31.167 |
也可以使用jupyter notebook来打开,这个相对来说大家会更熟悉一点,在浏览器中打开:http://pynq:9090就可以打开界面了。
关于可能出现的网络问题
由于我在学校使用校园网,这种网络环境在进行ip配置,ssh,proxy使用等相关的场景下常常出问题,比如说有时候网络出一点问题重启了一下路由器导致ip发生变化,但是解析pynq的地址没有及时变化,还是要通过ip n或者ssh xilinx@pynq查看当前实际连接的ip地址。
环境准备
项目使用PYNQ-Z2开发板,v2.5 PYNQ镜像,主要使用了NEST和PyNN完成项目。
作者为我们准备了jupyter notebook的开发环境配置教程,直接安装相关依赖:
1 |
|
由于使用rye管理python环境时会出现一些权限(其实应该是路径硬编码的问题),使用以下方式进行配置:
1 |
|
然后去下载nest,原项目使用的是2.14版本,实际情况是nest版本过旧与我电脑其他文件有版本冲突,所以我选择使用其他版本的nest,之后完成nest的安装。
(其实python 也有一个nest库)




