Skip to content

Latest commit

 

History

History
201 lines (111 loc) · 10.2 KB

2020-08-16.md

File metadata and controls

201 lines (111 loc) · 10.2 KB

PLCT开源进展·第07期·2020年08月16日

卷首语

这段时间的业界八卦太多了。龙芯高调宣布跟MIPS指令集脱钩,另立门户 LoongArch,算是圆了20年前胡伟武老师那句「完全自主CPU」的说法。然而一如既往的,指令集手册一直没有开放下载,自主或许有了,自由开放是不存在的。Arm 正在被 NVidia 收购谈判,已经进入了排他性谈判的阶段。可以想见不太可能顺利通过各个大国集团的商务部批准,但是一个已经确认的事情是,不管 Arm 最后是否落入黄大叔烤箱,猜疑链已经启动了,安谋中国的处境会越发尴尬。RISC-V 基金会董事会(BoD)增选结果公布,大陆包云岗老师竞选成功,董事会中有接近半数是华人席位了。

相比起来,PLCT实验室从8月份开始,就已经没有什么值得拿出来说的新闻了。这倒是在我的意料之中:RISC-V Vector Extension (rvv-llvm)继续在开发中,由于我们现在同时在支持 OpenCV for RISC-V 的 GSoC 项目以及跟进 upstream 的贡献,开发迭代的节奏比以前更快、压力也更大了一些; V8 for RISC-V 的工作,已经完全进入到 Peng Wu 前辈带领的社区中进行贡献,根据路线图,将会在9月4日后,开始向 Google V8 进行 upstream (的第一次尝试)。 Android (AOSP)for RISC-V 的项目也向业界公开了,虽然刚开始,只有几个魔改的小 patch,尚未吸引到更多的人参与进来。

世界格局剑拔弩张的时刻,坐下来,静下来,提一口气,写点代码和bugs,继续为 RISC-V 生态添砖加瓦。

本期亮点: AOSP for RISC-V

一个月前,有如堂吉柯德一般,小小的PLCT实验室开始分出两名员工,开始了 AOSP for RISC-V 的技术准备工作。 我们在 RISC-V 的邮件列表上热情的倡议社区的参与,不过可惜的是目前还有人任何人开始参与。而开心的是有两位 RISC-V 社区的外国小伙伴添加了我的领英好友并鼓励 AOSP 项目能够做下去。 我们会做下去。毕竟我们精打细算的收支平衡还是可以维持好几年时间的。或许最后非盈利专业技术团体的路线会像 Mozilla 一样逐渐陨落(还没),我们目标是先成为行业的标杆之一 ;-) 公开的 GitHub 群组已经已经建立, working group 也开始有了第一次的进展更新。相信慢慢的会有第一个人加入,第二个,然后一百个。

RISC-V 开源工具链进展

RISC-V Vector Extension Support

持续更新,主要是bugfix以及一些代码的调整。在 intrinsics 的实现上,我们还在努力中。

同时,除了 rvv-iscas 分支之外, OpenCV 开发的需要我们新开放了几个分支,例如 opencv 等。 这些分支是作为 opencv + rvv 联合调试用的,后续会陆续合并到 rvv-iscas

欢迎使用,地址在老地方:

https://github.com/isrc-cas/rvv-llvm

同时我们也开放了使用的 benchmark(整理自 RISC-V V 扩展的官方文档)

https://github.com/isrc-cas/rvv-benchmark

Clang/LLVM for RISC-V

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

V8 for RISC-V 项目进展

AOSP for RISC-V

  1. PLCT实验室创建了AOSP for RISC-V的 working group,欢迎大家关注和参与:https://github.com/aosp-riscv/working-group

  2. PLCT实验室已经开始向RISC-V移植AOSP,截止目前为止:已经为lunch添加RISC-V目录,并可成功加载;已经为build/make、build/soong添加RISC-V配置文件;正在调试build/blueprint和art的RISC-V配置文件。

  3. PLCT实验室的汪辰发布了两个AOSP for RISC-V相关的视频:

    AOSP的构建系统和RISC-V移植初步:https://www.bilibili.com/video/BV1PA411Y7mz

    AOSP for RISC-V 移植教程之 Android Runtime 介绍:https://www.bilibili.com/video/BV1wC4y1t7Xa

OpenJDK for RISC-V

OpenBLAS for RISC-V using Vector Extension

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

我们在芯来SoC的支持上遇到了点以外的bugs,之前交付的时间双delay半个月了。非常乐观的估计 9月1日 之前可以再推送一波代码到(之前推送的代码只完成了部分功能,中断的处理和返回有bugs,一直没搞定):

https://github.com/isrc-cas/plct-qemu/tree/plct-nuclei

在方舟开源编译器社区的工作

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 新特性支持

Spike snapshot提交的第二轮PR暂时没有回复。本期新增块设备功能支持,初步功能已实现,能够通过plugin device支持块设备加载,代码尚在整理当中,后续会更新到github中。

QEMU RVV v0.9+ 指令集支持

sifive发起了第三版patchset,目前已合并到了rvv-sifive-rfc-rc3分支中,github地址: https://github.com/isrc-cas/plct-qemu/tree/rvv-sifive-rfc-rc3 该版本patchset已摒弃了纯粹的RVV v0.9版本支持,而是更新到了最新的RVV v1.0 draft版本,由于该版本修改了vtype寄存器的域结构,因此支持早期rvv版本的编译器编译生成的程序运行可能会存在问题(参见:https://github.com/isrc-cas/plct-qemu/issues/8)。

对上期的创建的虚拟PLCT RVV machine进行了优化,目前已运用于llvm rvv测试中,能够在fedora系统下测试各rvv测试用例。

MLIR

MLIR C API进入主分支: https://github.com/llvm/llvm-project/tree/master/mlir/include/mlir-c

我们第一时间为C API提供了Python Bindings的尝试,并发布了patch和RFC:

Initial python bindings for C API patch:https://reviews.llvm.org/D85481

[RFC] First step Python bindings for C API: https://llvm.discourse.group/t/rfc-first-step-python-bindings-for-c-api/1578

社区中其他的关于Python Bindings的讨论:

Next steps on python bindings:https://llvm.discourse.group/t/next-steps-on-python-bindings/1570

Ownership model in Python bindings:https://llvm.discourse.group/t/ownership-model-in-python-bindings/1579

CIRCT

刚起步,招募 LV3 实习生作为代码分析员,欢迎投递简历, all remote 🎉

OpenROAD

刚起步,招募 LV3 实习生作为代码分析员,欢迎投递简历, all remote 🎉

Chisel/FIRRTL

刚起步,招募 LV3 实习生作为代码分析员,欢迎投递简历, all remote 🎉

Circuit Capture of Chisel Part 3 Debug Info - 韩博阳 - 20200805 - PLCT实验室

https://www.bilibili.com/video/BV1Ti4y1G7Gb

(为了方便阅读将之前的几个视频也贴在这里)

Part 2 https://www.bilibili.com/video/BV1Zi4y137gs

Part 1 https://www.bilibili.com/video/BV1Qk4y127bC

Part 0 https://www.bilibili.com/video/BV1qV41167Wu

永恒天平 / Eternal Balance

我们制作了RISCV环境配置和关于CodeSize环境配置的视频教程:

RISC-V 编译及QEMU、Spike模拟器配置:https://www.bilibili.com/video/BV1D54y1m78G

如何进行 RISC-V 工具链 CodeSize 的实验:https://www.bilibili.com/video/BV1Di4y1u7A9

项目本身没有更新。地址在:

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

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

其他工作

Kaleidoscope 代码解释 1/3 - 孙少策 - 20200805 - PLCT实验室

https://www.bilibili.com/video/BV1qk4y1m7tf

芯片开源就能行?走进RISC-V软件生态 - 吴伟 - 20200721 - 公开报告

https://www.bilibili.com/video/BV1L5411a7Zg

QEMU RISU 测试工具介绍 - 石可人 - 20200805 - PLCT实验室

https://www.bilibili.com/video/BV1FZ4y1M7zG

Linux设备树介绍及加载过程分析 - 王萌 - 20200812 - PLCT实验室

https://www.bilibili.com/video/BV1Ti4y1g7oH

程序语言基础之匿名函数 - 陈影 - 20200814 - PLCT实验室

https://www.bilibili.com/video/BV12t4y1D7cL

参考链接

[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