CANN/asc-devkit:ICPU_RUN_KF CPU调试接口
ICPU_RUN_KF【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品支持Atlas 推理系列产品AI Core支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品支持Kirin X90支持Kirin 9030支持功能说明头文件路径为tools/cpudebug/include/kern_fwk.h。进行核函数的CPU侧运行验证时CPU调测总入口完成CPU侧的算子程序调用。函数原型#define ICPU_RUN_KF(func, numBlocks, ...)参数说明表1模板参数说明参数名称输入/输出描述func输入算子的kernel函数指针。numBlocks输入算子的核心数corenum。...输入所有的入参和出参依次填入当前参数个数限制为32个超出32时会出现编译错误。返回值说明无约束说明为了保留接口兼容推荐编译使用。除了func、blkdim以外其他的变量都必须是通过GmAlloc分配的共享内存的指针传入的参数的数量和顺序都必须和kernel保持一致。调用示例下面代码以add_custom算子为例介绍算子核函数在CPU侧验证时算子调用的应用程序如何编写。您在实现自己的应用程序时需要关注由于算子核函数不同带来的修改包括算子核函数名入参出参的不同等合理安排相应的内存分配、内存拷贝和文件读写等相关API的调用方式直接复用即可。按需包含头文件通过ASCENDC_CPU_DEBUG宏区分CPU和NPU侧需要包含的头文件。#include data_utils.h #ifndef ASCENDC_CPU_DEBUG #include acl/acl.h #else #include tikicpulib.h extern C __global__ __aicore__ void add_custom(GM_ADDR x, GM_ADDR y, GM_ADDR z); // 核函数声明。 #endifCPU侧运行验证。完成算子核函数CPU侧运行验证的步骤如下图1CPU侧运行验证步骤int32_t main(int32_t argc, char* argv[]) { uint32_t numBlocks 8; size_t inputByteSize 8 * 2048 * sizeof(uint16_t); size_t outputByteSize 8 * 2048 * sizeof(uint16_t); // 使用GmAlloc分配共享内存并进行数据初始化。 uint8_t* x (uint8_t*)AscendC::GmAlloc(inputByteSize); uint8_t* y (uint8_t*)AscendC::GmAlloc(inputByteSize); uint8_t* z (uint8_t*)AscendC::GmAlloc(outputByteSize); ReadFile(./input/input_x.bin, inputByteSize, x, inputByteSize); ReadFile(./input/input_y.bin, inputByteSize, y, inputByteSize); // 矢量算子需要设置内核模式为AIV模式。 AscendC::SetKernelMode(KernelMode::AIV_MODE); // 调用ICPU_RUN_KF调测宏完成核函数CPU侧的调用。 ICPU_RUN_KF(add_custom, numBlocks, x, y, z); // 输出数据写出。 WriteFile(./output/output_z.bin, z, outputByteSize); // 调用GmFree释放申请的资源。 AscendC::GmFree((void *)x); AscendC::GmFree((void *)y); AscendC::GmFree((void *)z); return 0; }【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考