过去的半个月我们有两个好消息:第一、PLCT实验室有了自己的英文网站(技术博客)和自己的GitHub账号;第二、RISC-V生态中的Java执行速度短板得到了有力的弥补,BishengJDK团队开源了HotSpot虚拟机中JIT编译器RV64G的后端实现。
说来惭愧,虽然我们一直说要走出去、国际化合作、融入upstream社区做贡献,但是之前一直没有英文网站介绍自己。借着张尹同学在 OpenCV 项目中贡献的 RISC-V 优化的契机,OpenCV 社区的 mentors 希望可以跟代码一起,写一些技术博客进行分享,吸引更多的爱好者参与进来贡献。PLCT目前的技术博客策略是每个成员自己去知乎或者B站开设个人专栏,由《PLCT开源进展》半月刊进行索引和汇总。这个方法在中文的圈子工作得很好,知乎本身作为技术交流平台也被认可。而在英语世界可能需要更加简单直白的方式进行分享。
我们选择了对于程序员最简单的方式:GitHub Pages。GitHub 免费为每个用户账号提供了一个 github.io 的子域名使用,同时支持进行自定义域名的托管。我注意到 plctlab 还没有被人抢注(看来我们的知名度还不够呀笑),于是,锵锵~ plctlab.org 现在成为了我们的英文门户。目前已经有了第一篇英文博客,是来自张尹同学的《Optimze OpenCV for RISC-V》。中文稿已经在知乎上发布过,这次是中翻英。后续,我们也会继续默默的添加新的文章。欢迎感兴趣的小伙伴关注新的仓库。
第二个开心的事情,是 BishengJDK 团队在11月16日开源了他们 RV64G 后端。BishengJDK 是基于 OpenJDK 的Arm64优化定制项目,由华为工程师维护,目前开源托管在 openEuler 项目下。PLCT实验室和 BishengJDK 团队有着良好的社区合作,并将在近期完成 Hifive Unleashed 等真实物理设备上的性能基线评定。在 BishengJDK 团队提交 upstream 之后,可以开始进行更加深入的代码优化方面的合作。PLCT已经开始帮助 BishengJDK 团队与 RISC-V 国际基金会管理的各个技术指导委员会、工作组建立联系,后续作为一个整体进行开源贡献。
亮点一:PLCT实验室的英文网站成立啦!以下两个网址都可以访问,是一样的:
亮点二:RISC-V 有 Java JIT 的支持啦!
The official repo is here: https://gitee.com/openeuler/bishengjdk-11/tree/risc-v
A github mirror has been set if you could not access the official repo: https://github.com/isrc-cas/bishengjdk-11-mirror
欢迎使用,地址在老地方:
https://github.com/isrc-cas/rvv-llvm
同时我们也开放了使用的 benchmark(整理自 RISC-V V 扩展的官方文档)
https://github.com/isrc-cas/rvv-benchmark
本次除RVV之外没有其他新增内容。
按部就班的进行。
-
为GN构建工具添加架构flag,以便之后控制C扩展指令的生成
-
添加了分析指令的脚本,功能为统计生成的二进制指令中可以直接转换成C扩展指令的数量
近期调试并解决了OpenCV准确性测试失败的问题。当前版本的OpenCV现在能够被官方的RISC-V gnu工具链和PLCT实验室开发的rvv-llvm成功编译,并在QEMU模拟器上通过了全部HAL准确性测试。
GitHub仓库:https://github.com/joy2myself/opencv/tree/rvv
OpenCV官方仓库中的PR:opencv/opencv#18228
张尹同学写了两篇博客分别用中文、英文介绍了该项目及其构建、使用的方法。
中文版:https://zhuanlan.zhihu.com/p/291207654
英文版:https://plctlab.github.io/opencv/Optimize_OpenCV_for_RISC-V.html
进一步完善 bionic 的 libc 静态库。目前采用 v10.0.1 的 llvm/clang 进行编译,然后用 gnu riscv 版本的 ld 基于 bionic 的 libc_static 、crtbegin_static 和 crtend.o 可以实现静态链接,并生成可执行程序。在此基础上移植编译了 AOSP 自带的 toybox 并制作了一个最小的 rootfs(shell 和 init 还是采用基于 glibc 编译的 busybox)。目前该 rootfs 可以在 qemu-system-riscv64 上启动运行。可以运行部分命令,但还有部分命令执行会报错。下一步将继续完善 bionic 的 libc,以及完善自制的最小根文件系统。更多进展信息请参考 PLCT 在 github 上的 AOSP on RISC-V 工作组项目状态报告,以及目前开源在 github 上的代码仓库 https://github.com/aosp-riscv/。
- “知乎” 上的 “Java on RISC-V” 专栏持续更新,发布了一篇实验报告:
- 【Java on RISC-V】交叉编译OpenJDK11(zero VM):https://zhuanlan.zhihu.com/p/291064772
- 持续探索OpenJDK11 RISV64移植的roadmap,发布了一篇视频报告:
- OpenJ9构建测试及OpenJDK移植进展简介 - 张定立 - 20201107 - PLCT实验室:https://www.bilibili.com/video/BV1ka411c7Us
本期没有新的进展。
本期没有新的进展。
本期没有新的进展。
1.PLCT实验室的史宁宁编写的《华为方舟编译器之美——基于开源代码的架构分析与实现》已由清华大学出版社出版,各大电商平台已经开始销售。
2.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/openarkcompiler/OpenArkCompiler/issues/I1EWAX
PLCT实验室张洪滨向 MLIR repo 提交 patch:
Reviewing:
[mlir] Get array from the dense elements attribute with buffer protocol.
https://reviews.llvm.org/D91021
[mlir] Get array from the dense elements attribute with array property.
https://reviews.llvm.org/D91326
上述两个正在review的patch是希望从dense elements attribute取出数组,此处分别采用两种方式,第一种是直接定义buffer protocol,第二种是定义array属性。将两种方法进行对比,选择一种。
MLIR知乎文章
在蜂鸟FPGA评估板上运行MLIR GEMM - https://zhuanlan.zhihu.com/p/272179056
B站视频
在蜂鸟FPGA评估板上运行MLIR GEMM - https://www.bilibili.com/video/BV17K4y1E7Hd/
TODO 实习生招募!
本期没有新的进展。
TODO 实习生招募!
TODO 实习生招募! 本期没有新的进展。
本期没有新的进展。
https://github.com/isrc-cas/eternal-balance
如果你感兴趣,欢迎加入永恒天平项目,一起做些有意思的事情!
王萌 - USB驱动框架及RT-Thread的USB host实现分析 - 20201111 - PLCT实验室
https://www.bilibili.com/video/BV1oy4y1B7B1
PLCT现在开始参与到RISC-V code-size-reduction TG项目工作中:https://lists.riscv.org/g/tech-code-size/topics ,陈嘉炜开始对GCC与Binutils添加RISC-V-ZFINX拓展支持,目前工作暂存于
https://github.com/pz9115/riscv-gcc/tree/riscv-gcc-10.2.0-zfinx
https://github.com/pz9115/riscv-binutils-gdb/tree/riscv-binutils-2.35-zfinx
陈嘉炜 - ZFINX WORKING IN GCC AND BINUTILS - 20201111 - PLCT实验室
https://www.bilibili.com/video/BV11a4y1s7uG
- PLCT许愿池2020计划 https://github.com/isrc-cas/PLCT-Weekly/blob/master/RISCV-DevTools-Wishlist-2020.md
- PLCT2020年开源路线图 https://github.com/isrc-cas/PLCT-Weekly/blob/master/RISCV-Roadmap-2020.md
- 面向国内 RISC-V 芯片厂商的 QEMU 支持计划 https://github.com/isrc-cas/PLCT-Weekly/blob/master/PLCT-QEMU-Support-Project-for-Domestic-RV-Vendors.md
- PLCT OpenDay 2019 https://github.com/isrc-cas/PLCT-Weekly/blob/master/PLCT-OpenDay-2019.md
- PLCT实验室的开放职位 https://github.com/isrc-cas/PLCT-Weekly/blob/master/open-positions.md
- PLCT Lab English Blog https://plctlab.github.io
- PLCT Weekly https://github.com/isrc-cas/PLCT-Weekly
- PLCT 公开报告 https://github.com/isrc-cas/PLCT-Open-Reports
- PLCT工具箱 https://github.com/isrc-cas/PLCT-toolbox
- C910 LLVM 支持 https://github.com/isrc-cas/c910-llvm
- RISC-V Vector Extension Support(rvv-llvm) https://github.com/isrc-cas/rvv-llvm
- rvv-benchmark https://github.com/isrc-cas/rvv-benchmark
- OpenCV for RISC-V https://github.com/isrc-cas/opencv-riscv (目前直接提交给上游了)
- V8 for RISC-V https://github.com/v8-riscv/v8
- 永恒天平 https://github.com/isrc-cas/eternal-balance/
- 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
- pacific(方舟编译器玩具运行时) https://github.com/isrc-cas/pacific