Skip to content

Latest commit

 

History

History
167 lines (98 loc) · 9.71 KB

2020-08-01.md

File metadata and controls

167 lines (98 loc) · 9.71 KB

PLCT开源进展·第06期·2020年08月01日

卷首语

过去的半个月,PLCT实验室同时收获了小小的喜悦和沮丧。喜悦是7月18日的CRVS2020顺利举办,PLCT实验室的几位同学进行了技术报告和分享。我也作为下午某一场的 chair 进行了志愿者服务,新认识了来自中国和印度的几位同行。沮丧是投稿RVGF2020的四篇投稿都很遗憾的落选了,这让我们确实有一些失落。看来在 RISC-V 领域,PLCT实验室还需要继续努力贡献。欣慰的是,在 V8、LLVM 等项目上,我们跟上游社区和合作开始越来越紧密,开始逐步的融入了上游社区(V8目前是组建了统一的RV社区,贡献给上游的行动还在准备中)。

我们在努力的进入PLCT关注的开源社区,并认为没有任何捷径可走,技术输出和长期贡献是唯一的证明自己的方式。最近在国内看到的一个好玩的事情,惊讶之后是觉得荒诞到笑出声。随着国内对于开源基础软件的重视和关注,越来越多的政府机构、公司、社区和个人开始关注开源技术社区。一种带有强烈中国特色的、能够(妄图)在一夜之间让一个人成为开源技术明星、或者叫开源技术领袖的方法被开发了出来:

颁奖。

最近开源技术备受关注?来,传媒公司改名开源社区,做一个局,攒一个开源技术领袖奖,找几个有需要的公司的高管过来领奖、完事儿做一次技术沙龙,抑或「圆桌会议」、「开源峰会」(把过去的高端峰会的高端改成了开源)。在颁奖仪式礼成的那一刻,一个又一个开源技术领袖就诞生了。

嘛,或许,这并没有什么值得吐槽的:大家其实是井水不犯河水的两个没有交集的圈子,只不过是因为开源两个字最近变得流行,用的时候出现了重名和混淆,仅此而已。等开源的风潮被新的技术名词替代,可能就能够看到,分别属于哪个圈子了。

希望到那个时候,我们能够有几个社区的 maintainers :)

本期亮点: V8 RISC-V 开发社区的建立

过去的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 社区,一起做些有意思的事情! 如果你是在校学生的话,可以以实习生身份加入,我们还可以发一点补贴。如果已经工作了,可以以志愿者身份贡献力量。

RISC-V 开源工具链进展

RISC-V Vector Extension Support

在 LLVM RISC-V 后端上,PLCT实验室继续跟 lowRISC、SiFive 和 EPI 等合作,跟随目前社区的工作,提交一些简单的 patch,将目前 PLCT 自行维护的 rvv-llvm 仓库,逐步跟 upstream 合并起来。

  1. 目前 SiFive 的基于 v0.9 的 rvv 汇编支持已经进入了LLVM官方仓库的主分支,而我们基于该 v0.9 的汇编支持实现了 Zvlsseg 扩展,目前该 patch 已提交至 upstream 进行 review。后续我们还会提交 Zvamo、 Zvediv 等扩展的 patch 到 upstream。
  2. 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

Clang/LLVM for RISC-V

本次除RVV之外没有其他新增内容。

永恒天平

由于做这个项目的陈影同学近期要准备玄铁C910的LLVM实现的PPT,去参加CRVA组织的年中RISC-V技术讨论会,在7月18日之前估计会放慢进度。

https://github.com/isrc-cas/eternal-balance

如果你感兴趣,欢迎加入永恒天平项目,一起做些有意思的事情!

V8 for RISC-V 项目进展

面向国内RISC-V厂商的QEMU支持计划

原定计划为,完成芯来科技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 特性支持

Spike snapshot已针对PR意见做了修改,提交了第二轮PR。同时针对存储内存这一块进行了优化,仅针对修改内存进行保存,大大降低了所需存储的内存空间。

QEMU RVV v0.9+ 指令集支持

sifive发起了第二版patchset,目前已合并到了rvv-sifive-rfc-rc2分支中,github地址: https://github.com/isrc-cas/plct-qemu/tree/rvv-sifive-rfc-rc2

除此之外,创建了一个虚拟的PLCT machine,作为后续llvm rvv的测试环境。

MLIR

知乎文章:

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开源仓库及分享

  1. PLCT Weekly https://github.com/isrc-cas/PLCT-Weekly
  2. C910 LLVM 支持 https://github.com/isrc-cas/c910-llvm
  3. RISC-V Vector Extension Support(rvv-llvm) https://github.com/isrc-cas/rvv-llvm
  4. V8 for RISC-V https://github.com/isrc-cas/v8-riscv
  5. 永恒天平 https://github.com/isrc-cas/eternal-balance/
  6. PLCT 公开报告 https://github.com/isrc-cas/PLCT-Open-Reports
  7. QuickJS for RISC-V https://github.com/isrc-cas/quickjs-riscv
  8. PLCT-QEMU https://github.com/isrc-cas/plct-qemu
  9. Flounder https://github.com/isrc-cas/flounder
  10. OpenCV for RISC-V https://github.com/isrc-cas/opencv-riscv
  11. pacific(方舟编译器玩具运行时) https://github.com/isrc-cas/pacific
  12. rvv-benchmark https://github.com/isrc-cas/rvv-benchmark
  13. 工具箱 https://github.com/isrc-cas/PLCT-toolbox