在 AI 加速计算场景中,算子迁移是一类典型的工程任务。

例如,将一个 CUDA kernel 迁移到新的计算平台,并不是简单替换几个 API。

开发者通常需要:

  • 理解原有 kernel 的计算逻辑;
  • 分析 CUDA runtime 调用方式;
  • 调整内存管理流程;
  • 根据目标平台重新组织工程结构;
  • 完成编译和验证。

对于这类任务,AI Agent 的价值并不仅仅是生成代码,而是参与整个工程流程。

本文以一个简单的 vector add CUDA kernel 为例,展示 Kerminal 如何辅助完成从 CUDA 到 AscendC 的迁移分析。

1. 首先理解已有 CUDA 代码

面对已有工程,Kerminal 首先读取 CUDA 源文件。

它分析:

  • 当前代码实现的功能;
  • 使用的 CUDA 特有 API;
  • 迁移过程中需要调整的部分。

示例中的 CUDA kernel 实现的是经典向量加法:

c[i] = a[i] + b[i]

虽然计算逻辑简单,但其中包含典型 CUDA 编程模型:

  • global kernel;
  • threadIdx/blockIdx 索引;
  • cudaMalloc/cudaMemcpy 内存管理;
  • kernel launch


    2. 根据迁移目标拆解任务

复杂工程迁移的难点,不在于单段代码转换,而在于明确整体路径。

Kerminal 根据已有代码分析,生成迁移方案:

  • 创建目标平台工程结构;
  • 迁移 kernel 计算逻辑;
  • 调整 Host 侧调用;
  • 处理数据切分;
  • 编译验证。

这一过程类似开发者进行迁移前的技术方案设计。

    3. 根据目标平台生成工程结构

    CUDA 工程通常围绕 GPU 编程模型组织。

    而迁移到 AscendC 后,需要适配新的开发方式。

    Kerminal 根据迁移方案创建:

    vector_add_ascend/
    
    ├── op_kernel
    ├── op_host
    ├── main.cpp
    ├── CMakeLists.txt
    └── scripts

    分别对应:

    • 算子 kernel 实现;
    • Host 调度逻辑;
    • 编译配置;
    • 测试验证脚本。

    4. 持续检查任务状态

    除了执行任务,Agent 还需要知道任务推进到什么阶段。

    Kerminal 对当前工程状态进行检查:

    已完成:

    • 工程目录结构;
    • 测试脚本;
    • 部分代码框架。

    待完成:

    • kernel 核心实现;
    • 目标环境编译;
    • NPU 真机验证。

    同时给出下一步建议。

    总结

    对于计算工程任务而言,真正困难的往往不是生成某一段代码。

    而是理解已有系统,拆解迁移路径,处理工程约束,持续推进任务。

    这也是 Kerminal 在计算场景中的价值所在。

    点击体验:Kerminal — AI 驱动的算子开发平台

    Logo

    Agent 垂直技术社区,欢迎活跃、内容共建。

    更多推荐