一句话让Agent变成昇腾专家,不必再找人问了。评测入口:
(To Agent)请按这个开源仓接入昇腾图谱 https://gitcode.com/agent0/kg-tools

Kernel 直调是全站最高频的 skill 导向需求(邀测期 556 次)。Ascend C 异构混合编程把 Device 侧 Kernel 与 Host 侧 C++ 写进同一个文件,<<<>>> 内核调用符直接调核函数,一行命令即可编译。

最小模板(Add 算子):

#include "acl/acl.h"
#include "kernel_operator.h"

__global__ __aicore__ void add_custom(GM_ADDR x, GM_ADDR y, GM_ADDR z,
    AddCustomTilingData tiling) {
    KERNEL_TASK_TYPE_DEFAULT(KERNEL_TYPE_AIV_ONLY);
    KernelAdd op;
    op.Init(x, y, z, tiling.totalLength, tiling.tileNum);
    op.Process();
}

Host 侧调用:add_custom<<<blockDim, nullptr, stream>>>(xDev, yDev, zDev, tiling);,也可用 ACLRT_LAUNCH_KERNEL(add_custom)(numBlocks, stream, args...)

Host main 流程:aclInit → aclrtSetDevice → aclrtCreateStream → aclrtMalloc(Host/Device 各一份)→ aclrtMemcpy H2D → 启动 → aclrtSynchronizeStream → aclrtMemcpy D2H → 写文件 → aclrtFree/aclrtDestroyStream/aclrtResetDevice/aclFinalize。

编译:命令行 bisheng add_custom.asc --npu-arch=dav-2201 -o demo(.cpp 加 -xasc);或 CMake 链接 tiling_api register platform m,编译选项配 --npu-arch。CMake 版本要求 3.16+,环境变量 source set_env.sh 并把 compiler/tikcpp/ascendc_kernel_cmake 加入 CMAKE_PREFIX_PATH

排查:编译找不到 kernel_operator.h,多为用了 .cpp 却没加 -xasc 或 CMake 没设 LANGUAGE ASC;运行结果错先核对 tiling 参数,kernel 内可用 AscendC::printf 打印。


昇腾知识图谱如何检索示例

  • 检索主题: 昇腾 AscendC 核函数直调工程模板:CMake + aclrtLaunch 单文件 main 完整示例
  • 检索关键词: [“ascendc 直调 核函数 模板”, “ascendc-direct-invoke-template”, “Kernel直调 CMake main”]
  • 内容节点: [“cannlearninghub_blogs_operator_kerneldirectcallprogramming_算子kernel直调编程_cmake代码”, “ascdevkit_docs_zh_guide_programmingguide_appendix_kerneldirectcallfromsample_cd_cmake_3_16_0”, “cannbotskills_pluginsofficial_opsdirectinvoke_agents_ascendckerneldeveloper_ascendcdirectinvoketemplate”]
  • 召回情况: 3 组重放 query top10 全相关(官方编程指南 + 官方博客 + CANNBot skill),最高 score 0.9819
Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐