为推动 RISC-V 生态在计算机视觉领域的发展,并探索大模型智能体在跨架构代码迁移中的潜力,我们基于广泛使用的 OpenCV 视觉库,构建了首个 智能体驱动的 OpenCV 跨架构迁移 Benchmark。
本 Benchmark 聚焦于将Opencv的 ARM NEON 向量化代码自动迁移至 RISC-V Vector (RVV) 架构,旨在评估智能体在保持功能正确性的同时,评估其性能优化的能力,为自动化迁移工具提供标准化评估平台。
尽管 OpenCV 已在 x86 和 ARM 平台上实现了高度优化的向量化后端,但在 RISC-V 平台上,尤其是对 RVV 扩展的支持仍处于早期阶段。手动迁移不仅耗时耗力,还难以保证性能不劣于标量实现。
自动化代码迁移能显著降低跨平台移植的成本,尤其在 RISC-V 生态快速发展的背景下,具备重要的工程与科研价值。
大模型在代码理解与生成任务上展现出强大潜力。本 Benchmark 旨在推动智能体在跨架构、高性能代码迁移任务上的能力边界,加速 RISC-V 视觉应用的落地。
本 Benchmark 填补了现有代码评测数据集在 跨架构迁移 (Cross-Architecture) 与 性能优化 (Performance-Optimization) 交叉领域的空白。
| benchmark | 粒度 | 平均输出行数 | 语言 | 正确性 | 性能 | 跨架构生成 | 描述 |
|---|---|---|---|---|---|---|---|
| ClassEval | Class-level | <50行 | Python | ✅ | ❌ | ❌ | 类级别的代码生成与评估benchmark |
| SWE-bench | Repo-level | <50行 | Python | ✅ | ❌ | ❌ | 解决真实世界GitHub问题的仓库级benchmark |
| JavaBench | Repo-level | <100行 | Java | ✅ | ❌ | ❌ | 专业级Java开发能力评估benchmark |
| KernelBench | Repo-level | <50行 | CUDA | ✅ | ✅ | ❌ | 高性能GPU内核生成能力评估benchmark |
| ParEval | func-level | <50行 | CUDA、C++ | ✅ | ✅ | ❌ | 并行计算程序生成与正确性评估benchmark |
| Swe-Perf | repo-level | ~百行 | Python | ✅ | ✅ | ❌ | 软件仓库中的性能优化与瓶颈修复benchmark |
| cisc-risc | func-level | <200行 | Assembly | ✅ | ❌ | ✅ | cisc-risc汇编代码转译benchmark |
| QMD-Bench | repo-level | ~千行 | C++/Intrinsic | ✅ | ✅ | ✅ | 高性能库跨架构迁移与性能优化benchmark |
-
ClassEval、JavaBench、SWE-bench 等主要关注算法逻辑正确性,缺乏对性能的考量
-
Swe-Perf 虽然涉及性能优化,但局限于算法层面优化,缺乏架构维度优化的考量
-
KernelBench 专注于 GPU 并行计算,但缺乏跨架构迁移维度,且缺乏工程实践性考量
-
cisc-risc 涉及架构迁移,主要关注汇编代码转译,但只是简单的函数级转译
-
ParEval 专注于并行计算,但仅关注简单的函数级并行代码的正确性评估
-
QMD-Bench 在库级迁移的同时,全面保证功能正确性、性能优化和跨架构迁移,更贴近工业级迁移需求。
本 Benchmark 旨在评估 AI Agents 在 OpenCV 跨架构迁移任务中的能力,特别是从 ARM NEON 架构到 RISC-V RVV 架构的代码迁移。通过构建 算子级 (Operator)、应用级 (Application) 和 库级 (Library) 三大维度的评估体系,全面测试 Agents 在代码理解、架构转换和工程实现方面的综合能力。
评估 Agents 迁移 OpenCV 单个算子的能力,要求能够理解整个 OpenCV 库的结构并生成特定算子的 RISC-V 实现。
评测目标:
- 测试 Agent 根据 OpenCV 全库知识,准确定位所有算子实现代码位置
- 完整理解 ARM NEON SIMD 指令逻辑
- 生成对应的 RVV SIMD 实现
- 可成功编译并调用,具有一定性能提升
测试方案:
- 功能正确性测试 (Unit Testing):
- 对迁移后的算子进行严格的单元测试。
- 标准: 必须通过OpenCV官方的测试用例 (Test Cases),输出结果需与标量实现按位一致或误差在容许范围内。
- 性能基准测试 (Performance Benchmarking):
- 通过OpenCV官方perf测试用例对比评估迁移后的 RVV 算子性能。
- 基线 (Baseline): RISC-V 标量实现 (Scalar Implementation)。
- 参考 (Reference): 人类专家手工优化的 RVV 算子性能 (Human-Optimized)。
数据选择:
基于 OpenCV 官方源码中针对 ARM NEON 的手工实现,手工剔除所有未被真正使用的文件,最终获得 21 个实际使用的核心算子。具体的算子数据见算子数据。
评估 Agents 在完整应用场景中的迁移能力,需要自主识别所需算子并完成整体迁移。
评测目标:
- 根据给定的 OpenCV 示例应用,自动识别涉及的算子
- 自动迁移正确所有相关算子
- 使得该示例应用在 RISC-V 架构上得到性能提升
测试方案:
-
算子覆盖测试: 首先对目标模型涉及的所有算子类型进行单独的单元测试,确保所有迁移算子的功能正确性。
-
端到端性能测试 (E2E Performance):
- 测试整个应用完成固定次数推理所需的总耗时(Latency)。
- 对比标量实现和人类手工实现的加速比 (Speedup)。
数据选择:
选取自 OpenCV 官方 samples 示例集合的14个应用,具体选取标准和应用见应用数据。
评估 Agents 迁移整个 OpenCV 库中所有 ARM NEON 算子的能力,这是最高难度的综合性测试。
评测目标:
- 完整迁移 OpenCV 库中算子的比例
- 迁移后的库在 RISC-V 架构上能够正常编译和运行
- 迁移后的库在 RISC-V 架构上性能得到提升
测试方案:
- 算子覆盖率测试 (Operator Coverage Testing):
- 对 OpenCV 库中所有算子进行覆盖率测试,确定算子被成功迁移的比例。
- 端到端性能测试 (E2E Performance):
- 测试性能加速比 (Speedup),对比标量实现和人类手工实现的加速比。
为了科学评估智能体的能力边界,我们在不同层级设计了细粒度的难度分级。
基于软件逻辑与硬件特性的双重维度进行分级。
- 依据: 算子的代码行数、控制流复杂度 (Software) 以及指令吞吐、向量化难度 (Hardware)。
- 数据: 详细分级请参阅 。
基于上述设计,我们提供了丰富的测试用例集,涵盖从基础算子到复杂模型场景的全面评估。
数据集包含 21 个 OpenCV核心算子,旨在覆盖推理关键路径并验证 RVV 向量化加速效果,详见 算子级题目。主要覆盖:
- 常见图像处理操作(如 blur、sobel、resize 等)
- SIMD 强相关的算术与逻辑处理(add、absdiff、bitwise 等)
- 具有代表性的滤波、卷积、空间变换与颜色变换算子
- 包含归约类算子(如 sum、min_max),测试 RVV 归约能力
- 包含多窗口和非线性滤波操作(如 median_filter、morph)
这些算子代表 OpenCV 中最常用也是向量化实现最具典型性的操作, 它们覆盖了跨架构迁移过程中主要挑战(SIMD 内存布局、数据类型、 边界处理、动态向量长度适配等),因此作为 Level 1 的迁移评估标准。
Level 2 包含 14 个来自 OpenCV 官方 samples 的典型图像处理应用。每个案例涉及多个算子,要求 Agent 能够识别算子依赖 → 迁移 NEON 实现 → 组合调用 → 完整构建 → 运行效果验证。具体题目见应用级题目
为了深入分析智能体在不同类型算子上的表现,我们提供了核心算子的逐项评测结果。
OpenHands详细算子通过情况
| Operator | OpenHands(GPT-5) | OpenHands(gemini-3-pro-preview) | OpenHands(qwen3-coder-480b-a35b-instruct) | OpenHands(gpt-4o) |
|---|---|---|---|---|
bitwise |
✅ | ❌ | ✅ | ❌ |
min_max |
✅ | ✅ | ❌ | ❌ |
median_filter |
❌ | ❌ | ❌ | ❌ |
sum |
✅ | ❌ | ❌ | ❌ |
dot_product |
❌ | ❌ | ❌ | ❌ |
blur |
❌ | ❌ | ❌ | ❌ |
separable_filter |
✅ | ❌ | ❌ | ❌ |
morph |
❌ | ❌ | ❌ | ❌ |
sobel |
❌ | ❌ | ❌ | ❌ |
absdiff |
❌ | ✅ | ❌ | ❌ |
add |
✅ | ✅ | ❌ | ❌ |
add_weighted |
❌ | ❌ | ❌ | ❌ |
cmp |
❌ | ❌ | ❌ | ❌ |
mul |
❌ | ❌ | ❌ | ❌ |
sub |
❌ | ❌ | ❌ | ❌ |
div |
❌ | ❌ | ❌ | ❌ |
colorconvert |
❌ | ❌ | ❌ | ❌ |
convolution |
✅ | ❌ | ❌ | ❌ |
resize |
❌ | ❌ | ❌ | ❌ |
pyramid |
❌ | ❌ | ❌ | ❌ |
gaussian_blur |
❌ | ❌ | ❌ | ❌ |
JoyCode详细算子通过情况
| Operator | JoyCode(claude-sonnet-4-5-20250929) | JoyCode(gemini-3-pro-preview) | JoyCode(Kimi-K2-0905) |
|---|---|---|---|
bitwise |
✅ | ✅ | ✅ |
min_max |
✅ | ❌ | ✅ |
median_filter |
❌ | ❌ | ✅ |
sum |
❌ | ❌ | ❌ |
dot_product |
❌ | ❌ | ❌ |
blur |
❌ | ❌ | ❌ |
separable_filter |
✅ | ❌ | ❌ |
morph |
❌ | ❌ | ❌ |
sobel |
✅ | ❌ | ❌ |
absdiff |
❌ | ❌ | ❌ |
add |
❌ | ❌ | ❌ |
add_weighted |
❌ | ❌ | ❌ |
cmp |
❌ | ❌ | ❌ |
mul |
❌ | ❌ | ❌ |
sub |
❌ | ❌ | ❌ |
div |
❌ | ❌ | ❌ |
colorconvert |
❌ | ❌ | ❌ |
convolution |
✅ | ❌ | ❌ |
resize |
❌ | ❌ | ❌ |
pyramid |
❌ | ❌ | ❌ |
gaussian_blur |
❌ | ❌ | ❌ |
TRAE详细算子通过情况
| Operator | TRAE(Doubao-seed-code) | TRAE(deepseek-v3.1) | TRAE(GLM-4.6) |
|---|---|---|---|
bitwise |
✅ | ❌ | ❌ |
min_max |
❌ | ❌ | ❌ |
median_filter |
✅ | ❌ | ❌ |
sum |
❌ | ❌ | ❌ |
dot_product |
❌ | ❌ | ❌ |
blur |
❌ | ✅ | ❌ |
separable_filter |
❌ | ❌ | ❌ |
morph |
❌ | ✅ | ❌ |
sobel |
✅ | ❌ | ❌ |
absdiff |
✅ | ❌ | ❌ |
add |
✅ | ❌ | ❌ |
add_weighted |
❌ | ❌ | ❌ |
cmp |
✅ | ❌ | ❌ |
mul |
❌ | ❌ | ❌ |
sub |
✅ | ❌ | ❌ |
div |
❌ | ❌ | ❌ |
colorconvert |
❌ | ❌ | ❌ |
convolution |
❌ | ✅ | ❌ |
resize |
✅ | ❌ | ❌ |
pyramid |
❌ | ❌ | ❌ |
gaussian_blur |
❌ | ❌ | ❌ |
# 1. Clone the repository
git clone https://github.com/breezejh/QMD-bench.git
# 2. Install dependencies
pip install -r requirements.txt
# 3. Run the benchmark
python run_benchmark.py --target riscv --model gpt-4
--test_level operator为了促进 RISC-V 基础软件生态繁荣,同时推动学术界和产业界利用智能体(AI Agents)进行跨架构代码迁移的探索,我们基于端侧性能极致优化的 NCNN 推理框架,构建了业界首个智能体驱动的 NCNN 库跨架构迁移 Benchmark。
具体github地址为:https://github.com/k1366191024/agent-ncnn-benchmark/tree/main
RepoOMP 是一个用于自动化 OpenMP 代码分析和优化的综合框架。它采用三个专门的智能体按顺序工作,以分析依赖关系、测量性能并自动向 C/C++ 代码添加 OpenMP 原语。
具体github地址为:https://github.com/Qlalq/RepoOMP_intro
FFmpeg等其他开源高性能库的自动迁移评测集我们正在接入中,敬请期待。
