Skip to content

Latest commit

 

History

History
199 lines (110 loc) · 9.41 KB

2020-11-16.md

File metadata and controls

199 lines (110 loc) · 9.41 KB

PLCT开源进展·第13期·2020年11月16日

卷首语

过去的半个月我们有两个好消息:第一、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实验室的英文网站成立啦!以下两个网址都可以访问,是一样的:

https://plctlab.github.io

https://plctlab.org

亮点二: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

RISC-V 「V」向量扩展LLVM实现

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

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 项目进展

按部就班的进行。

  1. 为GN构建工具添加架构flag,以便之后控制C扩展指令的生成

    riscv-collab/v8#309

  2. 添加了分析指令的脚本,功能为统计生成的二进制指令中可以直接转换成C扩展指令的数量

    riscv-collab/v8#296

    riscv-collab/v8#316

OpenCV for RISC-V Using Vector Extension

近期调试并解决了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

AOSP for RISC-V

进一步完善 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/

OpenJDK for RISC-V

  1. “知乎” 上的 “Java on RISC-V” 专栏持续更新,发布了一篇实验报告:
  2. 持续探索OpenJDK11 RISV64移植的roadmap,发布了一篇视频报告:

OpenBLAS for RISC-V using Vector Extension

本期没有新的进展。

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

本期没有新的进展。

RISC-V Spike 模拟器扩展

本期没有新的进展。

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

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

MLIR

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/

CIRCT

TODO 实习生招募!

本期没有新的进展。

OpenROAD

TODO 实习生招募!

Chisel/FIRRTL

TODO 实习生招募! 本期没有新的进展。

永恒天平 / Eternal Balance

本期没有新的进展。

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