news 2026/5/9 20:27:45

CANN/runtime Kernel加载与执行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/runtime Kernel加载与执行

Kernel加载与执行

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

Kernel函数可以采用<<<>>>方式进行任务下发,具有代码简洁,可读性好的优点。

以下是关键步骤的代码示例,不可以直接拷贝编译运行,仅供参考。

// Device code Template<> extern "C" __global__ __aicore__ void add_custom(GM_ADDR x, GM_ADDR y, GM_ADDR z) { KernelAdd op; op.Init(x, y, z); op.Process(); } int main() { int N = ...; size_t size = N * sizeof(uint64); // Initialize aclrtSetDevice(0); // Create stream aclrtStream stream; aclrtCreateStream(&stream); // Allocate vectors in host memory void *h_x, *h_y, *h_z; aclrtMallocHost(&h_x, size); aclrtMallocHost(&h_y, size); aclrtMallocHost(&h_z, size); // Initialize input vectors ... // Allocate vectors in device memory void *d_x, *d_y, *d_z; aclrtMalloc(&d_x, size, ACL_MEM_MALLOC_HUGE_FIRST); aclrtMalloc(&d_y, size, ACL_MEM_MALLOC_HUGE_FIRST); aclrtMalloc(&d_z, size, ACL_MEM_MALLOC_HUGE_FIRST); // Copy vectors from host memory to device memory aclrtMemcpy(d_x, size, h_x, size, ACL_MEMCPY_HOST_TO_DEVICE); aclrtMemcpy(d_y, size, h_y, size, ACL_MEMCPY_HOST_TO_DEVICE); // Invoke kernel uint32_t numBlocks = 48; add_custom<<<numBlocks, nullptr, stream>>>(d_x, d_y, d_z); ... }

用户也可以使用Runtime提供的LaunchKernel接口(例如aclrtLaunchKernelWithHostArgs接口)进行kernel函数的下发。使用这种方式需先了解Binary和Function的概念:

  • Binary:是一个动态加载的代码容器单元,里面包含编译后的kernel代码、全局变量等。用户可以通过aclrtBinaryLoadFromFile或aclrtBinaryLoadFromData将编译好的算子二进制加载到NPU上,并获得对应的Binary句柄。
  • Function:是一个具体可执行的kernel函数,它定义在Binary内部,是主机代码可以调用并在NPU上执行的入口点。用户可以通过aclrtBinaryGetFunction获取kernel函数对应的Function句柄。

以下是使用LaunchKernel接口的关键代码示例,不可以直接拷贝编译运行,仅供参考。

// Device code extern "C" __global__ __aicore__ void add_custom(GM_ADDR x, GM_ADDR y, GM_ADDR z) { KernelAdd op; op.Init(x, y, z); op.Process(); } int main() { int N = ...; size_t size = N * sizeof(uint64); // Initialize aclrtSetDevice(0); // Create stream aclrtStream stream; aclrtCreateStream(&stream); // Create binary from binary file aclrtBinHandle bin; aclrtBinaryLoadFromFile("add_custom.o", nullptr, &bin); // Get function handle from binary aclrtFuncHandle add_custom; aclrtBinaryGetFunction(bin, "add_custom", &add_custom); // Allocate vectors in host memory void *h_x, *h_y, *h_z; aclrtMallocHost(&h_x, size); aclrtMallocHost(&h_y, size); aclrtMallocHost(&h_z, size); // Initialize input vectors ... // Allocate vectors in device memory void *d_x, *d_y, *d_z; aclrtMalloc(&d_x, size, ACL_MEM_MALLOC_HUGE_FIRST); aclrtMalloc(&d_y, size, ACL_MEM_MALLOC_HUGE_FIRST); aclrtMalloc(&d_z, size, ACL_MEM_MALLOC_HUGE_FIRST); // Copy vectors from host memory to device memory aclrtMemcpy(d_x, size, h_x, size, ACL_MEMCPY_HOST_TO_DEVICE); aclrtMemcpy(d_y, size, h_y, size, ACL_MEMCPY_HOST_TO_DEVICE); // Invoke kernel uint32_t numBlocks = 48; void* args[] = {d_x, d_y, d_z}; size_t argsSize = 3 * sizeof(void*); aclrtLaunchKernelWithHostArgs(add_custom, numBlocks, stream, nullptr, args, argsSize, nullptr, 0); ... }

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 20:27:44

CANN双三次上采样反向传播算子

aclnnUpsampleBicubic2dAAGrad 【免费下载链接】ops-cv 本项目是CANN提供的图像处理、目标检测相关的算子库&#xff0c;实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-cv &#x1f4c4; 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend…

作者头像 李华
网站建设 2026/5/9 20:24:33

2026届必备的降AI率神器解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于学术写作以及内容创作范畴之内&#xff0c;原创性具备相当关键的意义。降重网站作为一种起…

作者头像 李华
网站建设 2026/5/9 20:19:15

Execwall:为AI智能体构建基于Seccomp与命名空间的执行防火墙

1. 项目概述&#xff1a;为AI智能体构建坚不可摧的执行防火墙在AI智能体&#xff08;Agent&#xff09;技术飞速发展的今天&#xff0c;我们正面临一个核心矛盾&#xff1a;一方面&#xff0c;我们希望AI能像人类助手一样&#xff0c;自由地执行代码、操作文件、调用系统命令来…

作者头像 李华
网站建设 2026/5/9 20:16:30

构建AI编程助手操作系统:Codecast实现会话记忆与团队协作

1. 项目概述&#xff1a;为AI编程助手构建一个操作系统如果你和我一样&#xff0c;日常开发中已经离不开Claude Code、Cursor这类AI编程助手&#xff0c;那你肯定也遇到过类似的困扰&#xff1a;上午和Claude讨论了一个复杂的认证方案&#xff0c;下午在Cursor里想接着干&#…

作者头像 李华