已合并
[doc]:解决近期众测的问题 #102
孟广欣创建于 7月3日
[doc]:解决近期众测的问题 #102
已合并
孟广欣创建于 7月3日
3 个文件变更+62-69
Mdocs/zh/quick_start/installation_guide.md+40-54
@@ -3,57 +3,49 @@
3<br>3<br>
4 4 
5> [!CAUTION]注意5> [!CAUTION]注意
6-> 本文档及相关脚本仅用于学习目的,不保证在生产环境中的稳定性与安全性。使用者自行评估相关风险并承担全部责任。6+> 本文档及相关脚本仅学习用途,不保证在生产环境中的稳定性与安全性。使用者自行评估相关风险并承担全部责任。
7 7 
8## 前置条件8## 前置条件
9 9 
10开始安装前,请确保服务器满足以下要求:10开始安装前,请确保服务器满足以下要求:
11 11 
12-| 项目 | 要求 | 验证方法 |12+| 项目 | 要求 | 验证方法 |
13-|------|------|----------|13+|------|-------------------------------------------------|--------------------------------------|
14-| 操作系统 | Linux | `uname -s` 显示 `Linux` |14+| 操作系统 | Linux | `uname -s` 输出为 `Linux` |
15-| NPU 卡 | 至少 1 张(基于昇腾 910B310P 芯片,**推荐使用 910B**),驱动固件安装 | `npu-smi info` 正常显示信息 |15+| NPU 卡 | 至少 1 张(基于昇腾 910B/310P/A3 芯片,**推荐使用 910B**),驱动固件已正确安装 | `npu-smi info` 正常显示设备信息 |
16-| Docker 服务 | 已安装并启动 | `docker ps` 正常执行(无报错即表示服务已启动) |16+| Docker 服务 | 已安装并处于运行状态 | `docker ps` 正常执行(无报错即表示服务已启动) |
17-| 其他软件 | Python 3、curl、git | 分别执行 `python3 --version`、`curl --version`、`git --version`,均有版本输出即可 |17+| 其他软件 | Python 3、curl | 分别执行 `python3 -V`、`curl -V` 均有有效版本输出 |
18+ 
19+> 👉 确认前置条件满足后,若环境具备互联网访问能力,后续命令可全程直接 **复制粘贴(Copy/Paste)** 执行,无需手动输入或拼接,以避免因输入错误导致命令执行失败。
18 20 
19## 1. 安装算子开发工具链(CANN 容器)21## 1. 安装算子开发工具链(CANN 容器)
20 22 
21> [!NOTE]说明 23> [!NOTE]说明
22> 24>
23-> - 昇腾 AI 算子开发工具链随 CANN 统一发布,安装 CANN 即完成工具链安装25+> - 昇腾 AI 算子开发工具链随 CANN 统一发布,安装 CANN 即完成工具链部署
24> - 鉴于算子编译环境依赖复杂,本教程**仅支持** CANN 容器化部署方式,不适用于裸机或虚拟机等非容器环境。26> - 鉴于算子编译环境依赖复杂,本教程**仅支持** CANN 容器化部署方式,不适用于裸机或虚拟机等非容器环境。
25-> - 本节(1.1~1.2)所有命令均在**宿主机**执行;进入容器后的操作从第 2 节开始。
26 27 
27### 1.1 获取 CANN 官方容器镜像28### 1.1 获取 CANN 官方容器镜像
28 29 
29#### 1.1.1 设置镜像变量30#### 1.1.1 设置镜像变量
30 31 
31-根据所用芯片执行对应命令(本学习环境仅支持昇腾 910B 与 310P 系列)32+执行以下命令,根据当前 NPU 芯片型号自动配置镜像信息环境变量
32 33 
33```bash34```bash
34-# 昇腾 910B 系列芯片35+source /dev/stdin <<< "$(chip=$(npu-smi info -m 2>/dev/null | grep -oP 'Ascend\s*\S+' | head -1); case "$chip" in 'Ascend 910B'* ) echo "export MY_STUDY_VAR_CANN_IMAGE=swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-910b-openeuler24.03-py3.11-devel; echo '[PASS] Successfully identified chip [$chip] and completed environment configuration.'";; 'Ascend910'* ) echo "export MY_STUDY_VAR_CANN_IMAGE=swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-a3-openeuler24.03-py3.11-devel; echo '[PASS] Successfully identified chip [$chip] and completed environment configuration.'";; 'Ascend 310P'* ) echo "export MY_STUDY_VAR_CANN_IMAGE=swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-310p-openeuler24.03-py3.11-devel; echo '[PASS] Successfully identified chip [$chip] and completed environment configuration.'";; * ) echo "echo >&2; echo -e '\033[31m[FAIL] Get chip: $chip. Learning is not supported in the current environment.\033[0m' >&2";; esac)"
35-export MY_STUDY_VAR_CANN_IMAGE=swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-910b-openeuler24.03-py3.11-devel36+[ -n "$MY_STUDY_VAR_CANN_IMAGE" ] && echo -e "\n\e[32m[PASS] Auto-selected image for detected chip:\n $MY_STUDY_VAR_CANN_IMAGE\e[0m"
36- 
37-# 昇腾 310P 系列芯片
38-export MY_STUDY_VAR_CANN_IMAGE=swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-310p-openeuler24.03-py3.11-devel
39```37```
40 38 
41> [!NOTE]说明39> [!NOTE]说明
42> 40>
43-> **如何确定应使用哪个镜像?** 41+> **命令原理说明**
44-> 通过执行 `npu-smi info` 命令判断。例如,在以下输出中,若 Name 列(芯片名称)包含 “910B” 字样则选择 910B 镜像;若包含 “310P”则选择 310P 镜像:42+> 通过 `npu-smi info` 获取 NPU 芯片型号依据硬件信息自动匹配对应的镜像,并将结果赋值给环境变量 `MY_STUDY_VAR_CANN_IMAGE`,供后续容器启动等操作使用。
45-> 43+> 所用镜像均源自华为云镜像仓库中 CANN 发布的官方镜像,如需了解镜像的详细信息,请访问 [CANN 官方镜像仓库](https://www.hiascend.com/developer/ascendhub/detail/17da20d1c2b6493cb38765adeba85884)。
46-> ```text44+ 
47->+------------------------------------------------------------------------------------------------+45+若命令执行后输出 `[PASS]`,则表示执行成功;若输出为 `[FAIL]`,可能原因如下:
48->| npu-smi 25.5.0 Version: 25.5.0 |46+ 
49->+---------------------------+---------------+----------------------------------------------------+47+1. NPU 环境异常导致 `npu-smi info` 命令执行失败,请联系环境管理员修复底层环境问题;
50->| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page)|48+2. 当前硬件不在本教程支持范围内,本学习环境仅支持昇腾 910B、310P 及 A3 系列芯片,请切换至兼容的硬件环境后重试。
51->| Chip | Bus-Id | AICore(%) Memory-Usage(MB) HBM-Usage(MB) |
52->+===========================+===============+====================================================+
53->| 0 910B4 | OK | 94.0 39 0 / 0 |
54->| 0 | 0000:C1:00.0 | 0 0 / 0 2880 / 32768 |
55->+===========================+===============+====================================================+
56-> ```
57 49 
58#### 1.1.2 拉取镜像50#### 1.1.2 拉取镜像
59 51 
@@ -61,7 +53,7 @@ export MY_STUDY_VAR_CANN_IMAGE=swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9
61docker pull ${MY_STUDY_VAR_CANN_IMAGE}53docker pull ${MY_STUDY_VAR_CANN_IMAGE}
62```54```
63 55 
64-若因处于企业内网导致拉取失败,请参考 [5.1 节](#51-docker-镜像获取) 的解决方案。56+若因处于企业内网导致拉取失败,请参考 [5.1 节](#51-docker-镜像在隔离内网的获取方法) 的解决方案。
65 57 
66### 1.2 启动容器58### 1.2 启动容器
67 59 
@@ -71,7 +63,7 @@ docker pull ${MY_STUDY_VAR_CANN_IMAGE}
71cd ~ && curl -O https://inst.obs.cn-north-4.myhuaweicloud.com/env/ctr_in.py && chmod +x ctr_in.py63cd ~ && curl -O https://inst.obs.cn-north-4.myhuaweicloud.com/env/ctr_in.py && chmod +x ctr_in.py
72```64```
73 65 
74-若因网络限制无法下载,请参考 [5.2 节](#52-传输容器启动脚本)。66+若因网络限制无法下载,请参考 [5.2 节](#52-传输容器启动脚本) 的解决方案
75 67 
76#### 1.2.2 启动容器68#### 1.2.2 启动容器
77 69 
@@ -79,7 +71,7 @@ cd ~ && curl -O https://inst.obs.cn-north-4.myhuaweicloud.com/env/ctr_in.py && c
79~/ctr_in.py ${MY_STUDY_VAR_CANN_IMAGE}71~/ctr_in.py ${MY_STUDY_VAR_CANN_IMAGE}
80```72```
81 73 
82-**预期输出**:出现如下提示信息,并停留在 root shell 提示符,表示容器已成功启动:74+**预期输出**:出现类似如下提示信息,并停留在 root shell 提示符,表示容器已成功启动:
83 75 
84```text76```text
85Welcome to 5.10.0-60.139.0.166.oe2203.aarch6477Welcome to 5.10.0-60.139.0.166.oe2203.aarch64
@@ -95,8 +87,9 @@ Users online: 0
95[root@xxxxxx ~]# 87[root@xxxxxx ~]#
96```88```
97 89 
98-> [!NOTE]说明 90+> [!CAUTION]注意
99-> 自此步骤起,后续所有操作均应在容器内部的 shell 中执行。91+>
92+> **自此步骤起,后续所有操作均应在容器内部的 shell 中执行。**
100 93 
101## 2. 克隆示例代码仓库94## 2. 克隆示例代码仓库
102 95 
@@ -108,27 +101,25 @@ git clone https://gitcode.com/Ascend/msot.git ~/ot_demo/msot
108 101 
109克隆完成后,示例代码路径为 `~/ot_demo/msot/example`102克隆完成后,示例代码路径为 `~/ot_demo/msot/example`
110 103 
111-若因网络问题导致克隆失败,请参考 [5.3 节](#53-同步示例代码仓库)。104+若因网络问题导致克隆失败,请参考 [5.3 节](#53-同步示例代码仓库) 的解决方案
112 105 
113## 3. 设置芯片 SoC 型号106## 3. 设置芯片 SoC 型号
114 107 
115-后续多条命令需引用芯片 SoC 型号(片上系统型号,用于标识芯片架构)此处统一查询并保存环境变量 `MY_STUDY_VAR_CHIP_SOC_TYPE`,便于后续直接使在容器内执行:108+后续多条命令需引用芯片 SoC 型号(片上系统型号,用于标识芯片架构)此处统一查询并保存环境变量 `MY_STUDY_VAR_CHIP_SOC_TYPE`,便于后续直接在容器内执行:
116 109 
117```bash110```bash
118-# acl 模块随 CANN 安装111+echo 'export MY_STUDY_VAR_CHIP_SOC_TYPE=$(python3 -c "import acl; print(acl.get_soc_name().replace(\"Ascend\", \"\"))")' > /etc/profile.d/custom-env.sh && chmod +x /etc/profile.d/custom-env.sh && source /etc/profile.d/custom-env.sh && { [ -n "$MY_STUDY_VAR_CHIP_SOC_TYPE" ] && echo -e "\033[32m[PASS] Chip SoC type: $MY_STUDY_VAR_CHIP_SOC_TYPE\033[0m" || echo -e '\033[31m[FAIL] Failed to set environment variable $MY_STUDY_VAR_CHIP_SOC_TYPE!\033[0m'; }
119-export MY_STUDY_VAR_CHIP_SOC_TYPE=$(python3 -c "import acl; print(acl.get_soc_name().replace('Ascend', ''))")
120- 
121-# 校验是否设置成功
122-[ -n "$MY_STUDY_VAR_CHIP_SOC_TYPE" ] && echo -e "\033[32m[PASS] 芯片型号: $MY_STUDY_VAR_CHIP_SOC_TYPE\033[0m" || echo -e "\033[31m[FAIL] 环境变量 \$MY_STUDY_VAR_CHIP_SOC_TYPE 设置失败!\033[0m"
123```112```
124 113 
125-若显示 [PASS]表示设置成功;若显示 [FAIL],通常是因为未成功部署 CANN 容器,或误在宿主机(容器外)执行了本步骤——请确认已进入容器后重试。114+若显示 `[PASS]`,表示设置成功;若显示 `[FAIL]`,通常是因为未成功部署 CANN 容器,或误在宿主机(容器外)执行了本步骤请确认已进入容器后重试。
126 115 
127> [!CAUTION]注意116> [!CAUTION]注意
128> 环境变量 `MY_STUDY_VAR_CHIP_SOC_TYPE` 与 `MY_STUDY_VAR_CANN_IMAGE` 仅适用于本快速入门教程,请勿在商业开发中使用。117> 环境变量 `MY_STUDY_VAR_CHIP_SOC_TYPE` 与 `MY_STUDY_VAR_CANN_IMAGE` 仅适用于本快速入门教程,请勿在商业开发中使用。
129 118 
130至此,学习环境安装完成。接下来,请返回快速入门文档继续后续操作。119至此,学习环境安装完成。接下来,请返回快速入门文档继续后续操作。
131 120 
121+<br>
122+ 
132## 4. 常见问题(FAQ)123## 4. 常见问题(FAQ)
133 124 
134### 4.1 退出容器后如何重新进入?125### 4.1 退出容器后如何重新进入?
@@ -136,18 +127,13 @@ export MY_STUDY_VAR_CHIP_SOC_TYPE=$(python3 -c "import acl; print(acl.get_soc_na
136**方法一(推荐)**:执行 `~/ctr_in.py`,交互式选择目标容器(若仅有一个容器则自动进入)。 127**方法一(推荐)**:执行 `~/ctr_in.py`,交互式选择目标容器(若仅有一个容器则自动进入)。
137**方法二(原生命令)**:执行 `docker exec -it alice_YYMMDD_HHMMSS bash`(请替换为实际容器名称)。128**方法二(原生命令)**:执行 `docker exec -it alice_YYMMDD_HHMMSS bash`(请替换为实际容器名称)。
138 129 
139-### 4.2 重新进入容器后环境变量丢失,如何处理130+### 4.2 执行 docker 命令遇到 permission denied 类错误提示
140 131 
141-通过 `export` 设置的环境变量仅在当前 shell 会话中有效,退出容器后将失效重新进入后需再次执行 `export` 命令 132+可能当前用户未加入 docker 用户组可使用 root 权限执行 `usermod -aG docker <当前用户名>`,不建议以 root 身份进行日常操作
142-如需持久化,可将相关 `export` 命令追加至容器内 `~/.bashrc` 文件末尾,使变量在每次登录时自动加载。
143- 
144-### 4.3 执行 docker 命令遇到 permission denied 类错误提示?
145- 
146-可能当前用户不在 docker 组,用 root 权限执行 `usermod -aG docker <当前用户名>`,不建议切为 root 进行体验。
147 133 
148## 5. 内网环境无外网访问权限的应对方案134## 5. 内网环境无外网访问权限的应对方案
149 135 
150-### 5.1 Docker 镜像获取136+### 5.1 Docker 镜像在隔离内网的获取方法
151 137 
152**方案一:配置 Docker 代理直接拉取**138**方案一:配置 Docker 代理直接拉取**
153 139 
@@ -173,7 +159,7 @@ sudo systemctl restart docker
173 159 
174**方案二:离线导入 CANN 镜像**160**方案二:离线导入 CANN 镜像**
175 161 
176-在具备外网且 CPU 架构相同的机器上执行:162+如果代理服务器方案不可行,可在具备外网且 CPU 架构相同的机器上执行:
177 163 
178```bash164```bash
179# 拉取镜像(需先按 1.1.1 节设置环境变量)165# 拉取镜像(需先按 1.1.1 节设置环境变量)
@@ -183,7 +169,7 @@ docker pull ${MY_STUDY_VAR_CANN_IMAGE}
183docker save -o cann.tar ${MY_STUDY_VAR_CANN_IMAGE}169docker save -o cann.tar ${MY_STUDY_VAR_CANN_IMAGE}
184```170```
185 171 
186-将 `cann.tar` 传输至内网服务器后,执行以下命令加载:172+将 `cann.tar` 通过优盘等方式传输至内网服务器后,执行以下命令加载:
187 173 
188```bash174```bash
189docker load -i cann.tar175docker load -i cann.tar
@@ -193,7 +179,7 @@ docker load -i cann.tar
193 179 
194### 5.2 传输容器启动脚本180### 5.2 传输容器启动脚本
195 181 
196-在访问当前网页的浏览器中输入如下链接,下载 `ctr_in.py` 脚本文件,并将其手动拷贝至内网服务器的 `~/` 目录,随后执行权限设置命令 `chmod +x ctr_in.py`。182+访问当前网页的浏览器中输入如下链接,下载 `ctr_in.py` 脚本文件,并将其手动拷贝至内网服务器的 `~/` 目录,随后执行权限设置命令 `chmod +x ctr_in.py`。
197 183 
198```text184```text
199https://inst.obs.cn-north-4.myhuaweicloud.com/env/ctr_in.py185https://inst.obs.cn-north-4.myhuaweicloud.com/env/ctr_in.py
@@ -201,7 +187,7 @@ https://inst.obs.cn-north-4.myhuaweicloud.com/env/ctr_in.py
201 187 
202### 5.3 同步示例代码仓库188### 5.3 同步示例代码仓库
203 189 
204-在访问当前网页的浏览器中输入如下链接,进入页面后点击“下载zip”按钮,将代码仓库压缩包下载至本地,再将其拷贝至内网服务器的目标工作目录,确保路径为 `~/ot_demo/msot/example`。190+访问当前网页的浏览器中输入如下链接,进入页面后点击“下载zip”按钮,将代码仓库压缩包下载至本地,再将其拷贝至内网服务器的目标工作目录,确保路径为 `~/ot_demo/msot/example`。
205 191 
206```text192```text
207https://gitcode.com/Ascend/msot193https://gitcode.com/Ascend/msot
Mdocs/zh/quick_start/op_tool_quick_start.md+21-14
@@ -30,7 +30,7 @@ MindStudio 算子开发工具链包含多种工具。本文档以开发一个简
30**请严格按以下指南完成环境安装:** 30**请严格按以下指南完成环境安装:**
31👉 **[《昇腾 AI 算子开发工具链学习环境安装指南》](installation_guide.md)**31👉 **[《昇腾 AI 算子开发工具链学习环境安装指南》](installation_guide.md)**
32 32 
33-> ⏱️ **外网可达环境下预计耗时:约 3 分钟** 33+> ⏱️ **外网可达环境下预计耗时:约 3 分钟(具体时间受网络状况影响)**
34> 安装完成后,您将获得一个预装所有算子工具、示例代码和依赖库的标准化容器环境。34> 安装完成后,您将获得一个预装所有算子工具、示例代码和依赖库的标准化容器环境。
35 35 
36#### 2.1.2 执行环境自检脚本(必须通过!)36#### 2.1.2 执行环境自检脚本(必须通过!)
@@ -39,20 +39,17 @@ MindStudio 算子开发工具链包含多种工具。本文档以开发一个简
39 39 
40```bash40```bash
41# 1. 容器环境检查41# 1. 容器环境检查
42-[ -f /.dockerenv ] && [ -n "$ASCEND_HOME_PATH" ] && [ -n "$ATB_HOME_PATH" ] && echo -e "\033[32m[PASS] CANN 容器环境 OK \033[0m" || echo -e "\033[31m[FAIL] 非标容器或未进入容器!\033[0m"42+[ -f /.dockerenv ] && [ -n "$ASCEND_HOME_PATH" ] && [ -n "$ATB_HOME_PATH" ] && echo -e "\033[32m[PASS] CANN container environment OK \033[0m" || echo -e '\033[31m[FAIL] Non-standard container or not inside the container!\033[0m'
43# 2. 芯片型号变量检查43# 2. 芯片型号变量检查
44-[ -n "$MY_STUDY_VAR_CHIP_SOC_TYPE" ] && echo -e "\033[32m[PASS] 芯片型号: $MY_STUDY_VAR_CHIP_SOC_TYPE\033[0m" || echo -e "\033[31m[FAIL] 缺失环境变量 \$MY_STUDY_VAR_CHIP_SOC_TYPE\033[0m"44+[ -n "$MY_STUDY_VAR_CHIP_SOC_TYPE" ] && echo -e "\033[32m[PASS] Chip Soc type: $MY_STUDY_VAR_CHIP_SOC_TYPE\033[0m" || echo -e "\033[31m[FAIL] Missing environment variable \$MY_STUDY_VAR_CHIP_SOC_TYPE\033[0m"
45# 3. 示例代码仓检查45# 3. 示例代码仓检查
46-[ -d ~/ot_demo/msot/example/quick_start ] && echo -e "\033[32m[PASS] 示例代码仓 OK\033[0m" || echo -e "\033[31m[FAIL] 代码仓缺失\033[0m"46+[ -d ~/ot_demo/msot/example/quick_start ] && echo -e "\033[32m[PASS] Example code repository OK\033[0m" || echo -e "\033[31m[FAIL] Code repository missing\033[0m"
47```47```
48 48 
49🚀 **后续体验环节全程支持 Copy/Paste 快速执行,请按照每节中的步骤顺序操作,勿跳过或打乱操作步骤。**49🚀 **后续体验环节全程支持 Copy/Paste 快速执行,请按照每节中的步骤顺序操作,勿跳过或打乱操作步骤。**
50 50 
51### 2.2【设计】算子建模设计(msKPP)51### 2.2【设计】算子建模设计(msKPP)
52 52 
53-> [!CAUTION]注意
54-> 本工具仅支持昇腾 910B 系列芯片。如需体验,请切换至搭载昇腾 910B 芯片的环境;否则,请跳过本节内容。
55- 
56首先,进行算子算法设计。借助 msKPP 工具,可在秒级时间内获得算子性能建模结果,在无硬件条件下预估性能,快速验证实现方案的可行性。先跟着操作体验效果,原理部分可稍后阅读:53首先,进行算子算法设计。借助 msKPP 工具,可在秒级时间内获得算子性能建模结果,在无硬件条件下预估性能,快速验证实现方案的可行性。先跟着操作体验效果,原理部分可稍后阅读:
57 54 
58> [!NOTE]说明 55> [!NOTE]说明
@@ -60,7 +57,17 @@ MindStudio 算子开发工具链包含多种工具。本文档以开发一个简
60> **知识点:msKPP 工具原理** 57> **知识点:msKPP 工具原理**
61> msKPP 并非传统可执行程序,而是一套专用于昇腾的 Python 类库。用户需通过 import 相关模块、编写并执行 Python 脚本,生成性能分析结果文件以完成建模。内部原理是预先采集真实环境中各类指令操作的性能数据,基于用户定义的算子执行流程,对各种性能开销进行建模与估算。58> msKPP 并非传统可执行程序,而是一套专用于昇腾的 Python 类库。用户需通过 import 相关模块、编写并执行 Python 脚本,生成性能分析结果文件以完成建模。内部原理是预先采集真实环境中各类指令操作的性能数据,基于用户定义的算子执行流程,对各种性能开销进行建模与估算。
62 59 
63-#### 2.2.1 编写 Python 建模脚本60+#### 2.2.1 环境检查
61+ 
62+本工具**仅支持昇腾 910B** 系列芯片。请执行以下命令:
63+ 
64+```bash
65+chip=$(npu-smi info -m 2>/dev/null | grep -oP 'Ascend\s*\S+' | head -1); case "$chip" in 'Ascend 910B'* ) echo -e "\n\e[32m[PASS] Chip SoC type [$chip] check passed. Please continue with the experience.\e[0m";; * ) echo -e "\n\033[31m[FAIL] Get chip: ${chip:-None}. The current environment does not support this tool. Please skip this experience.\033[0m" >&2;; esac
66+```
67+ 
68+若输出为 `[PASS]`,请继续进行体验;若输出为 `[FAIL]`,请切换至搭载昇腾 910B 芯片的环境后再进行体验;否则,请跳过本节内容。
69+ 
70+#### 2.2.2 编写 Python 建模脚本
64 71 
651. 创建子工作区目录721. 创建子工作区目录
66 73 
@@ -82,7 +89,7 @@ MindStudio 算子开发工具链包含多种工具。本文档以开发一个简
82 \cp -f ~/ot_demo/msot/example/quick_start/mskpp/mskpp_demo.py ./89 \cp -f ~/ot_demo/msot/example/quick_start/mskpp/mskpp_demo.py ./
83 ```90 ```
84 91 
85-#### 2.2.2 执行性能建模92+#### 2.2.3 执行性能建模
86 93 
87执行 Python 脚本开始性能建模,如果成功,将自动在当前目录下生成 "MSKPP{timestamp}" 结果目录:94执行 Python 脚本开始性能建模,如果成功,将自动在当前目录下生成 "MSKPP{timestamp}" 结果目录:
88 95 
@@ -90,9 +97,9 @@ MindStudio 算子开发工具链包含多种工具。本文档以开发一个简
90python3 mskpp_demo.py97python3 mskpp_demo.py
91```98```
92 99 
93-如果脚本报错,提示 Chip is unsupported,请确认环境变量 `MY_STUDY_VAR_CHIP_SOC_TYPE` 是否正确设置,如变量为空,请参考《[算子开发工具链学习环境安装指南](./installation_guide.md)》的第 3 节重新设置。100+如果脚本报错,提示 Chip is unsupported,请确认环境变量 `MY_STUDY_VAR_CHIP_SOC_TYPE` 是否正确设置,如变量为空,请参考《[算子开发工具链学习环境安装指南](./installation_guide.md)》的第 3 节重新设置;若变量非空,请核实当前芯片型号是否为 910B 系列——本工具仅支持 910B 系列芯片,请切换至 910B 系列芯片环境后再进行体验
94 101 
95-#### 2.2.3 查看建模结果102+#### 2.2.4 查看建模结果
96 103 
97以下为部分生成结果文件的示例:104以下为部分生成结果文件的示例:
98 105 
@@ -290,7 +297,7 @@ Init acl failed. ERROR: 1
290 297 
291```bash298```bash
292cd ~/ot_demo/workspace/src/AddCustom299cd ~/ot_demo/workspace/src/AddCustom
293-printf '%s\n' "if(COMMAND add_ops_compile_options)" " add_ops_compile_options(ALL OPTIONS -sanitizer)" "elseif(COMMAND npu_op_kernel_options)" " npu_op_kernel_options(ascendc_kernels ALL OPTIONS -sanitizer)" "endif()" | cat - op_kernel/CMakeLists.txt > tmp && mv -f tmp op_kernel/CMakeLists.txt;300+sed -i '1i npu_op_kernel_options(ascendc_kernels ALL OPTIONS -sanitizer)' op_kernel/CMakeLists.txt
294```301```
295 302 
296#### 2.4.2 构造内存越界错误303#### 2.4.2 构造内存越界错误
@@ -388,7 +395,7 @@ echo 1 > /proc/debug_switch
388 395 
389 ```bash396 ```bash
390 cd ~/ot_demo/workspace/src/AddCustom397 cd ~/ot_demo/workspace/src/AddCustom
391- printf '%s\n' "if(COMMAND add_ops_compile_options)" " add_ops_compile_options(ALL OPTIONS -g -O0)" "elseif(COMMAND npu_op_kernel_options)" " npu_op_kernel_options(ascendc_kernels ALL OPTIONS -g -O0)" "endif()" | cat - op_kernel/CMakeLists.txt > tmp && mv -f tmp op_kernel/CMakeLists.txt;398+ sed -i '1i npu_op_kernel_options(ascendc_kernels ALL OPTIONS -g -O0)' op_kernel/CMakeLists.txt
392 ```399 ```
393 400 
3942. 重新编译部署算子4012. 重新编译部署算子
@@ -487,7 +494,7 @@ source ~/ot_demo/msot/example/quick_start/msdebug/set_kernel_obj_env.sh
487 494 
488 ```bash495 ```bash
489 cd ~/ot_demo/workspace/src/AddCustom496 cd ~/ot_demo/workspace/src/AddCustom
490- printf '%s\n' "if(COMMAND add_ops_compile_options)" " add_ops_compile_options(ALL OPTIONS -g)" "elseif(COMMAND npu_op_kernel_options)" " npu_op_kernel_options(ascendc_kernels ALL OPTIONS -g)" "endif()" | cat - op_kernel/CMakeLists.txt > tmp && mv -f tmp op_kernel/CMakeLists.txt;497+ sed -i '1i npu_op_kernel_options(ascendc_kernels ALL OPTIONS -g)' op_kernel/CMakeLists.txt
491 ```498 ```
492 499 
493 > [!NOTE]说明 500 > [!NOTE]说明
Mexample/quick_start/msopgen/caller/exec.py+1-1
@@ -85,7 +85,7 @@ class OpRunner:
85 npu_ids = OpRunner._extract_npu_ids(result.stdout)85 npu_ids = OpRunner._extract_npu_ids(result.stdout)
86 print("[INFO] Detected NPU IDs: " + str(npu_ids))86 print("[INFO] Detected NPU IDs: " + str(npu_ids))
87 87 
88- idle = list(re.findall(r"No running processes found in NPU (\d+)", result.stdout))88+ idle = list(re.findall(r"No running processes found in NPU\s+(\d+)", result.stdout))
89 idle = [int(x) for x in idle]89 idle = [int(x) for x in idle]
90 print("[INFO] Available (idle) NPU IDs:" + str(idle))90 print("[INFO] Available (idle) NPU IDs:" + str(idle))
91 if len(idle) == 0:91 if len(idle) == 0: