forked from metax-maca/op_optimization
修正 fused_moe 教程
This commit is contained in:
parent
8628b5b38c
commit
46c939acc0
|
|
@ -231,15 +231,15 @@ PYTHON_BIN=/path/to/python bash scripts/build_fused_moe_i8_tn_pybind.sh
|
|||
|
||||
|
||||
**常见问题:**
|
||||
|
||||
| **报错** | **原因** | **解决办法** |
|
||||
| --- | --- | --- |
|
||||
| `Python.h: No such file or directory` | Python 头文件路径未找到 | 确认 `PYTHON_BIN` 路径正确,脚本自动探测 `sysconfig.get_path('include')` |
|
||||
| `libpython3.x.so: cannot find` | 链接时找不到 Python 库 | 1、执行 `find $CONDA_PREFIX -name "libpython3*.so*"`查找绝对路径<br>2、将该路径赋值给 `LIBPYTHON_PATH` |
|
||||
| `recompile with -fPIC` | 编译未开启位置无关代码 | 确保 `mxcc`/ `g++`编译参数中有 `-fPIC` |
|
||||
| `permission denied` | 无脚本执行权限 | `chmod +x scripts/*.sh` |
|
||||
| `undefined reference to Py_...` | Python 版本不匹配 | 确认编译脚本中`PYTHON_BIN`路径与当前运行的 Python 环境完全一致 |
|
||||
|
||||
|
||||
| 报错 | 原因 | 解决办法 |
|
||||
| :--- | :--- | :--- |
|
||||
| `Python.h: No such file or directory` | Python 头文件路径未找到 | 确认 `PYTHON_BIN` 路径正确,脚本自动探测 `sysconfig.get_path('include')` |
|
||||
| `libpython3.x.so: cannot find` | 链接时找不到 Python 库 | 1、执行 `find $CONDA_PREFIX -name "libpython3*.so*"` 查找绝对路径<br>2、将该路径赋值给 `LIBPYTHON_PATH` |
|
||||
| `recompile with -fPIC` | 编译未开启位置无关代码 | 确保 `mxcc` / `g++` 编译参数中有 `-fPIC` |
|
||||
| `permission denied` | 无脚本执行权限 | `chmod +x scripts/*.sh` |
|
||||
| `undefined reference to Py_...` | Python 版本不匹配 | 确认编译脚本中 `PYTHON_BIN` 路径与当前运行的 Python 环境完全一致 |
|
||||
|
||||
|
||||
#### Step 4:正确性验证
|
||||
|
||||
|
|
@ -381,7 +381,7 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2
|
|||
|
||||
1. 厘清 Benchmark 和 XPU-OJ 的区别:
|
||||
|
||||
赛事镜像中的 Benchmark 脚本用于理解目标算子的调用方式、输入输出 shape 和性能基线;XPU-OJ 题包用于定义最终评测接口、数据范围、参考输出和精度要求。
|
||||
赛事镜像中的 Benchmark 脚本用于理解目标算子的调用方式、输入输出 shape 和性能基线;XPU-OJ 题包用于定义最终评测接口、数据范围、参考输出和精度要求。
|
||||
|
||||
| 维度 | Benchmark 脚本 | XPU-OJ 提交 |
|
||||
| :--- | :--- | :--- |
|
||||
|
|
@ -395,17 +395,17 @@ bash scripts/run_fused_moe_i8_tn_benchmark.sh --backend all --warmup 5 --iters 2
|
|||
|
||||
2. 理解完成 benchmark 验证并成功建立性能基线后,需要完成以下转换:
|
||||
|
||||
a. 从 benchmark 脚本中理解目标 API;
|
||||
* a. 从 benchmark 脚本中理解目标 API;
|
||||
|
||||
b. 在对应 OJ 平台【题目描述】中查看 `run_kernel(...)` 接口;
|
||||
* b. 在对应 OJ 平台【题目描述】中查看 `run_kernel(...)` 接口;
|
||||
|
||||
c. 对照 OJ 平台【题目描述】中的输入 shape、数据范围和精度要求;
|
||||
* c. 对照 OJ 平台【题目描述】中的输入 shape、数据范围和精度要求;
|
||||
|
||||
d. 编写自己的 `run_kernel(...)`;
|
||||
* d. 编写自己的 `run_kernel(...)`;
|
||||
|
||||
e. 在 OJ 平台提交`run_kernel(...)`,先通过正确性;
|
||||
* e. 在 OJ 平台提交`run_kernel(...)`,先通过正确性;
|
||||
|
||||
f. 正确性通过后,再对比 benchmark 耗时 / OJ 耗时继续优化。
|
||||
* f. 正确性通过后,再对比 benchmark 耗时 / OJ 耗时继续优化。
|
||||
|
||||
|
||||
#### Step 7:登录 XPU-OJ 平台并进入题目页面
|
||||
|
|
|
|||
Loading…
Reference in New Issue