过去半个月,国内技术圈子讨论最为火热的无疑是华为的鸿蒙2.0系统的开源和发布。PLCT实验室专注的是「编译器、模拟器、虚拟机」三大基础技术范畴,而鸿蒙系统属于「操作系统、应用框架」,跟PLCT实验室并不属于同一个技术门类。因此,对于鸿蒙,PLCT实验室并不会(也没有实力)在技术层面进行评论或分析,而在开源社区以及人文层面,PLCT实验室对于鸿蒙2.0系统能够如期开源表示非常的欣慰,这毫无疑问是国内开源领域技术发展的又一次小小的进步。我个人以及PLCT实验室都祝福鸿蒙系统能够坚持按照自己的既定路线走下去。
自9月1日至今,PLCT实验室的 rvv-llvm 继续进行 v0.9 规范的实现和完善;OpenCV GSoC 项目顺利结题,但是这才是 OpenCV on RVV 的第一步,后续要继续伴随着 RISC-V 向量扩展标准共同演化;AOSP for RISC-V 项目很高兴的吸引到了两位社区小伙伴的关注和帮助;我们入职的一位新同事,开始验证 Java 虚拟机在 RISC-V (RV64G)上的功能和性能现状,开始建立基线,准备移植和优化JIT编译器。
PLCT实验室的一切项目都在按照计划在进行推进,在这天天都有「百年一遇事件」的2020年,这让我欣慰,感受到内心的平静。在PLCT,我们暂时的离开喧嚣,在个人的工作中寻求喜悦。顺带,在各自微小的地方,改变世界的格局。
我们开始在 OpenJDK 等 Java VM 上进行发力。目前,Java 生态已经可以在 RISC-V 上通过 Zero 后端进行解释执行,而 Fedora for RISC-V port 已经可以通过 dnf/yum 直接安装相关的 Java 套件。对于 Java 生态而言,要运行工业级的应用,例如 Hadoop 等,路还很远。我们PLCT实验室决心在这条路上为后来的社区伙伴提供一些帮助和支撑。
目前,有一名全职员工专职负责此项目。我们开始并长期的招募实习生、应届毕业生、社会招聘。欢迎有志从事基础软件领域、为RISC-V生态建设贡献力量的小伙伴加入我们。
稳定的开发中。
欢迎使用,地址在老地方:
https://github.com/isrc-cas/rvv-llvm
同时我们也开放了使用的 benchmark(整理自 RISC-V V 扩展的官方文档)
https://github.com/isrc-cas/rvv-benchmark
本次除RVV之外没有其他新增内容。
1.修复Jitless模式下,v8会崩溃的问题(riscv-collab/v8#199)
2.完善label绑定的代码(riscv-collab/v8#184)
3.屏蔽因编译器不同,造成的Test case failed.(riscv-collab/v8#227)
4.继续优化完善常数池.(riscv-collab/v8#226)
5.优化常数加载的指令数量.(riscv-collab/v8#221)
6.编译基于4.10.0版本的nodejs-riscv64.(v8-riscv/node#12)
7.添加RISCV C扩展的所有指令的反汇编器的支持.(riscv-collab/v8#229)
8.添加C扩展指令c.nop, c.ebreak, c.add, c.addi的汇编器,反汇编器,模拟器和单元测试(riscv-collab/v8#234)
-
PLCT 实验室正在向 RISC-V 移植 AOSP 的内核,通过调研基本确定基于 AOSP common kernel 的
android-5.4-stable
分支开展移植工作,具体移植工作正在进行中。 -
PLCT 实验室的汪辰在 “知乎” 上新开辟了一个 “RISC-V、Linux 和 AOSP” 的专栏并发布了两个有关 AOSP 的 Platform 和 内核版本管理策略的最新调研报告:
- AOSP 的版本管理: https://zhuanlan.zhihu.com/p/234390474
- AOSP 内核的版本管理:https://zhuanlan.zhihu.com/p/245131105
Maxine-VM 的文章: https://zhuanlan.zhihu.com/p/234736963
OpenJ9 的文章: https://zhuanlan.zhihu.com/p/245365529
-
目前正在对OpenJDK (Zero port已经可用并在Fedora的rpm源中了,可以作为基线)、 MaxineVM 和 OpenJ9 建立性能数据的 baseline,后续将会通过永恒天平项目进行性能的持续跟踪和状态报告。
-
Fork 了三个 repos,后续会先行在这几个项目上进行 hack: https://github.com/isrc-cas/openj9-openjdk-jdk11-riscv https://github.com/isrc-cas/openj9-riscv https://github.com/isrc-cas/openj9-omr-riscv
还在调研中,尚未开始。
目前plct-rtthread分支支持芯来hbird与gd32vf103的模拟,并可以运行nuclei sdk与rt-thread 本月截至今日完成了:
- 修复了hbird上不能运行rtthread的bug
- 并增加了设备模拟的基础设备读写实现。
- 优化eclic与cpu层 irq list的实现
设备模拟的开发、完善和测试将在本月下旬进一步进行。
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
本期没有更新。
本期没有更新。
PLCT实验室张洪滨向MLIR repo提交patch:
Committed:
**[mlir] Add Complex Type, Vector Type and Tuple Type subclasses to python bindings. **
https://github.com/llvm/llvm-project/commit/1d99472875100b230bac2d9ea70b5cd4b45e788b
Based on the PyType and PyConcreteType classes, this patch implements the bindings of Complex Type, Vector Type and Tuple Type subclasses.
For the convenience of type checking, this patch defines a `mlirTypeIsAIntegerOrFloat` function to check whether the given type is an integer or float type.
These three subclasses in this patch have similar binding strategy:
- The function pointer `isaFunction` points to `mlirTypeIsA***`.
- The `mlir***TypeGet` C API is bound with the `get_***` method in the python side.
- The Complex Type and Vector Type check whether the given type is an integer or float type.
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D86785
[mlir] Add Shaped Type, Tensor Type and MemRef Type to python bindings.
Based on the PyType and PyConcreteType classes, this patch implements the bindings of Shaped Type, Tensor Type and MemRef Type subclasses.
The Tensor Type and MemRef Type are bound as ranked and unranked separately.
This patch adds the ***GetChecked C API to make sure the python side can get a valid type or a nullptr.
Shaped type is not a kind of standard types, it is the base class for vectors, memrefs and tensors, this patch binds the PyShapedType class as the base class of Vector Type, Tensor Type and MemRef Type subclasses.
Reviewed By: stellaraccident
Differential Revision: https://reviews.llvm.org/D87091
Reviewing:
[mlir] expose affine map to C API
Differential Revision: https://reviews.llvm.org/D87617
知乎文章 - CIRCT llhd-sim工具分析:
https://zhuanlan.zhihu.com/p/227963934
本期没有更新
- FIRRTL Verilog Emitter - 韩博阳 - 20200915 - PLCT实验室 https://www.bilibili.com/video/BV1yh411R7zn
本期没有更新。
https://github.com/isrc-cas/eternal-balance
如果你感兴趣,欢迎加入永恒天平项目,一起做些有意思的事情!
PLCT实验室的在读研究生张尹同学参与的GSoC项目“Optimize OpenCV for RISC-V”成功通过了GSoC的final evaluation。这个项目的主要目标是为OpenCV提供基于RISC-V 向量扩展(rvv)实现的Wide Universal Intrinsics版本。
虽然GSoC项目结束了,但是由于rvv规范与rvv-intrinsics都尚处于草案阶段,还有很多改进的空间,且编译器对intrinsics的支持仍未完善,后续我们依然会继续推进该项目,与RISC-V 向量扩展共同发展,进一步完善OpenCV中对RISC-V向量扩展的支持与实现。
GSoC项目详情:
https://summerofcode.withgoogle.com/projects/#5136481733050368
Kaleidoscope语言的教程已经完成:
- 第二期:https://www.bilibili.com/video/BV19t4y1U7qS
- 第三期:https://www.bilibili.com/video/BV1My4y1y73q
- 第四期:https://www.bilibili.com/video/BV1Q54y127nn
- 第五期:https://www.bilibili.com/video/BV1xD4y1m7Hu
- 第六期:https://www.bilibili.com/video/BV1Qv411y7ad
- 第七期:https://www.bilibili.com/video/BV15D4y1m7E9
- 第八期:https://www.bilibili.com/video/BV1mp4y1e7JN/
《计算机程序的构造与解释》的知乎学习专栏持续更新:
https://zhuanlan.zhihu.com/c_1284403386961080320
[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
- https://github.com/isrc-cas/openj9-openjdk-jdk11-riscv
- https://github.com/isrc-cas/openj9-riscv
- https://github.com/isrc-cas/openj9-omr-riscv