过去的半个月,PLCT实验室同时收获了小小的喜悦和沮丧。喜悦是7月18日的CRVS2020顺利举办,PLCT实验室的几位同学进行了技术报告和分享。我也作为下午某一场的 chair 进行了志愿者服务,新认识了来自中国和印度的几位同行。沮丧是投稿RVGF2020的四篇投稿都很遗憾的落选了,这让我们确实有一些失落。看来在 RISC-V 领域,PLCT实验室还需要继续努力贡献。欣慰的是,在 V8、LLVM 等项目上,我们跟上游社区和合作开始越来越紧密,开始逐步的融入了上游社区(V8目前是组建了统一的RV社区,贡献给上游的行动还在准备中)。
我们在努力的进入PLCT关注的开源社区,并认为没有任何捷径可走,技术输出和长期贡献是唯一的证明自己的方式。最近在国内看到的一个好玩的事情,惊讶之后是觉得荒诞到笑出声。随着国内对于开源基础软件的重视和关注,越来越多的政府机构、公司、社区和个人开始关注开源技术社区。一种带有强烈中国特色的、能够(妄图)在一夜之间让一个人成为开源技术明星、或者叫开源技术领袖的方法被开发了出来:
颁奖。
最近开源技术备受关注?来,传媒公司改名开源社区,做一个局,攒一个开源技术领袖奖,找几个有需要的公司的高管过来领奖、完事儿做一次技术沙龙,抑或「圆桌会议」、「开源峰会」(把过去的高端峰会的高端改成了开源)。在颁奖仪式礼成的那一刻,一个又一个开源技术领袖就诞生了。
嘛,或许,这并没有什么值得吐槽的:大家其实是井水不犯河水的两个没有交集的圈子,只不过是因为开源两个字最近变得流行,用的时候出现了重名和混淆,仅此而已。等开源的风潮被新的技术名词替代,可能就能够看到,分别属于哪个圈子了。
希望到那个时候,我们能够有几个社区的 maintainers :)
过去的7月份是V8团队忙碌的一个月,而后半月V8小组开始进入新的阶段: V8 for RISC-V 项目开源之后,跟 FutureWei 的 Peng Wu 带领的 V8 团队组建了统一的社区,并且 RIOS Lab 也开始投入人力一起做。在新的代码仓库上,一方面完善CI和测试的统计、bug的分析和fix,另一方面开始尝试在真实硬件上的测试结果、以及 NodeJS 的适配和移植。有点意外的, NodeJS 目前不仅可以跑起来 helloworld.js,还可以跑起来一个简单的 HTTP Server demo 了,今年完成所有的支持、可以进行工业级使用的希望开始变大。目前基础测试用例还有部分 failures,尤其是在硬件上运行时候的 failures,等待修复。
如果你感兴趣,欢迎加入 V8 RISC-V 社区,一起做些有意思的事情! 如果你是在校学生的话,可以以实习生身份加入,我们还可以发一点补贴。如果已经工作了,可以以志愿者身份贡献力量。
在 LLVM RISC-V 后端上,PLCT实验室继续跟 lowRISC、SiFive 和 EPI 等合作,跟随目前社区的工作,提交一些简单的 patch,将目前 PLCT 自行维护的 rvv-llvm 仓库,逐步跟 upstream 合并起来。
- 目前 SiFive 的基于 v0.9 的 rvv 汇编支持已经进入了LLVM官方仓库的主分支,而我们基于该 v0.9 的汇编支持实现了 Zvlsseg 扩展,目前该 patch 已提交至 upstream 进行 review。后续我们还会提交 Zvamo、 Zvediv 等扩展的 patch 到 upstream。
- Intrinsics 方面,添加了部分用于 opencv 项目测试的 intrinsics,并开放了一个新分支 for_opencv_test 专门用于 opencv 项目测试。
欢迎使用,地址在老地方:
https://github.com/isrc-cas/rvv-llvm
同时我们也开放了使用的 benchmark(整理自 RISC-V V 扩展的官方文档)
https://github.com/isrc-cas/rvv-benchmark
本次除RVV之外没有其他新增内容。
由于做这个项目的陈影同学近期要准备玄铁C910的LLVM实现的PPT,去参加CRVA组织的年中RISC-V技术讨论会,在7月18日之前估计会放慢进度。
https://github.com/isrc-cas/eternal-balance
如果你感兴趣,欢迎加入永恒天平项目,一起做些有意思的事情!
-
在启动v8 for RISC-V项目中的 fuzzer 过程中,发现来自上游 v8 的 test script bug https://bugs.chromium.org/p/v8/issues/detail?id=10770
-
修复了 Simulator 中的 break、stop、gdb 三个指令, riscv-collab/v8#5
-
break指令采用arm64 Simulator的break实现 Pull request #62 - riscv-collab/v8#62
-
stop指令修复了获取 stop code 的指令偏移值 Pull request #80 -riscv-collab/v8#80
-
gdb指令没有改动,只是确认了正确使用方式 Pull request #93 - riscv-collab/v8#93
-
修复V8中cctest的测试样例不通过的几个Bug
-
在riscv64-gcc中 uint32总是进行符号扩展 #73 - riscv-collab/v8#73
riscv-collab/riscv-gnu-toolchain#680 -
实现V8中加载的地址重定位功能 #66 riscv-collab/v8#66
-
在V8中反汇编增加指向跳转的信息 #47 riscv-collab/v8#47
-
修复I64转F32转换错误的问题 #74 riscv-collab/v8#74 该问题由于 flt.s 指令理解有误造成, 相关讨论: About result of flt.s
原定计划为,完成芯来科技ECLIC中断的实现,提供芯来star板和hbird板的支持,整理commit以供提交上游patch。
目前在开发ECLIC中断过程中遇到了多个问题,开发仍在进行中,进度落后于预期。
开发ECLIC中断时,遇到并已经解决的难点包括,已触发中断orderred active list的实现和管理,timer中timecmp与mtime比较以及设定未来中断,timer与ECLIC的互动。
目前正在解决的困难是,部分csr寄存器在csrrw时的操作,需要把值存到stack上,但是在csr操作这一层中没有找到可以改变system memory的方法。
PLCT实验室的史宁宁依然每周在更新方舟编译器社区周报(OpenArkCompiler Weekly),目前已经更新到第二十一期。
方舟编译器周报每周日晚上通过Repo、知乎、Bilibili和邮件列表发布。
Repo: https://github.com/isrc-cas/arkcompiler-materials
知乎:https://zhuanlan.zhihu.com/openarkcompiler
Bilibili:https://www.bilibili.com/read/readlist/rl199373
邮件列表及其订阅方式:https://gitee.com/harmonyos/OpenArkCompiler/issues/I1EWAX
Spike snapshot已针对PR意见做了修改,提交了第二轮PR。同时针对存储内存这一块进行了优化,仅针对修改内存进行保存,大大降低了所需存储的内存空间。
sifive发起了第二版patchset,目前已合并到了rvv-sifive-rfc-rc2分支中,github地址: https://github.com/isrc-cas/plct-qemu/tree/rvv-sifive-rfc-rc2
除此之外,创建了一个虚拟的PLCT machine,作为后续llvm rvv的测试环境。
知乎文章:
MLIR Python Bindings构建与测试框架 - https://zhuanlan.zhihu.com/p/161216066
MLIR C API patch分析 - https://zhuanlan.zhihu.com/p/161772171
在MLIR Python Bindings方面目前正在跟随C API进行尝试,后续的MLIR Python Bindings也会基于MLIR C API进行开发。之前基于C++ API进行的Python Binding尝试详见下面的GitHub仓库。
GitHub仓库:https://github.com/zhanghb97/mlir-python-bindings
[1] PLCT许愿池2020计划 https://github.com/isrc-cas/PLCT-Weekly/blob/master/RISCV-DevTools-Wishlist-2020.md
[2] PLCT2020年开源路线图 https://github.com/isrc-cas/PLCT-Weekly/blob/master/RISCV-Roadmap-2020.md
[3] PLCT南京小队隶属于软件所南京分院智能软件研究中心。
[4] 面向国内 RISC-V 芯片厂商的 QEMU 支持计划 https://github.com/isrc-cas/PLCT-Weekly/blob/master/PLCT-QEMU-Support-Project-for-Domestic-RV-Vendors.md
[5] PLCT OpenDay 2019 https://github.com/isrc-cas/PLCT-Weekly/blob/master/PLCT-OpenDay-2019.md
[6] RISC-V Vector Extension Intrinsic RFC 开始活跃更新,我们号召国内厂商抱团参与 https://mp.weixin.qq.com/s/qAQmXwhCccVGms90lJzz2g
[7] PLCT实验室的开放职位 https://github.com/isrc-cas/PLCT-Weekly/blob/master/open-positions.md
[8] [PLCT] 面向国内 RISC-V 芯片厂商的 QEMU 支持计划 https://mp.weixin.qq.com/s/e5dDHOUY6oz3KBhqCRn5nw
[9] https://github.com/isrc-cas/PLCT-Weekly/blob/master/interns.md
- PLCT Weekly https://github.com/isrc-cas/PLCT-Weekly
- C910 LLVM 支持 https://github.com/isrc-cas/c910-llvm
- RISC-V Vector Extension Support(rvv-llvm) https://github.com/isrc-cas/rvv-llvm
- V8 for RISC-V https://github.com/isrc-cas/v8-riscv
- 永恒天平 https://github.com/isrc-cas/eternal-balance/
- PLCT 公开报告 https://github.com/isrc-cas/PLCT-Open-Reports
- QuickJS for RISC-V https://github.com/isrc-cas/quickjs-riscv
- PLCT-QEMU https://github.com/isrc-cas/plct-qemu
- Flounder https://github.com/isrc-cas/flounder
- OpenCV for RISC-V https://github.com/isrc-cas/opencv-riscv
- pacific(方舟编译器玩具运行时) https://github.com/isrc-cas/pacific
- rvv-benchmark https://github.com/isrc-cas/rvv-benchmark
- 工具箱 https://github.com/isrc-cas/PLCT-toolbox