本月,持续了一周的第一届 RISC-V 中国峰会顺利落幕。尽管受到了南方疫情的影响,导致部分的厂商无法参展、演讲者无法到现场演讲、广州深圳等地的报名参会者只能选择线上观看,本次峰会依然成为了目前为止规模最大的 RISC-V 峰会 —— 无论是演讲数量、线上线下参会规模、还是参与的厂商规模。作为本次峰会的策划和主要的组织方,PLCT实验室在峰会期间,召集了几乎所有的员工、实习生、前实习生到场进行会议的准备和现场服务。这也是第一次PLCT实验室的所有成员有机会同时来到一个城市,面对面的相互交流、互开玩笑。
我们从半年前就开始准备会议的组织,并且计划在峰会上公开四个正在进行中的项目的进展。标题和slogan我都想好了。然而本次峰会的筹备规模远远超过了我们一开始的预估,从四月开始我的主要精力就放在了峰会本身,以至于直到峰会开始的当天也没有完成预期的项目目标。在6月26日,峰会最后一天举行的「PLCT 上海 RISC-V 活动日」上,我们得以将进行中的几个项目进行了介绍。现场有包括PLCT成员在内的二十多人参会、线上B站直播的热度维持在了一千以上。还不错 :)
7月1日代表着下半年的开始。这样表示着我们将继续扛起来上半年没能完成FLAGS继续努力。
- NodeJS 主线代码合并进入了 RV64GC 后段的支持。
- OpenSSL 接受了 PLCT 实验室有关 RISC-V 的补丁。
- 第三期《编译技术入门与实战·讨论班》完结撒花🎉 目前四门课程中, RISC-V OS 课程也早已完结撒花,还有 V8 课程和模拟器课程在继续拖更。
- 感谢软件所各个部门的稳定表现, PLCT 实验室现在已经获得了包括 SPEC CPU 2017、 EEMBC 等在内的一系列商业 Benchmarks 的授权。 下半年,开始卷起来。
本月关于V8的一个好消息是:在P LCT V8 小队的努力下,nodejs 主线代码已经合入了 RV64GC 的支持。
- nodejs riscv 现在可以编译 17.0 版本 https://github.com/v8-riscv/node/tree/v17.0.0-riscv64
同时,nodejs 所依赖的 OpenSSL 也已经接受了来自 PLCT 的 RISCV64 配置代码。本次合入包括主线和 nodejs 依赖的特定版本 1.1.1。值得一提的是,在 1.1.1 这个 released branch 上合入新架构的支持,是一项颇 tough 的 task,需要获得 OpenSSL 的 OpenSSL Management Committee (OMC) 和 OpenSSL Technical Committee (OTC) 的同意,幸运的是耗时三个月后,我们做到了!
- openssl 1.1.1 新增 riscv64 配置 openssl/openssl#14724
V8的维护和优化依旧是小队工作的重心,目前V8上的coding和bug fixing工作已经完全步入了在upstreaming维护的正轨,6月的主要工作如下:
- 修复不正确的 branch 导致错误的 builtin id 2970813: [riscv64] Fix uncorrectly branch | https://chromium-review.googlesource.com/c/v8/v8/+/2970813
- Branch 增加 flag 控制远跳转或近跳转 2959266: [riscv64] Add Label::Distance flag to control emit Branchshort. | https://chromium-review.googlesource.com/c/v8/v8/+/2959266
- 修复 nodejs 编译过程中 V8 编译不过的问题 2966209: [riscv64] Fix node.js build failed | https://chromium-review.googlesource.com/c/v8/v8/+/2966209
- 优化trampoline 2939442: [riscv64] Optimize-trampoline | https://chromium-review.googlesource.com/c/v8/v8/+/2939442
- 移植sparkplug改动 2952865: [riscv64] Port [sparkplug][arm][arm64[ia32] Callee-saved registers for RecordWrite | https://chromium-review.googlesource.com/c/v8/v8/+/2952865
另外,V8相关的课程和报告,笔记也在更新中:
- 淦!移植个V8不可能这么难!· 2021春季讨论班 · 连载中. 新增一课《V8测试框架》 https://www.bilibili.com/video/BV1hp4y1t7Mx
- RISCV Zce扩展介绍:https://www.bilibili.com/video/BV1sb4y1d7jf , V8中实验性的Zce实现正在进行
- 推出了V8JS知乎专栏,用于记录V8相关知识,以及回复V8课程的收到的提问:https://www.zhihu.com/column/c_1380854521699217409
- 新增文档
RV32I控制转移指令的偏移量计算问题 https://zhuanlan.zhihu.com/p/377200438
BishengJDK在HiFive Unleashed上的SPECjbb2015测试结果 openjdk-riscv/jdk11u#155
- RV32G移植还在调试-version,这一阶段解决了:
Change StackAlignmentInBytes to 8 https://github.com/openjdk-riscv/jdk11u/commit/da8bb86c9b4a3958c4a97eebe53a7cb5f5fd1129
- 史宁宁和张定立在RISC-V 中国峰会post、海报和PLCT RISC-V Day等环节介绍了RV32G的移植工作。
LLVM小队的工作已经逐步进入上游。PLCT 自己的仓库地址还在老地方:
https://github.com/plctlab/llvm-project
继续在 RISC-V 国际基金会的框架下,完善 SIMD/DSP、 Krypto Scalar、 Biemanip、 Zce 的扩展实现工作。
继续帮助平头哥在 Android SIG 中推动 AOSP RISC-V 的 upstream。
我们启动了 Tarsier Project, 但是还没有公开的系统可以演示。
- Public Gentoo Binhost: 提供二进制 http://47.89.252.149/gentoo/binpkgs/openrc
- RISC-V experimental overlay: qemu-plct, nodejs, libunwind https://github.com/dlan17/riscv-overlay
- discrete GPU tested on unmatched (support nvidia, AMD gpu)
- RISC-V 中国峰会的同地活「PLCT 上海开放日」上报告了两个 Gentoo Reports。
本期没有进展。招聘仍在进行,欢迎同学们来实习。
- 初步梳理 Rustc 架构, 介绍 rustc working groping 文章
- Rust 对 RISC-V 的支持现状(update) 文章
- 成为 Rustc Diagnostics 组成员, 帮助完成测试样例 ,以及完成更好的报错信息。
- 同时在 rust-lang/this-week-in-rust 上参与了这个 pull
- 为 Clippy 此项目做了 RISC-V的测试
- 在中文社区中参与翻译parser-combinator。
本期没有进展。招聘仍在进行,欢迎同学们来实习。
- WIP: Optimization of DNN using native RISC-V vector intrinsics. opencv/opencv#20287
招聘仍在进行,欢迎同学们来实习。
本期没有进展。招聘仍在进行,欢迎同学们来实习。
本期没有进展。
PLCT Machine v0.2 版本测试说明仓库 https://github.com/GeassCore/pmts
PLCT实验室的史宁宁依然每周在更新方舟编译器社区周报(OpenArkCompiler Weekly),目前已经更新到第六十八期。
方舟编译器周报每周日晚上通过Repo、知乎、Bilibili和邮件列表发布。
buddy-mlir
添加conv-opt与OpenCV/TensorFlow/PyTorch的卷积性能比较
代码在buddy-mlir仓库相应路径下 (https://github.com/buddy-compiler/buddy-mlir/tree/main/examples/conv-opt/comparison)
本期没有新的进展。我们在招募实习生,欢迎对上述项目感兴趣的同学联系我们!
已经将永恒天平项目作为 RVI code speed opt SIG 的个proposal提交,作为 RISC-V 的性能评测跟踪平台。
https://github.com/isrc-cas/eternal-balance
如果你感兴趣,欢迎加入永恒天平项目,一起做些有意思的事情!
本期没有新的进展
本期没有新的进展
- 移除scratch alloc的描述信息owner,此信息用来描述alloc的内存的用处,当前并没有使用 link
- 启动时检测机器字长是否和编译器选项匹配 link
- 重新实现scratch memory allocator,通过连接表重新实现alloc,使可以动态管理内存。我不支持此补丁,当前alloc只用于扩展scratch结构体,并不需要释放内存,此补丁会增加内存消耗 link
- 添加增强型核间中断,此核间中断可以用于多处理器平台,一个模块控制一系列的核心 link
- 添加性能计数器扩展 link
知乎文章
在VC707上烧写Freedom并运行Linux - https://zhuanlan.zhihu.com/p/352728493
- 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 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
- zfinx工具链仓库地址:https://github.com/pz9115/riscv-gcc
- gcc: https://github.com/pz9115/riscv-gcc/tree/riscv-gcc-10.2.0-zfinx
- binutils: https://github.com/pz9115/riscv-binutils-gdb/tree/riscv-binutils-2.35-zfinx