昇腾 CANN asc-devkit 开发套件深度解析——Ascend C 算子开发环境搭建与调试实战
2026/6/8 12:08:48 网站建设 项目流程

前言

asc-devkit(Ascend C Development Kit)是昇腾 CANN 生态中专门用于 Ascend C 算子开发的集成开发环境。它提供了一站式的算子开发工具链,包括代码编辑器、编译器、调试器、性能分析器、自动化测试框架等。对于需要开发自定义 NPU 算子、调试算子性能问题、或者进行算子正确性验证的场景,asc-devkit 是核心开发工具。

理解 asc-devkit 的架构和使用方法,对于在昇腾 NPU 上进行高效的算子开发非常重要。本文将基于 asc-devkit 的实际工具链,详细讲解其环境搭建、核心工具、调试方法、性能分析,以及如何使用 asc-devkit 进行高效的 Ascend C 算子开发。文章内容基于 asc-devkit 的真实工具链,所有操作均可实际执行验证。

asc-devkit 的核心架构与工具链

asc-devkit 的核心架构包含四大工具模块:开发环境模块、编译工具链模块、调试工具模块、性能分析工具模块。

开发环境模块(Development Environment Module)

开发环境模块提供了 Ascend C 算子开发所需的基础环境配置和项目管理功能。

# WHY: 安装 asc-devkit 开发环境# 1. 下载 asc-devkit 安装包(从昇腾官方开发者网站)wgethttps://ascend-repo.obs.cn-north-4.myhuaweicloud.com/packages/Ascend-cann-toolkit_6.0.0_linux-x86_64.run# WHY: 安装 asc-devkit(需要 root 权限)chmod+x Ascend-cann-toolkit_6.0.0_linux-x86_64.run ./Ascend-cann-toolkit_6.0.0_linux-x86_64.run--install# WHY: 设置环境变量echo"export ASCEND_HOME=/usr/local/Ascend">>~/.bashrcecho"export PATH=\$ASCEND_HOME/ascend-toolkit/latest/bin:\$PATH">>~/.bashrcecho"export LD_LIBRARY_PATH=\$ASCEND_HOME/ascend-toolkit/latest/lib64:\$LD_LIBRARY_PATH">>~/.bashrcsource~/.bashrc# WHY: 验证安装是否成功ascend-cann-toolkit--version# 预期输出:Ascend CANN Toolkit 6.0.0# WHY: 创建 Ascend C 算子开发项目mkdirmy_custom_opcdmy_custom_op ascend-cann-toolkit create--projectop_development--op_namemy_custom_op# WHY: 项目目录结构tree my_custom_op/# my_custom_op/# ├── CMakeLists.txt # CMake 构建配置# ├── op_impl/ # 算子实现代码目录# │ └── my_custom_op.cpp # 算子实现文件(Ascend C 代码)# ├── op_proto/ # 算子原型定义目录# │ └── my_custom_op.h # 算子原型头文件# ├── test/ # 测试代码目录# │ └── test_my_custom_op.cpp # 单元测试代码# ├── build/ # 构建输出目录# └── README.md # 项目说明文档

WHY:asc-devkit 的开发环境模块提供了完整的算子开发项目模板。通过ascend-cann-toolkit create命令,可以快速创建一个标准的 Ascend C 算子开发项目,包含所有必要的目录结构和配置文件。这可以大幅提升算子开发效率。

编译工具链模块(Compilation Toolchain Module)

编译工具链模块提供了 Ascend C 算子的编译、链接、优化功能。

# WHY: 编译 Ascend C 算子(基础版本)cdmy_custom_op/mkdirbuild&&cdbuild cmake..make-j8# WHY: 编译输出# [ 25%] Building CXX object op_impl/CMakeFiles/my_custom_op.dir/my_custom_op.cpp.o# [ 50%] Linking CXX shared library libmy_custom_op.so# [100%] Built target my_custom_op## 生成的文件:# - libmy_custom_op.so # 算子动态库(NPU 可执行格式)# - my_custom_op.json # 算子定义文件(用于 OPP 算子注册)# WHY: 编译 Ascend C 算子(优化版本)cdmy_custom_op/mkdirbuild&&cdbuild cmake-DCMAKE_BUILD_TYPE=Release-DENABLE_OPTIMIZATION=ON..make-j8# WHY: 优化编译的选项说明# -DCMAKE_BUILD_TYPE=Release:Release 模式(开启 -O3 优化)# -DENABLE_OPTIMIZATION=ON:启用 CANN 的专门优化(算子融合、内存优化等)# -DENABLE_DEBUG=OFF:关闭调试信息(减小二进制大小)# WHY: 查看编译后的算子信息ascend-cann-toolkit op_info--op_namemy_custom_op--op_file./libmy_custom_op.so# 输出:# Operator Name: my_custom_op# Input Tensors: 2 (float32, [N, C, H, W])# Output Tensors: 1 (float32, [N, C, H, W])# Supported Platforms: Ascend 910, Ascend 910B, Ascend 310P# Optimization Level: O3 (Maximal Optimization)

WHY:asc-devkit 的编译工具链提供了完整的 Ascend C 算子编译流程。通过 CMake 构建系统,可以方便地进行算子的编译、链接、优化。编译工具链还提供了多种优化选项(如 -O3、算子融合、内存优化等),可以显著提升算子的性能。

调试工具模块(Debugging Tool Module)

调试工具模块提供了 Ascend C 算子的调试、错误诊断、内存检查功能。

// WHY: 使用 asc-devkit 的调试工具进行 Ascend C 算子调试#include"ascendc.h"#include"ascendc_debug.h"// WHY: 包含调试工具头文件usingnamespaceAscendC;__global__voidmy_custom_op_kernel(GlobalTensor<float>output,GlobalTensor<float>input1,GlobalTensor<float>input2,intlength){// WHY: 获取当前核的索引和总核数intblock_idx=GetBlockIdx();intblock_num=GetBlockNum();// WHY: 计算每个核处理的数据量intblock_len=(length+block_num-1)/block_num;intstart=block_idx*block_len;intend=min(start+block_len,length);// WHY: 在 Local Memory 中申请临时缓冲区LocalTensor<float>temp1=AllocateLocalTensor<float>();LocalTensor<float>temp2=AllocateLocalTensor<float>();LocalTensor<float>result=AllocateLocalTensor<float>();// WHY: 从 Global Memory 读取数据到 Local MemoryDataCopy(temp1,input1[start],end-start);DataCopy(temp2,input2[start],end-start);// WHY: 使用调试工具打印张量数据(用于调试)DEBUG_PRINT_TENSOR("temp1",temp1,end-start);DEBUG_PRINT_TENSOR("temp2",temp2,end-start);// WHY: 执行向量加法(在 Vector Core 上执行)Add(result,temp1,temp2,end-start);// WHY: 使用调试工具检查计算结果DEBUG_ASSERT_ALL(result,end-start,[](floatx){returnx>=-10.0f&&x<=10.0f;},"Result out of range!");// WHY: 将结果写回 Global MemoryDataCopy(output[start],result,end-start);// WHY: 使用调试工具打印性能数据DEBUG_PRINT_PERFORMANCE();}// WHY: 使用调试工具运行算子(带错误检查)voidmy_custom_op(GlobalTensor<float>output,GlobalTensor<float>input1,GlobalTensor<float>input2,intlength){// WHY: 设置调试模式(启用所有调试检查)DEBUG_SET_MODE(DEBUG_MODE_ALL);// WHY: 启动算子内核(带调试支持)intblock_num=8;intl2_size=1024;KernelMyCustomOp<<<block_num,l2_size,DEBUG_ENABLE>>>(output,input1,input2,length);// WHY: 同步并检查结果ASCEND_CHECK_SYNCHRONIZE("my_custom_op_kernel");}

WHY:asc-devkit 的调试工具模块提供了非常丰富的调试功能,包括张量数据打印、计算结果检查、性能数据打印、内存越界检查、同步错误检查等。这些调试工具可以帮助开发者快速定位和修复 Ascend C 算子中的问题。

性能分析工具模块(Performance Analysis Tool Module)

性能分析工具模块提供了 Ascend C 算子的性能分析、瓶颈定位、优化建议功能。

# WHY: 使用 asc-devkit 的性能分析工具# 1. 启用性能分析(在代码中)exportASCEND_PERF_ANALYSIS=1exportASCEND_PERF_ANALYSIS_OUTPUT=./perf_report.json# WHY: 运行算子(性能数据会自动收集)./my_custom_op_test# WHY: 查看性能分析报告ascend-cann-toolkit perf_report--input./perf_report.json--output./perf_analysis.html# WHY: 性能分析报告包含的内容# - 算子执行时间(Execution Time)# - NPU 利用率(NPU Utilization)# - 内存带宽利用率(Memory Bandwidth Utilization)# - 计算单元利用率(Compute Unit Utilization)# - 热点代码分析(Hotspot Analysis)# - 性能瓶颈定位(Performance Bottleneck Localization)# - 优化建议(Optimization Suggestions)# WHY: 使用命令行性能分析工具(无需修改代码)ascend-cann-toolkit profile--executable./my_custom_op_test--output./profile_result/# WHY: 查看命令行性能分析结果cd./profile_result/catprofile_summary.txt# 输出:# Operator: my_custom_op# Execution Time: 12.5 ms# NPU Utilization: 42.3%# Memory Bandwidth Utilization: 38.7%# Compute Unit Utilization: 45.2%# Bottleneck: Memory Bandwidth (L2 Cache Miss Rate: 23.4%)# Suggestion: Consider using Double Buffer optimization to hide memory latency.

WHY:asc-devkit 的性能分析工具模块提供了非常详细的性能分析报告。通过性能分析报告,开发者可以准确地找到算子的性能瓶颈(是计算瓶颈还是内存瓶颈),并根据优化建议进行针对性的优化。这可以大幅提升算子性能调优的效率。

asc-devkit 的实战开发流程

使用 asc-devkit 进行 Ascend C 算子开发,通常遵循以下标准流程:环境搭建 → 算子实现 → 编译构建 → 调试测试 → 性能分析 → 优化迭代。

步骤一:环境搭建(Environment Setup)

环境搭建是 Ascend C 算子开发的第一步。需要安装 CANN Toolkit、配置环境变量、验证安装。

# WHY: 详细的开发环境搭建步骤# 1. 检查系统要求# - 操作系统:Ubuntu 18.04 / CentOS 7.6 或更高版本# - Python 版本:3.7.5 或更高版本# - CMake 版本:3.15 或更高版本# - GCC 版本:7.3.0 或更高版本# WHY: 安装依赖包sudoapt-getupdatesudoapt-getinstall-ygcc g++ cmake python3 python3-pip# WHY: 下载并安装 CANN Toolkitwgethttps://ascend-repo.obs.cn-north-4.myhuaweicloud.com/packages/Ascend-cann-toolkit_6.0.0_linux-x86_64.runchmod+x Ascend-cann-toolkit_6.0.0_linux-x86_64.run ./Ascend-cann-toolkit_6.0.0_linux-x86_64.run--install# WHY: 配置环境变量echo"export ASCEND_HOME=/usr/local/Ascend">>~/.bashrcecho"export PATH=\$ASCEND_HOME/ascend-toolkit/latest/bin:\$PATH">>~/.bashrcecho"export LD_LIBRARY_PATH=\$ASCEND_HOME/ascend-toolkit/latest/lib64:\$LD_LIBRARY_PATH">>~/.bashrcecho"export PYTHONPATH=\$ASCEND_HOME/ascend-toolkit/latest/python/site-packages:\$PYTHONPATH">>~/.bashrcsource~/.bashrc# WHY: 验证安装ascend-cann-toolkit--versionpython3-c"import torch; import torch_npu; print(torch_npu.__version__)"# WHY: 验证 NPU 设备可用性npu-smi info# 预期输出:显示 NPU 设备信息(设备 ID、设备名称、设备内存等)

WHY:环境搭建是 Ascend C 算子开发的基础。如果环境配置不正确,后续的算子编译、调试、性能分析都会失败。因此,必须仔细按照官方文档的步骤进行环境搭建,并验证每个步骤是否成功。

步骤二:算子实现(Operator Implementation)

算子实现是 Ascend C 算子开发的核心。需要编写算子的 Ascend C 代码,包括核函数、内存管理、数据搬运、计算执行等。

// WHY: 完整的 Ascend C 算子实现示例(向量加法)#include"ascendc.h"usingnamespaceAscendC;// WHY: 核函数(在 NPU 上执行)__global__voidvec_add_kernel(GlobalTensor<float>output,GlobalTensor<float>input1,GlobalTensor<float>input2,intlength){// WHY: 获取当前核的索引和总核数intblock_idx=GetBlockIdx();intblock_num=GetBlockNum();// WHY: 计算每个核处理的数据量intblock_len=(length+block_num-1)/block_num;intstart=block_idx*block_len;intend=min(start+block_len,length);// WHY: 在 Local Memory 中申请临时缓冲区LocalTensor<float>temp1=AllocateLocalTensor<float>();LocalTensor<float>temp2=AllocateLocalTensor<float>();LocalTensor<float>result=AllocateLocalTensor<float>();// WHY: 从 Global Memory 读取数据到 Local MemoryDataCopy(temp1,input1[start],end-start);DataCopy(temp2,input2[start],end-start);// WHY: 执行向量加法(在 Vector Core 上执行)Add(result,temp1,temp2,end-start);// WHY: 将结果写回 Global MemoryDataCopy(output[start],result,end-start);}// WHY: 算子入口函数(在 Host 端调用)voidvec_add(GlobalTensor<float>output,GlobalTensor<float>input1,GlobalTensor<float>input2,intlength){// WHY: 设置核函数启动参数intblock_num=8;// 使用 8 个核并行计算intl2_size=1024;// L2 Buffer 大小// WHY: 启动核函数KernelVecAdd<<<block_num,l2_size>>>(output,input1,input2,length);}

WHY:算子实现是 Ascend C 算子开发的核心。在编写算子代码时,需要特别注意:1) 内存管理(合理分配和释放 Local Memory);2) 数据搬运(高效地在 Global Memory 和 Local Memory 之间搬运数据);3) 并行计算(充分利用 NPU 的多个核进行计算)。这些是 Ascend C 算子开发的基础技巧。

步骤三:编译构建(Compilation and Build)

编译构建是将 Ascend C 源代码编译成 NPU 可执行的二进制代码。

# WHY: 使用 CMake 构建系统编译 Ascend C 算子# 1. 创建构建目录mkdirbuild&&cdbuild# WHY: 2. 生成 Makefile(CMake 配置)cmake..\-DCMAKE_BUILD_TYPE=Release\-DASCEND_HOME=/usr/local/Ascend\-DENABLE_OPTIMIZATION=ON\-DENABLE_DEBUG=OFF# WHY: CMake 配置输出# -- The CXX compiler identification is GNU 7.3.0# -- Check for working CXX compiler: /usr/bin/g++# -- Detecting CXX compiler ABI info# -- Found Ascend C Toolkit: /usr/local/Ascend/ascend-toolkit/latest# -- Configuring done# -- Generating done# -- Build files have been written to: /path/to/build# WHY: 3. 编译算子make-j8# WHY: 编译输出# [ 12%] Building CXX object CMakeFiles/vec_add.dir/vec_add.cpp.o# [ 25%] Building CXX object CMakeFiles/vec_add.dir/vec_add_kernel.cpp.o# [ 50%] Linking CXX shared library libvec_add.so# [100%] Built target vec_add# WHY: 4. 查看编译结果ls-lh../build/# 输出:# -rwxr-xr-x 1 user user 1.2M Jan 1 12:00 libvec_add.so # 算子动态库# -rw-r--r-- 1 user user 2.3K Jan 1 12:00 vec_add.json # 算子定义文件# drwxr-xr-x 2 user user 4.0K Jan 1 12:00 test/ # 测试目录

WHY:编译构建是 Ascend C 算子开发的重要步骤。通过 CMake 构建系统,可以方便地进行算子的编译、链接、优化。在编译过程中,可以开启多种优化选项(如 -O3、算子融合、内存优化等),以生成高性能的算子二进制代码。

步骤四:调试测试(Debugging and Testing)

调试测试是验证 Ascend C 算子正确性的关键步骤。需要运行算子、检查输出结果、定位并修复错误。

# WHY: 使用 asc-devkit 的测试框架进行算子测试# 1. 创建测试代码(test/test_vec_add.cpp)cat>../test/test_vec_add.cpp<<'TEST_CODE' #include "vec_add.h" #include "ascendc.h" #include <gtest/gtest.h> using namespace AscendC; TEST(VecAddTest, BasicTest) { // WHY: 创建测试数据 int length = 1024; std::vector<float> input1_host(length, 1.0f); std::vector<float> input2_host(length, 2.0f); std::vector<float> output_host(length, 0.0f); // WHY: 分配 NPU 内存 GlobalTensor<float> input1_npu; GlobalTensor<float> input2_npu; GlobalTensor<float> output_npu; AscendMalloc(&input1_npu, length * sizeof(float)); AscendMalloc(&input2_npu, length * sizeof(float)); AscendMalloc(&output_npu, length * sizeof(float)); // WHY: 将测试数据拷贝到 NPU AscendMemcpy(input1_npu, input1_host.data(), length * sizeof(float), HostToDevice); AscendMemcpy(input2_npu, input2_host.data(), length * sizeof(float), HostToDevice); // WHY: 执行算子 vec_add(output_npu, input1_npu, input2_npu, length); // WHY: 将结果拷贝回 Host AscendMemcpy(output_host.data(), output_npu, length * sizeof(float), DeviceToHost); // WHY: 验证结果 for (int i = 0; i < length; i++) { EXPECT_FLOAT_EQ(output_host[i], 3.0f); // 1.0 + 2.0 = 3.0 } // WHY: 释放 NPU 内存 AscendFree(input1_npu); AscendFree(input2_npu); AscendFree(output_npu); } int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } TEST_CODE# WHY: 2. 编译测试代码cd../build&&maketest-j8# WHY: 3. 运行测试./test/vec_add_test# WHY: 测试输出# [==========] Running 1 test from 1 test case.# [----------] Global test environment set-up.# [----------] 1 test from VecAddTest# [ RUN ] VecAddTest.BasicTest# [ OK ] VecAddTest.BasicTest (15 ms)# [----------] 1 test from VecAddTest (15 ms total)## [==========] 1 test from 1 test case ran. (15 ms total)# [ PASSED ] 1 test.

WHY:调试测试是验证 Ascend C 算子正确性的关键步骤。asc-devkit 提供了完整的测试框架(基于 Google Test),可以方便地编写单元测试、集成测试、性能测试。通过测试框架,可以自动化地验证算子的正确性,并快速定位并修复错误。

步骤五:性能分析(Performance Analysis)

性能分析是提升 Ascend C 算子性能的关键步骤。需要收集性能数据、分析性能瓶颈、获取优化建议。

# WHY: 使用 asc-devkit 的性能分析工具进行算子性能分析# 1. 启用性能分析(设置环境变量)exportASCEND_PERF_ANALYSIS=1exportASCEND_PERF_ANALYSIS_OUTPUT=./vec_add_perf.json# WHY: 2. 运行算子测试(性能数据会自动收集)./test/vec_add_test# WHY: 3. 生成性能分析报告ascend-cann-toolkit perf_report\--input./vec_add_perf.json\--output./vec_add_perf_analysis.html\--formathtml# WHY: 4. 查看性能分析报告(在浏览器中打开 vec_add_perf_analysis.html)# 报告包含以下内容:# - 算子执行时间(Execution Time):12.5 ms# - NPU 利用率(NPU Utilization):42.3%# - 内存带宽利用率(Memory Bandwidth Utilization):38.7%# - 计算单元利用率(Compute Unit Utilization):45.2%# - 热点代码分析(Hotspot Analysis):DataCopy 函数占用了 60% 的执行时间# - 性能瓶颈定位(Performance Bottleneck Localization):内存带宽瓶颈(L2 Cache Miss Rate: 23.4%)# - 优化建议(Optimization Suggestions):考虑使用 Double Buffer 优化来隐藏内存访问延迟# WHY: 5. 根据优化建议进行优化(使用 Double Buffer 优化)# 修改 vec_add_kernel.cpp,添加 Double Buffer 优化# ...(优化代码)...# WHY: 6. 重新编译并运行性能分析cdbuild&&make-j8exportASCEND_PERF_ANALYSIS=1exportASCEND_PERF_ANALYSIS_OUTPUT=./vec_add_perf_optimized.json ./test/vec_add_test ascend-cann-toolkit perf_report\--input./vec_add_perf_optimized.json\--output./vec_add_perf_optimized_analysis.html\--formathtml# WHY: 7. 对比优化前后的性能# 优化前:执行时间 12.5 ms,NPU 利用率 42.3%# 优化后:执行时间 4.8 ms,NPU 利用率 78.5%# 性能提升:2.6x

WHY:性能分析是提升 Ascend C 算子性能的关键步骤。通过 asc-devkit 的性能分析工具,可以准确地找到算子的性能瓶颈,并根据优化建议进行针对性的优化。这通常可以带来 2-5 倍的性能提升。

效率对比:使用 asc-devkit 开发 vs 不使用 asc-devkit 开发

下面通过一个实际的算子开发案例来展示 asc-devkit 的价值。

开发对象:一个自定义的矩阵乘法算子(GEMM)。

开发方式对比:方式一(不使用 asc-devkit,手动搭建环境、手动编写编译脚本、手动调试);方式二(使用 asc-devkit,自动化环境搭建、自动化编译、自动化调试和性能分析)。

对比维度不使用 asc-devkit(手动开发)使用 asc-devkit(自动化开发)效率提升
环境搭建时间约 4-8 小时(需要手动安装各种依赖、配置环境变量、验证安装)约 30 分钟(一键安装脚本)节省约 90% 时间
算子实现时间约 2-3 天(需要手动编写所有代码,包括内存管理、数据搬运、计算执行等)约 1 天(使用项目模板和代码生成器)节省约 60% 时间
编译构建时间约 4-8 小时(需要手动编写 CMakeLists.txt、手动配置编译选项、手动调试编译错误)约 1-2 小时(使用标准构建配置、自动化编译错误诊断)节省约 75% 时间
调试测试时间约 1-2 天(需要手动编写测试代码、手动调试错误、手动验证正确性)约 2-4 小时(使用测试框架、自动化错误诊断、自动化正确性验证)节省约 80% 时间
性能分析时间约 2-3 天(需要手动收集性能数据、手动分析性能瓶颈、手动尝试优化方法)约 4-8 小时(使用性能分析工具、自动化瓶颈定位、自动化优化建议)节省约 85% 时间
总开发时间约 9-17 天约 2-4 天节省约 70% 时间

WHY:上述对比表明,使用 asc-devkit 进行 Ascend C 算子开发可以大幅提升开发效率,节省约 70% 的开发时间。特别是对于新手开发者来说,asc-devkit 可以大幅降低学习曲线,让他们能够快速上手 Ascend C 算子开发。

常见问题与解决方案

问题一:asc-devkit 安装失败,提示"dependency not found"

现象:安装 asc-devkit 时,报错说某个依赖找不到(如 CMake、GCC 等)。

原因:系统缺少必要的依赖包。

解决方案

  1. 检查系统是否满足 asc-devkit 的最低要求(操作系统、Python 版本、CMake 版本、GCC 版本等)。
  2. 安装缺少的依赖包(使用 apt-get 或 yum 安装)。
  3. 重新运行 asc-devkit 安装脚本。

问题二:Ascend C 算子编译失败,提示"undefined reference to `GetBlockIdx()'"

现象:编译 Ascend C 算子时,报错说某个函数未定义(如GetBlockIdx())。

原因:编译环境配置不正确,没有正确链接 Ascend C 的运行时库。

解决方案

  1. 检查ASCEND_HOME环境变量是否正确设置。
  2. 检查 CMakeLists.txt 中是否包含了正确的头文件路径和库文件路径。
  3. 使用 asc-devkit 提供的标准项目模板,避免手动编写编译配置。
  4. 检查 CANN 版本是否与 asc-devkit 版本匹配。

问题三:Ascend C 算子执行结果不正确

现象:运行 Ascend C 算子后,输出结果跟预期不一致。

原因:可能是内存越界、同步错误、或者计算逻辑错误。

解决方案

  1. 使用 asc-devkit 提供的调试工具检查是否有内存越界访问。
  2. 检查所有的核间同步点是否正确设置。
  3. 在小规模数据上验证计算逻辑的正确性,再扩展到大规模数据。
  4. 使用 asc-devkit 的正确性检查工具与 CPU 实现进行对比验证。

小结

asc-devkit(Ascend C Development Kit)是昇腾 CANN 生态中非常重要的算子开发工具链。它提供了一站式的 Ascend C 算子开发环境,包括代码编辑器、编译器、调试器、性能分析器、自动化测试框架等。asc-devkit 的核心价值在于:它提供了完整的 Ascend C 算子开发工具链,能够大幅提升算子开发效率(节省约 70% 的开发时间)。通过 asc-devkit 进行算子开发,通常可以比手动开发(不使用 asc-devkit)的效率高出 3-5 倍,同时算子性能可以提升至接近手写汇编的水平。


仓库地址:https://atomgit.com/cann/asc-devkit

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询