开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

模式二:基于子命令的工作流

工作流程

项目预处理 → 向量化扫描 → 工具补丁验证 → AI补丁改写及验证 → 补丁应用 → 生成报告及优化后的源码

生成的具体内容包括:HTML报告及patch应用后的项目。

工作目录

{project_name}_{id}/                       # 工作区根目录(权限0o700)
├── workflow.log                        # 全量日志文件
├── origin/                             # 原始项目只读备份(权限0o700)
├── result/                             # 优化后的项目(权限0o700)
├── vectorization_result/               # 天秤工具输出目录
├── patch/                              # 补丁文件和HTML报告目录
└── unit_test/                          # 单元测试源文件(.cpp)和编译二进制目录

命令格式

./devkitai vectorization_workflow --project-dir <DIR> [OPTIONS]

参数说明

表1 参数说明

参数

参数选项

说明

-h/--help

-

可选参数,获取帮助信息。

--project-dir

-

必选参数,指定输入项目的源码根目录。

说明:

不使用“--file-path”参数、“--flamegraph-path”参数和“--funcs”参数时,将启用全项目分析模式并行分析目录下所有C/C++源文件和头文件。

--file-path

-

可选参数,指定输入的C/C++源文件路径。启用单文件分析模式时必须选择该参数。

--flamegraph-path

-

可选参数,指定火焰图分析模式下火焰图SVG文件的路径。启用火焰图分析模式时必须选择该参数。

--funcs

-

可选参数,指定函数分析模式下被分析函数的列表。启用指定函数分析模式时必须选择该参数。支持选择多个选项,用英文逗号分隔。

--top

-

可选参数,指定前N个热点函数,默认为Top10。

--vectorization-path

-

可选参数,指定天秤源码优化工具可执行文件路径。

--simd-target

neon/sve

可选参数,指定转换的ARM指令集,可指定为NEON或SVE指令集,默认值为neon。

  • NEON:ARM架构中的SIMD指令集,通过128位矢量寄存器实现并行数据处理,支持8/16/32/64位整数及单精度浮点运算。支持基于鲲鹏920系列和鲲鹏950处理器的服务器。
  • SVE:可伸缩矢量扩展,一种矢量长度无关的SIMD指令集,让同一份代码能在不同宽度的ARM处理器上自动获得最佳性能。支持部分基于鲲鹏920新型号和鲲鹏950处理器的服务器。

--gcc-toolchain

-

可选参数,指定GCC编译器安装的目录,作为代码分析时的工具链路径。默认使用系统的GCC编译器目录。

--clang-resource-dir

-

可选参数,指定Clang内置头文件(如stddef.h)所在的目录,默认为天秤源码优化工具lib目录下的头文件目录。

说明:

该参数的默认值为:install_path/tiancheng/lib/clang/17。

--disable-tool-patch-test

-

可选参数,关闭天秤源码优化工具生成补丁的单元测试验证,默认值为开启。

--disable-strategy

-

可选参数,关闭优化策略库加载。

说明:

关闭后AI自主推导优化方案,可能降低生成质量与稳定性。

--tool-jobs

-

可选参数,指定在全项目分析模式下,天秤源码优化工具并行工作进程数。默认启用天秤源码优化工具的“-j”并行模式,传入指定值可设置并行上限。

--max-workers

-

可选参数,指定AI补丁级并行工作线程数。默认工作线程数为CPU核数与补丁数之间的最小值,若传入指定值可设置工作线程数上限。

操作步骤

此处以包管理配置自动下载天秤源码优化工具,使用单文件扫描模式对llama_and_inline.cpp文件进行源码优化为例,请根据实际情况进行修改。

  1. 进入DevKit AI工具解压后目录,对“llama_and_inline.cpp”C/C++文件进行源码优化。
    ./devkitai vectorization_workflow --project-dir /home/tiancheng-llama/llama-test --file-path /home/tiancheng-llama/llama-test/llama_and_inline.cpp --simd-target sve
    • “/home/tiancheng-llama/llama-test”为项目的源码根目录,请用户以实际项目目录替换。
    • “/home/tiancheng-llama/llama-test/llama_and_inline.cpp”为C/C++源文件路径,请用户以实际文件路径替换。
    • 此处以指定为SVE指令集为例,请用户以实际需求自行选择指令集。

    具体返回信息如下。天秤源码优化工具处理结果将存储于“/home/tiancheng-llama/llama-test_a421/”目录。

    [2026-07-20 19:00:28] 工作流(进度条+workflow.log)初始化完成
    [2026-07-20 19:00:28]
    [2026-07-20 19:00:28] ############################################################
    [2026-07-20 19:00:28] # 向量化优化工作流 (进度条+workflow.log) 开始执行
    [2026-07-20 19:00:28] # 分析模式: targeted | SIMD: sve | 工具补丁测试: 开启 | 策略库: 开启 | 工具并发: 自动 | AI并发: 自动
    [2026-07-20 19:00:28] ############################################################
    [2026-07-20 19:00:28]
    [2026-07-20 19:00:28] ============================================================
    [2026-07-20 19:00:28] [Phase 1] 项目预处理
    [2026-07-20 19:00:28] ============================================================
    [2026-07-20 19:00:28]   源项目目录: /home/tiancheng-llama/llama-test
    [2026-07-20 19:00:28]   目标文件路径: /home/tiancheng-llama/llama-test/llama_and_inline_func_test.cpp
    [2026-07-20 19:00:28]   分析模式: targeted
    [2026-07-20 19:00:28]
    [2026-07-20 19:00:28] ============================================================
    [2026-07-20 19:00:28] [校验] 输入参数与操作权限检查
    [2026-07-20 19:00:28] ============================================================
    [2026-07-20 19:00:28]   [Check] ✓ 源项目目录 目录存在: /home/tiancheng-llama/llama-test
    [2026-07-20 19:00:28]   [Check] ✓ 源项目目录 当前用户可读: /home/tiancheng-llama/llama-test
    [2026-07-20 19:00:28]   [Check] ✓ 源项目目录 当前用户可进入: /home/tiancheng-llama/llama-test
    [2026-07-20 19:00:28]   [Check] ✓ simd_target 值合法: sve
    [2026-07-20 19:00:28]   [Check] ✓ 工作区父目录 目录存在: /home/tiancheng-llama
    [2026-07-20 19:00:28]   [Check] ✓ 工作区父目录 当前用户可读: /home/tiancheng-llama
    [2026-07-20 19:00:28]   [Check] ✓ 工作区父目录 当前用户可写可进入: /home/tiancheng-llama
    [2026-07-20 19:00:28]   [Check] ✓ 目标文件 文件存在: /home/tiancheng-llama/llama-test/llama_and_inline_func_test.cpp
    [2026-07-20 19:00:28]   [Check] ✓ 目标文件 当前用户可读: /home/tiancheng-llama/llama-test/llama_and_inline_func_test.cpp
    [2026-07-20 19:00:28]   [Check] ✓ 目标文件 在项目目录内: /home/tiancheng-llama/llama-test/llama_and_inline_func_test.cpp
    [2026-07-20 19:00:28]   [Check] ✓ 目标文件后缀合法: .cpp
    [2026-07-20 19:00:28]   [Install] 正在安装 tiancheng...
    100%[======================================================================]    0.01M   8.3MB/s eta  0m 00s
    [2026-08-24 20:29:40]   [Check] ✓ tiancheng 已安装: /home/DevKit-AI-x.x.x-Linux-Kunpeng/_internal/products/tiancheng/tiancheng
    [2026-07-20 19:00:28]   [Check] ✓ 系统命令可用: g++ -> /usr/bin/g++
    [2026-07-20 19:00:28]   [Check] ✓ 项目目录含 C/C++ 源文件
    [2026-07-20 19:00:28] ============================================================
    [2026-07-20 19:00:28]   [Step] workflow.log 已创建: /home/tiancheng-llama/llama-test_a421/workflow.log
    [2026-07-20 19:00:28]   [Step] 备份原始项目 → /home/tiancheng-llama/llama-test_a421/origin
    [2026-07-20 19:00:28] 目录复制完成: /home/tiancheng-llama/llama-test -> /home/tiancheng-llama/llama-test_a421/origin
    [2026-07-20 19:00:28]   [Step] 创建修改副本 → /home/tiancheng-llama/llama-test_a421/result
    [2026-07-20 19:00:28] 目录复制完成: /home/tiancheng-llama/llama-test -> /home/tiancheng-llama/llama-test_a421/result
    [2026-07-20 19:00:28]   [Step] 策略库目录(sve): /home/DevKitAI/DevKitAIBackend/src/devkitai/cores/knowledge/strategy/sve
    [2026-07-20 19:00:28]   [Done] 工作区: /home/tiancheng-llama/llama-test_a421 | 耗时: 0.01s
    [2026-07-20 19:00:28] ============================================================
    [2026-07-20 19:00:28]
    [2026-07-20 19:00:28] ============================================================
    [2026-07-20 19:00:28] [Phase 2] 向量化分析工具调用
    [2026-07-20 19:00:28] ============================================================
    [2026-07-20 19:00:28]   工具路径: /home/DevKit-AI-x.x.x-Linux-Kunpeng/_internal/products/tiancheng/tiancheng
    [2026-07-20 19:00:28]   分析模式: targeted
    [2026-07-20 19:00:28]   分析文件: /home/tiancheng-llama/llama-test_a421/result/llama_and_inline_func_test.cpp
    [2026-07-20 19:00:28]   [Step] 执行向量化扫描...
    [2026-07-20 19:00:29]   [Done] 扫描完成 | 耗时: 0.23s
    [2026-07-20 19:00:29]   [Step] 加载分析报告...
    [2026-07-20 19:00:29]   [Result] 工具补丁: 2 | AI补丁: 2 | 总计: 4
    [2026-07-20 19:00:29] ============================================================
    [2026-07-20 19:00:29]
    [2026-07-20 19:00:29] ============================================================
    [2026-07-20 19:00:29] [Router] 进入补丁验证流程 | 工具: 2 | AI: 2 | 总计: 4
    [2026-07-20 19:00:29] ============================================================
    [2026-07-20 19:00:29]
    [2026-07-20 19:00:29] ============================================================
    [2026-07-20 19:00:29] [Phase 3] 工具补丁并行验证
    [2026-07-20 19:00:29] ============================================================
    [2026-07-20 19:00:29]   补丁数量: 2 | 并发线程: 2 | 最大测试重试: 2
    [2026-07-20 19:00:29]   ----------------------------------------
    [2026-07-20 19:00:29]   [Step] 预初始化LLM实例...
    [2026-07-20 19:00:29]   [Step] LLM实例初始化完成
    [2026-07-20 19:07:12]   工具补丁 完成 | 2/2 | 耗时: 403.3s
    [2026-07-20 19:07:12]   [PASS] 工具补丁 #1 | /home/tiancheng-llama/llama-test_a421/result/llama_and_inline_func_test.cpp [67-69] | 性能提升 +558.6% (1.1us → 162.6ns, speedup=6.59)
    [2026-07-20 19:07:12]   [PASS] 工具补丁 #0 | /home/tiancheng-llama/llama-test_a421/result/llama_and_inline_func_test.cpp [61-63] | 性能提升 +503.5% (1.2us → 200.0ns, speedup=6.04)
    [2026-07-20 19:07:12]   ----------------------------------------
    [2026-07-20 19:07:12]   [Summary] 通过: 2/2 | 回退AI: 0 | 耗时: 403.30s
    [2026-07-20 19:07:12] ============================================================
    [2026-07-20 19:07:12]
    [2026-07-20 19:07:12] ============================================================
    [2026-07-20 19:07:12] [Phase 4] AI补丁并行改写+验证
    [2026-07-20 19:07:12] ============================================================
    [2026-07-20 19:07:12]   补丁数量: 2 | 并发线程: 2 | AI改写重试上限: 3 | 测试重试上限: 3 | 策略库: 开启
    [2026-07-20 19:07:12]   ----------------------------------------
    [2026-07-20 19:07:12]   [Step] 预初始化LLM实例...
    [2026-07-20 19:07:12]   [Step] LLM实例初始化完成
    [2026-07-20 19:27:32]   AI补丁 完成 | 2/2 | 耗时: 1220.0s
    [2026-07-20 19:27:32]   [PASS] AI补丁 #1 | /home/tiancheng-llama/llama-test_a421/result/llama_and_inline_func_test.cpp [52-56] | 性能提升 +95.2% (4.0us → 2.0us, speedup=1.95)
    [2026-07-20 19:27:32]   [PASS] AI补丁 #0 | /home/tiancheng-llama/llama-test_a421/result/llama_and_inline_func_test.cpp [33-36] | 性能提升 +193.4% (3.1us → 1.1us, speedup=2.93)
    [2026-07-20 19:27:32]   ----------------------------------------
    [2026-07-20 19:27:32]   [Summary] AI通过: 2/2 | 全部通过: 4 (工具+AI) | 耗时: 1219.96s
    [2026-07-20 19:27:32] ============================================================
    [2026-07-20 19:27:32]
    [2026-07-20 19:27:32] ============================================================
    [2026-07-20 19:27:32] [Router] 验证通过 4 个补丁,进入应用阶段
    [2026-07-20 19:27:32] ============================================================
    [2026-07-20 19:27:32]
    [2026-07-20 19:27:32] ============================================================
    [2026-07-20 19:27:32] [Phase 5] 补丁应用
    [2026-07-20 19:27:32] ============================================================
    [2026-07-20 19:27:32]
    [2026-07-20 19:27:32] ============================================================
    [2026-07-20 19:27:32] [Final Summary] 补丁处理最终总结
    [2026-07-20 19:27:32] ============================================================
    [2026-07-20 19:27:32]   工具补丁 (2 个):
    [2026-07-20 19:27:32]     #1  /home/tiancheng-llama/llama-test_a421/result/llama_and_inline_func_test.cpp [67-69]  功能:通过  测试迭代:3  性能:+558.6%
    [2026-07-20 19:27:32]     #0  /home/tiancheng-llama/llama-test_a421/result/llama_and_inline_func_test.cpp [61-63]  功能:通过  测试迭代:2  性能:+503.5%
    [2026-07-20 19:27:32]   AI补丁 (2 个):
    [2026-07-20 19:27:32]     #1  /home/tiancheng-llama/llama-test_a421/result/llama_and_inline_func_test.cpp [52-56]  功能:通过  改写:1  测试迭代:2  性能:+95.2%
    [2026-07-20 19:27:32]     #0  /home/tiancheng-llama/llama-test_a421/result/llama_and_inline_func_test.cpp [33-36]  功能:通过  改写:2  测试迭代:2  性能:+193.4%
    [2026-07-20 19:27:32]   ----------------------------------------
    [2026-07-20 19:27:32]   总计: 4 个补丁 | 通过: 4 | 失败/回退: 0
    [2026-07-20 19:27:32] ============================================================
    [2026-07-20 19:27:32]   待应用补丁: 4 个
    [2026-07-20 19:27:32]   [去重] 去重后补丁: 4 个 (移除 0 个重叠) | 耗时:0.000s
    [2026-07-20 19:27:32]   涉及文件: 1 个
    [2026-07-20 19:27:32]   ----------------------------------------
    [2026-07-20 19:27:32]   [File] /home/tiancheng-llama/llama-test_a421/result/llama_and_inline_func_test.cpp | 补丁数: 4
    [2026-07-20 19:27:32]     [tool] 应用补丁 [67-69] | 替换 3 行 → 5 行
    [2026-07-20 19:27:32]     [tool] 应用补丁 [61-63] | 替换 3 行 → 5 行
    [2026-07-20 19:27:32]     [AI] 应用补丁 [52-56] | 替换 5 行 → 28 行
    [2026-07-20 19:27:32]     [AI] 应用补丁 [33-36] | 替换 4 行 → 35 行
    [2026-07-20 19:27:32]     写入成功 | 应用 4 个补丁
    [2026-07-20 19:27:32]   ----------------------------------------
    [2026-07-20 19:27:32]   [Summary] 应用补丁: 4/4 | 涉及文件: 1 | 耗时: 0.00s
    [2026-07-20 19:27:32]   [ReportData] 源文件(只读): Vectorization_Source_20260720_190028_983_1457.json
    [2026-07-20 19:27:32]     [ReportData] 保留 llama_and_inline_func_test.cpp 行33-36
    [2026-07-20 19:27:32]     [ReportData] 保留 llama_and_inline_func_test.cpp 行52-56
    [2026-07-20 19:27:32]     [ReportData] 保留 llama_and_inline_func_test.cpp 行61-63
    [2026-07-20 19:27:32]     [ReportData] 保留 llama_and_inline_func_test.cpp 行67-69
    [2026-07-20 19:27:32]   [ReportData] loop_list 过滤: 保留 4/4 (移除 0 个未命中补丁)
    [2026-07-20 19:27:32]   [ReportData] 已移除 func_results (暂不展示)
    [2026-07-20 19:27:32]   [ReportData] task_info 已覆写 task_name=Vectorization_Patch_Result_20260720_192732_740_324363
    [2026-07-20 19:27:32]   [HTMLReport] 模板: Vectorization_Source_20260720_190028_983_1457.html
    [2026-07-20 19:27:32]   [HTMLReport] 替换JS变量: vecReportData ✓
    [2026-07-20 19:27:32]   [HTMLReport] 替换JS变量: taskInfoReportData ✓
    [2026-07-20 19:27:32]   [HTMLReport] 报告已生成: /home/tiancheng-llama/llama-test_a421/patch/Vectorization_Patch_Result_20260720_192732_740_324363.html
    [2026-07-20 19:27:32]   [GitPatch] patch 已生成: /home/tiancheng-llama/llama-test_a421/patch/devkit-vectorization.patch (4778 bytes)
    [2026-07-20 19:27:32] ============================================================
    [2026-07-20 19:27:32]
    [2026-07-20 19:27:32] ############################################################
    [2026-07-20 19:27:32] # 工作流执行完成
    [2026-07-20 19:27:32] # 端到端总耗时: 1623.81s
    [2026-07-20 19:27:32] # 各阶段耗时(wall-clock):
    [2026-07-20 19:27:32] #   Phase1 预处理: 0.01s
    [2026-07-20 19:27:32] #   Phase2 向量化: 0.23s
    [2026-07-20 19:27:32] #   Phase3 工具补丁: 403.30s
    [2026-07-20 19:27:32] #   Phase4 AI补丁: 1219.96s
    [2026-07-20 19:27:32] #   Phase5 补丁应用: 0.04s
    [2026-07-20 19:27:32] #   阶段合计: 1623.53s
    [2026-07-20 19:27:32] ############################################################

输出产物

源码优化完成后,工作目录下会生成以下产物。

文件/目录

阶段

说明

workspace/

项目预处理

工作区根目录

workspace/origin/

项目预处理

原始项目备份

workspace/vectorization_result/

项目预处理

天秤源码优化工具报告输出目录

workspace/patch/

项目预处理

最终报告和patch文件输出目录

workspace/unit_test/

项目预处理

单元测试编译运行目录

workspace/workflow.log

项目预处理

全流程日志(项目预处理阶段创建,后续阶段持续写入。)

workspace/vectorization_result/Vectorization_Source_*.json

向量化扫描

天秤源码优化工具中间结果文件(如果没有扫描出可优化结果,则不输出该文件。)

workspace/vectorization_result/Vectorization_Source_*.html

向量化扫描

天秤源码优化工具可视化结果文件(如果没有扫描出可优化结果,则不输出该文件。)

workspace/vectorization_result/Vectorization_Optimization_Result_*.json

向量化扫描

天秤源码优化工具改写结果文件

workspace/vectorization_result/Vectorization_Optimization_Result_*/

向量化扫描

全项目分析模式下天秤源码优化工具结果目录

workspace/unit_test/unit_test_tool_*.cpp

工具补丁验证

工具补丁的单元测试源码(AI生成)

workspace/unit_test/unit_test_tool_*

工具补丁验证

工具补丁单元测试源码编译成的二进制文件路径

workspace/unit_test/unit_test_ai_*.cpp

AI补丁改写及验证

AI补丁的单元测试源码(AI生成)

workspace/unit_test/unit_test_ai_*

AI补丁改写及验证

AI补丁单元测试源码编译成的二进制文件路径

workspace/result/

补丁应用

使用天秤源码优化工具进行向量化扫描和补丁应用后的结果目录(该目录会在预处理阶段存储项目修改副本,作为后续向量化扫描及补丁应用的处理对象。)

workspace/patch/{task_name}.html

补丁应用

  • 有扫描出可优化结果时,HTML报告中包含:项目源码、优化后代码、性能收益分析以及是否AI生成标识。
  • 没有扫描出可优化结果时,不输出该文件。

workspace/patch/devkit-vectorization.patch

补丁应用

git patch文件(origin vs result的diff比较,如果没有扫描出可优化结果,则不输出该文件。)