移植 KleidiCV 到 RISC-V 架构并使用 RVV 进行加速
项目描述
KleidiCV 是 Arm 公司开源的计算机视觉加速库,专为 Arm Neon/SVE 指令集优化,广泛用于图像处理、边缘 AI 推理前处理等场景。随着 RISC-V 生态的快速发展,RISC-V Vector Extension(RVV 1.0)已成为高性能计算的重要标准。
本题要求参赛者将 KleidiCV 核心功能移植至 RISC-V 平台,并利用 RVV 1.0 向量指令进行性能加速,探索 RISC-V 在计算机视觉领域的工程潜力。
- 目标架构:RISC-V(RV64GCV,支持 RVV 1.0)
- 推荐测试环境:QEMU
virt机器(-cpu rv64,v=true,vlen=256)或真实 RISC-V 开发板(如 SG2044、A210 等) - 验证平台:A210
产出以及评分要求
必做任务
参赛者需完成 KleidiCV (版本号 26.03)所有算子的 RISC-V 移植,并实现 RVV 向量化加速。
要求:
- 所有算子需通过精度验证(与参考实现结果的误差在允许范围内)
- 已实现 ARM Neon 优化的算子中,至少 90% 需提供 RVV 内联汇编或 RVV Intrinsics 加速版本实现
- 支持不同 VLEN(128/256/512 bit)的自适应实现,可利用 RVV 的
vsetvl灵活向量长度特性 - 也可实现自动向量长度调优(VLEN 探测 + 运行时分发)
- 与 OpenCV RISC-V 实现进行对比基准测试,并提供完整 kleidicv-benchmark 数据
- 适配真实 RISC-V 硬件并提供实测数据,附板卡型号及测试截图/日志
- 使用 CMake 构建,支持
riscv64-unknown-linux-gnu交叉编译工具链 - 验证文档:描述测试方案、用于组委会验证参赛选手的适配成果。
注意事项
- 请确保遵循相关的开源协议和版权规范。
- 参赛者需要自行准备开发环境,组委会后续会对参赛者提供 A210 远程调试环境。
- 禁止直接搬运 OpenCV RISC-V 代码作为实现,须自主实现或明确标注引用来源
- 允许参考 KleidiCV 原始 Arm Neon 实现逻辑,但需进行 RISC-V/RVV 适配
- 所有代码须以 Apache 2.0 协议开源
- 若使用 AI 辅助编写代码,需在提交报告说明使用方式及占比
代码规范
- 语言:C/C++(C++17 或以上)
- RVV 实现:优先使用 RVV Intrinsics(
<riscv_vector.h>),可辅以内联汇编 - 必须包含标量(scalar)回退实现,保证无 RVV 环境下可编译运行
- 代码风格参考 KleidiCV 原始代码规范(snake_case,文件头版权声明)
参考资料
| 资源 | 链接 |
|---|---|
| KleidiCV 26.03 源码 | https://github.com/rv2036/rvspoc-P2601-kleidicv/tree/26.03 |
| RISC-V RVV 1.0 规范 | https://github.com/riscv/riscv-v-spec |
| RVV Intrinsics 参考手册 | https://github.com/riscv-non-isa/rvv-intrinsic-doc |
| RISC-V GNU 工具链 | https://github.com/riscv-collab/riscv-gnu-toolchain |
| QEMU RISC-V 文档 | https://www.qemu.org/docs/master/system/target-riscv.html |
| OpenCV 4.13.0 源码 | https://github.com/opencv/opencv/tree/4.13.0 |
| OpenCV RISC-V HAL 参考 | https://github.com/opencv/opencv/tree/4.x/modules/core/include/opencv2/core/hal |
提交说明
1. 提交仓库
参赛者需将代码提交至以下仓库:
https://github.com/rv2036/rvspoc-P2601-kleidicv2. 提交方式
请通过 Pull Request(PR) 的方式将结果提交至上述仓库。
下文中所提及的「PR」均指针对第 1 条所述仓库创建的 Pull Request。
3. PR 中需包含的内容
创建 PR 时,必须提供用于复现移植成果的全部必要内容,包括但不限于:
- 完整的源代码或二进制文件(* 详见第 5 条说明)
- 配置文件(若有)
- 依赖的库文件(若有)
- 补丁文件(若有)
- 其他对验证提交结果所必需的内容
4. 必须附带的说明文件
创建 PR 时,须同时附带一份说明文件,内容应包含用于验证移植成果的详细步骤与信息,包括但不限于:
- 验证平台说明:是否限定特定平台?若限定,请注明操作系统名称、版本及安装说明
- 依赖库说明:是否限定特定依赖库?若限定,请注明相关信息及安装说明
- 程序编译及安装步骤
- 程序运行步骤
- 程序运行结果
- 其他对验证提交结果所必需的信息
5. 关于源代码的特别说明(移植类赛题)
针对第 3 条中「完整的源代码或二进制文件」一项,补充说明如下:
- 参赛者必须在比赛时间截止前(即 2026 年 8 月 31 日 (AoE) 当日结束前),通过 PR 的方式完整提交所有源代码,方可视为完成本赛题。
6. 验证与成绩认定
组委会将按照 PR 提交的先后顺序开始验证,验证结果将作为成绩评定的依据。
获胜条件:首位验证成功且满足产出及评分要求的选手。
7. 评判与争议处理
比赛组委会与赞助商将共同委派技术代表,组成 「联合评判组」。
评判组的职责包括:
- 对比赛过程及评判结果进行技术评判
- 受理并处理所有与比赛相关的争议
验收说明
- 2026 年 9 月 20 日后,由 RVSPOC 组委会公布。
- 由于赛题的开放性和软件的复杂性,赛题发布时可能存在未解释或需要修正的部分。针对未考虑到的方面,随着比赛进程的推进可能根据选手的反馈会有调整,请保持对赛事网站的关注。最终解释权归属于比赛的赛题评审委员会。
知识产权及开源协议要求
所有参赛结果要求开源,并提交至主办方指定仓库。参赛者(作者)持有作品的所有权。主办方鼓励参赛者将结果回馈贡献至 upstream。