使用PyPI来发布FPGA Overlays
使用PyPI来发布FPGA Overlays
现存的问题
现在有很多FPGA应用同时包含了硬件设计和软件驱动,比如PL bitstreams和Python包,用户必须要同时部署这两部分内容才能顺利运行起来。软件包的发布比较容易,但是硬件设计的bitstream往往比较大(>10M在GitHub上属于大文件),发布比较困难,这就导致了FPGA应用的整体部署往往需要先配置硬件环境然后再装软件,显得有些繁琐。
本文贡献
本文将介绍如何用PyPI来打包硬件bitstreams和软件程序,然后一并推送给用户。我们使用的范例是PYNQ,用户可以简单地在不同硬件平台上用pip install pynq
来完成整体环境的部署,包含了FPGA overlays、Python软件驱动以及Jupyter notebook。
方案,以PYNQ-HelloWorld为例
Repository结构
- boards
包含所有硬件projects。用户可以在里面找到自己对应的硬件平台,然后build - pynq_helloworld
这是主要的python package,里面还包含了jupyter notebook - MANIFEST.in
里面就是需要包含在分发包中的文件,也就是需要把要查找的分发的包的路径写上 - pyproject.toml
这里指定了该项目build的最小系统需求 - setup.py
主要写需要安装的包的一些配置信息,比如包的版本号、作者、需要处理的包目录等等
如何做到打包对应的overlay
答案是不打包,而是在用户安装的时候再通过项目里的notebook(例子中是PYNQ-HelloWorld/pynq_helloworld/notebooks/*/
)中对应的*.link
文件来下载,这是PYNQ Utils Module提供的一个工具(build_py
,在setup.py
中的cmd_class
字段指定)自动完成的。当用户安装时会自动读取当前平台并找到对应的*.link
来下载。
如何提取合适的notebook
很简单的一个小技巧,在setup.py
中定义一个entry_points
,该entry_points
实际上就是在安装时检测一下当前的硬件平台(是edge还是pcie),然后当用户使用pynq get-notebooks pynq-helloworld -p .
命令来提取对应notebook时就会拿取对应平台的文件(命令中的pynq-helloworld
实际上已经被替换成了pynq_helloworld.notebook.edge/pcie
即项目中的notebook路径)。
打包上传流程
python3 setup.py sdist
会将项目打包成*.tar.gz
并放在dist
目录下,开发者可以用python3 -m pip install dist/*.tar.gz
命令来尝试安装一下- 打包安装没问题后只需要上传到PyPI就行了,具体可以参考官方流程,实际上关键步骤只要两步:
python3 -m pip install --upgrade twine
(更新) &python3 -m twine upload dist/*
(上传)。 - 上传成功后应该能看到和PyPI上的页面
安装
- 现在可以愉快地安装了,只需要一条命令
python3 -m pip install pynq-helloworld
- 如果需要用jupyter notebook,进入系统的jupyter notebook home目录并运行
pynq get-notebooks pynq-helloworld -p .
使用PyPI来发布FPGA Overlays相关推荐
- Intel发布FPGA
Intel发布FPGA FPGA概述 FPGA(Field Programmable Gate Array)是在PAL (可编程阵列逻辑).GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物. ...
- 在pypi上发布python包详细教程
使用Python编程中Python的包安装非常方便,一般都是可以pip来安装搞定:pip install <package name>,我们自己写的python也可以发布在pypi上,很简 ...
- 【Python】如何在PyPI上发布自定义软件包
1. 引言 在Python中我们经常使用pip来安装第三方Python软件包,其实我们每个人都可以免费地将自己写的Python包发布到PyPI上,供他人来通过pip进行安装. 在本文中,我们将从一步一 ...
- 在PyPI上发布自己的python包
最近学习了一下,发布了一个自己的pypi Python包,这里我大致分享如何发布自己的Pypi包一般过程. 参考文章01: https://blog.csdn.net/weixin_37543731/ ...
- pypi.python.org_在Pypi上发布自己的Python包
使用Python编程的都知道,Python的包安装非常的方便,一般都是可以pip来安装搞定: sudo pip install 最近因为项目上的需要,发布了一个自己的pypi Python包,这里我大 ...
- 发布你自己的轮子 - PyPI打包上传实践
文章目录 发布 Python 包 准备 创建用户验证文件 创建项目结构 编写setup.py 编写README.md 编写LICENSE 生成发布包 本地测试(可选) 上传到PyPI 安装测试 常见错 ...
- 英特尔第三代 Ice Lake 发布正面与 AMD EPYC PK,结果令人大跌眼镜!
作者 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 导读:传闻已久的第三代英特尔至强可扩展处理器,终于在北京风光最美的4月份发布了. 北京时间4月7日晚,在著名的网红打卡地,百年老首 ...
- kociemba算法c语言,Python kociemba包_程序模块 - PyPI - Python中文网
科辛巴 这个Python包包含了Herbert Kociemba求解魔方的两阶段算法的两个等价实现(在C和Python中). 原始java实现可以在这里找到:http://kociemba.org/d ...
- 投毒者对 PyPi 上的开源包开发者下手了
简述 OSCS 近期监测到 PyPi 官方发布公告称有攻击者针对 PyPi 上的开源组件开发者进行钓鱼,试图窃取 PyPi 贡献者的凭据.本次攻击是通过贼喊捉贼的假装PyPi官方给恶意包发邮箱进行钓鱼 ...
最新文章
- 鸟哥的私房菜 第0章
- 10月15日云栖精选夜读 | 阿里巴巴 Apache Dubbo 布道师谈 Service Mesh
- iOS----------苹果警告
- MySQL基础 (DML)
- toad导入数据_利用TOAD实现EXCEL数据在oracle的导入导出
- SiameseRPN++分析
- mysql 行转列_详解MySQL行列转换4个实现方案及反向行转列实验测试
- 使用HslCommunication实现PLC数据的远程客户端监视,以及web端实时监视,远程操作设备示例...
- WUSTOJ 1285: Factors(Java)
- 如何用 Excel 排查重复的数据
- 上海day3 ----
- 阿里云技术天团空降CSDN独家在线峰会,揭秘核心竞争力
- 百度编辑器ueditor 的 submit 表单提交
- 科普一下网络的灵魂 ACL
- js中break关键字的用法。
- 企鹅够牛,大事不断:腾讯音乐遭“投资者律师代表团”调查、大数据组件TubeMQ宣布开源、1千万美元领投英国AI企业SenSat...
- Colorful Image Colorization原理及源码详解
- matlab费根鲍曼,matlab 数学实验 迭代 _ 蛛网图(免积分)
- 中国知网文献引用导入EndNote9.X,Web of science导入endnote以及谷歌学术导入endnote图文详解,全网最细版本适用EndNote9.x,Endnote20版本
- python嗅探m3u8_python爬取m3u8连接的视频
热门文章
- Ubuntu14.04+CUDA8.0+TitanX+caffe配置教程
- Vue中对表单的增删改查(不含图片)
- python 排列组合
- chrome插件离线包(未上架插件解压文件)安装步骤
- 计算机科学与技术专业研究生分数线,同济大学计算机科学与技术专业考研录取分数线-研究生分数线-历年分数线...
- 很久以前用vue全家桶写的一个仿Mac桌面,挺有意思的
- VMware 下 Linux 利用虚拟光驱安装 VMware Tools 详解
- VS2017更改注释快捷键(Ctrl+/ 添加注释 ,Ctrl + Shift + / 取消注释)
- 安卓开发-如何添加横线
- 省级面板数据(2000-2019)十二:工业(主要经济指标、产量)(stata版)