docs: sync PR merge status from GitHub quickgelu #1343 -> MERGED softmax #1347 -> MERGED elementwise vectorization #1353 -> MERGED lp_norm #1359 -> MERGED sigmoid #1338 -> CLOSED (not merged)
docs: sync PR merge status from GitHub
参赛者:LindseyMei 目标仓库:InfiniTensor/InfiniCore GPU:MetaX C500 64GB + MACA 3.3.0.15 包生成日期:2026-07-01
本文件包统一整理了为 InfiniCore 算子库向 MetaX(沐曦)GPU 后端迁移的 4 个算子:sigmoid、quickgelu、softmax、lp_norm,以及一项 elementwise 模板向量化优化。四个算子均已在真机 C500 上完成编译、单测、精度对拍和性能测试,并分别提交独立 PR;向量化优化为共享 elementwise 模板增加 16 字节向量快路径,使 silu 等大张量性能提升 3–4 倍。
说明:所有 PR 的 GitLink issue 均已创建,链接见上表。
InfiniCore 算子按 src/infiniop/ops/<op>/<backend>/ 组织。四个算子原有 cpu/、cuda/、nvidia/ 后端,唯独缺 MetaX。本次补齐遵循统一模式:
src/infiniop/ops/<op>/<backend>/
cpu/
cuda/
nvidia/
cuda/kernel.cuh
operator.cc
#ifdef ENABLE_METAX_API
test/infiniop/quickgelu.py
CUDART_VERSION
没有使用 triton / ninetoothed(九齿),完全绕开本环境会失败的 AOT 编译;也无需改动 xmake 构建脚本(xmake/metax.lua 自动 glob ops/*/metax/*.maca)。
xmake/metax.lua
ops/*/metax/*.maca
elementwise 向量化优化 则在共享 elementwise/metax/elementwise_metax.h 中增加 16 字节向量快路径,所有满足连续、对齐、同 dtype 的 127 个 elementwise 算子自动受益。
elementwise/metax/elementwise_metax.h
src/infiniop/ops/sigmoid/metax/sigmoid_metax.h
src/infiniop/ops/sigmoid/metax/sigmoid_metax.maca
src/infiniop/ops/sigmoid/operator.cc
python3 test/infiniop/sigmoid.py --metax
Test passed!
logs/sigmoid/PERFORMANCE.md
src/infiniop/ops/quickgelu/metax/quickgelu_metax.h
src/infiniop/ops/quickgelu/metax/quickgelu_metax.maca
src/infiniop/ops/quickgelu/operator.cc
src/infiniop/ops/quickgelu/cuda/kernel.cuh
__nv_bfloat16
cuda_bfloat16
src/infiniop/ops/quickgelu/nvidia/quickgelu_nvidia.cu
test/infiniop/libinfiniop/op_register.py
python3 test/infiniop/quickgelu.py --metax
logs/quickgelu/PERFORMANCE.md
src/infiniop/ops/softmax/metax/softmax_metax.h
src/infiniop/ops/softmax/metax/softmax_metax.maca
src/infiniop/ops/softmax/operator.cc
python3 test/infiniop/softmax.py --metax
logs/softmax/PERFORMANCE.md
src/infiniop/ops/lp_norm/metax/lp_norm_metax.h
src/infiniop/ops/lp_norm/metax/lp_norm_metax.maca
src/infiniop/ops/lp_norm/operator.cc
src/infiniop/ops/lp_norm/cuda/kernel.cuh
python3 test/infiniop/lp_norm.py --metax
docs/lp_norm_PERF.md
src/infiniop/elementwise/metax/elementwise_metax.h
silu/add/mul/reciprocal/gelu/swiglu/clip
docs/elementwise_vec_PERF.md
docs/vectorization_plan.md
xmake -y -j4
xmake install -y
--metax
所有性能数据均采用独立脚本 + 显式 torch.cuda.synchronize() 计时,避免 harness 计时不同步导致的异常数值。
torch.cuda.synchronize()
详见 logs/sigmoid/PERFORMANCE.md。
详见 logs/quickgelu/PERFORMANCE.md。
详见 logs/softmax/PERFORMANCE.md。
详见 docs/lp_norm_PERF.md。
详见 docs/elementwise_vec_PERF.md。
logs/<op>/PERFORMANCE.md
InfiniCore-Metax-Contributions/ ├── LINKS.md # 所有 PR / issue 链接汇总 ├── README.md # 本文件 ├── patch/ # 可 git apply 的改动 patch │ ├── feat-metax-sigmoid.patch │ ├── feat-metax-quickgelu.patch │ ├── feat-metax-softmax.patch │ └── lp_norm_metax.patch ├── src/ # 各算子改动源文件 │ ├── sigmoid/ │ │ ├── sigmoid_metax.h │ │ ├── sigmoid_metax.maca │ │ └── operator.cc │ ├── quickgelu/ │ │ ├── quickgelu_metax.h │ │ ├── quickgelu_metax.maca │ │ ├── operator.cc │ │ ├── kernel.cuh │ │ ├── quickgelu_nvidia.cu │ │ └── op_register.py │ ├── softmax/ │ │ ├── softmax_metax.h │ │ ├── softmax_metax.maca │ │ └── operator.cc │ └── lp_norm/ │ ├── lp_norm_metax.h │ ├── lp_norm_metax.maca │ ├── kernel.cuh │ └── operator.cc ├── test/ # 测试脚本 │ ├── quickgelu.py │ └── lp_norm.py ├── bench/ # 性能测试脚本 │ ├── sigmoid_bench.py │ ├── torch_sigmoid_baseline.py │ ├── quickgelu_bench.py │ ├── softmax_bench.py │ ├── torch_softmax_baseline.py │ ├── lp_norm_bench.py │ └── vec_bench.py ├── logs/ # 单测/性能原始日志与报告 │ ├── sigmoid/ │ │ ├── PERFORMANCE.md │ │ ├── sigmoid_test.log │ │ ├── sigmoid_perf_large.csv │ │ ├── sigmoid_profile_raw.log │ │ ├── sigmoid_bench_large_raw.log │ │ └── torch_baseline_raw.log │ ├── quickgelu/ │ │ ├── PERFORMANCE.md │ │ ├── test.log │ │ ├── quickgelu_perf_large.csv │ │ ├── 04_profile.log │ │ ├── 05_bench_large.log │ │ └── 06_torch_baseline.log │ ├── softmax/ │ │ ├── PERFORMANCE.md │ │ ├── softmax_perf_large.csv │ │ ├── 10_test_softmax.log │ │ ├── 11_profile_softmax.log │ │ ├── 12_torch_softmax_baseline.log │ │ └── 13_softmax_bench.log │ └── 11_build_lp_norm.log └── docs/ # 方案、进度、GitLink issue 草稿 ├── PROGRESS.md ├── 竞赛工作方案.md ├── vectorization_plan.md ├── elementwise_vec_PERF.md ├── lp_norm_PERF.md ├── gitlink_issue_1353_draft.md ├── gitlink_issue_1359_draft.md ├── GPUApps_issue_sigmoid.md ├── GPUApps_issue_quickgelu.md ├── GPUApps_issue_softmax.md ├── GPUApps_issue_lp_norm.md └── GPUApps_issue_elementwise_vec.md
cd /data/workspace/InfiniCore source /data/workspace/env_infinicore.sh # 编译(必须 -j4 + 后台,否则 128 并行 mxcc 会 OOM) nohup xmake -y -j4 > build.log 2>&1 & xmake install -y # 单测 python3 test/infiniop/sigmoid.py --metax python3 test/infiniop/quickgelu.py --metax python3 test/infiniop/softmax.py --metax python3 test/infiniop/lp_norm.py --metax # 性能测试(在 bench/ 目录) PYTHONPATH=/data/workspace/InfiniCore/test/infiniop:$PYTHONPATH python3 bench/sigmoid_bench.py --profile --metax PYTHONPATH=/data/workspace/InfiniCore/test/infiniop:$PYTHONPATH python3 bench/quickgelu_bench.py --profile --metax PYTHONPATH=/data/workspace/InfiniCore/test/infiniop:$PYTHONPATH python3 bench/softmax_bench.py PYTHONPATH=/data/workspace/InfiniCore/test/infiniop:$PYTHONPATH python3 bench/lp_norm_bench.py PYTHONPATH=/data/workspace/InfiniCore/test/infiniop:$PYTHONPATH python3 bench/vec_bench.py python3 bench/torch_sigmoid_baseline.py python3 bench/torch_softmax_baseline.py
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
InfiniCore MetaX 后端适配 —— 参赛文件包
一句话概述
本文件包统一整理了为 InfiniCore 算子库向 MetaX(沐曦)GPU 后端迁移的 4 个算子:sigmoid、quickgelu、softmax、lp_norm,以及一项 elementwise 模板向量化优化。四个算子均已在真机 C500 上完成编译、单测、精度对拍和性能测试,并分别提交独立 PR;向量化优化为共享 elementwise 模板增加 16 字节向量快路径,使 silu 等大张量性能提升 3–4 倍。
提交材料汇总
说明:所有 PR 的 GitLink issue 均已创建,链接见上表。
技术路线
InfiniCore 算子按
src/infiniop/ops/<op>/<backend>/组织。四个算子原有cpu/、cuda/、nvidia/后端,唯独缺 MetaX。本次补齐遵循统一模式:cuda/kernel.cuh中的内核函子;operator.cc中增加 5 处#ifdef ENABLE_METAX_API设备分派;test/infiniop/quickgelu.py及 ctypes 注册;cuda/kernel.cuh做最小 MACA 可移植性适配(CUDART_VERSION分支排除 MetaX)。没有使用 triton / ninetoothed(九齿),完全绕开本环境会失败的 AOT 编译;也无需改动 xmake 构建脚本(
xmake/metax.lua自动 globops/*/metax/*.maca)。elementwise 向量化优化 则在共享
elementwise/metax/elementwise_metax.h中增加 16 字节向量快路径,所有满足连续、对齐、同 dtype 的 127 个 elementwise 算子自动受益。各算子详情
sigmoid
src/infiniop/ops/sigmoid/metax/sigmoid_metax.hsrc/infiniop/ops/sigmoid/metax/sigmoid_metax.macasrc/infiniop/ops/sigmoid/operator.ccpython3 test/infiniop/sigmoid.py --metax→Test passed!logs/sigmoid/PERFORMANCE.mdquickgelu
src/infiniop/ops/quickgelu/metax/quickgelu_metax.hsrc/infiniop/ops/quickgelu/metax/quickgelu_metax.macatest/infiniop/quickgelu.pysrc/infiniop/ops/quickgelu/operator.ccsrc/infiniop/ops/quickgelu/cuda/kernel.cuh(__nv_bfloat16→cuda_bfloat16,提升可移植性)src/infiniop/ops/quickgelu/nvidia/quickgelu_nvidia.cu(同步改用cuda_bfloat16)test/infiniop/libinfiniop/op_register.py(注册 ctypes 绑定)python3 test/infiniop/quickgelu.py --metax→Test passed!logs/quickgelu/PERFORMANCE.mdsoftmax
src/infiniop/ops/softmax/metax/softmax_metax.hsrc/infiniop/ops/softmax/metax/softmax_metax.macasrc/infiniop/ops/softmax/operator.ccpython3 test/infiniop/softmax.py --metax→Test passed!logs/softmax/PERFORMANCE.mdlp_norm
src/infiniop/ops/lp_norm/metax/lp_norm_metax.hsrc/infiniop/ops/lp_norm/metax/lp_norm_metax.macasrc/infiniop/ops/lp_norm/operator.ccsrc/infiniop/ops/lp_norm/cuda/kernel.cuh(MetaX 可移植性适配)python3 test/infiniop/lp_norm.py --metax→Test passed!docs/lp_norm_PERF.mdelementwise 向量化优化
src/infiniop/elementwise/metax/elementwise_metax.hsilu/add/mul/reciprocal/gelu/swiglu/clip均通过docs/elementwise_vec_PERF.mddocs/vectorization_plan.md公共验证结果
xmake -y -j4)xmake install -y)--metax)性能数据总览
所有性能数据均采用独立脚本 + 显式
torch.cuda.synchronize()计时,避免 harness 计时不同步导致的异常数值。sigmoid(逐元素,大张量 out-of-place)
详见
logs/sigmoid/PERFORMANCE.md。quickgelu(逐元素,大张量 out-of-place)
详见
logs/quickgelu/PERFORMANCE.md。softmax(沿 axis=1,out-of-place)
详见
logs/softmax/PERFORMANCE.md。lp_norm(沿 axis=-1 或 axis=3,out-of-place)
详见
docs/lp_norm_PERF.md。elementwise 向量化(silu,连续对齐大张量)
详见
docs/elementwise_vec_PERF.md。关键发现
logs/<op>/PERFORMANCE.md、docs/lp_norm_PERF.md与docs/elementwise_vec_PERF.md。复现方法