??
FlagDNN 是一个面向多种加速器平台的 C/C++ DNN Graph Runtime。不同平台的环境依赖 和构建参数请参考对应的安装章节。
libcudnn_ext.so.9
9.24.0.43
1.26.0
libtriton_jit
readelf
nm
依赖的编译和安装方法请参考:
triton
-DBACKEND=CUDA
建议将 FlagDNN 与 libtriton_jit 放在同一级目录,默认从 ../libtriton_jit/build 查找 JIT 依赖。cuDNN 和 Frontend 可从所选 Python 环境中的 nvidia-cudnn-cu12、nvidia-cudnn-frontend 安装目录自动发现。
../libtriton_jit/build
nvidia-cudnn-cu12
nvidia-cudnn-frontend
在已激活上述 Python 环境的 FlagDNN 根目录执行:
tools/build.sh \ --backends nvidia \ --build-dir build/nvidia
该命令以 Release 模式编译 FlagDNN,并同时构建功能测试和性能测试。 NVIDIA 后端仅支持默认的 libtriton_jit 执行引擎。若依赖安装在其他位置, 可显式指定 Python、CUDA、libtriton_jit 和 cuDNN 路径:
Release
tools/build.sh \ --backends nvidia \ --build-dir build/nvidia \ --python /path/to/python3 \ -- \ -DCUDAToolkit_ROOT=/path/to/cuda \ -DTritonJIT_DIR=/path/to/libtriton_jit/build \ -DCUDNN_ROOT=/path/to/cudnn \ -DCUDNN_FRONTEND_INCLUDE_DIR=/path/to/cudnn-frontend/include
TritonJIT_DIR 应指向包含 TritonJITConfig.cmake 的目录,已安装的包通常位于 <prefix>/lib/cmake/TritonJIT。CUDNN_ROOT 应包含配套的头文件和动态库; CUDNN_FRONTEND_INCLUDE_DIR 应包含 cudnn_frontend.h。
TritonJIT_DIR
TritonJITConfig.cmake
<prefix>/lib/cmake/TritonJIT
CUDNN_ROOT
CUDNN_FRONTEND_INCLUDE_DIR
cudnn_frontend.h
# 默认安装到 build/nvidia/install tools/install.sh --build-dir build/nvidia # 指定安装目录 tools/install.sh \ --build-dir build/nvidia \ --prefix /path/to/flagdnn-sdk
安装后的 SDK 仍依赖兼容的 CUDA、libtriton_jit 和构建时选定的 Python 环境; 功能测试和性能测试保留在构建目录中,不随 SDK 安装。
在与编译时一致的 Python 环境中执行:
python3 tools/run_tests.py --dump-output --output-dir logs_result_20260920_flagdnn --gpus 0,1
测试细节见功能与性能验证
请选择与当前 DTK 兼容的依赖版本。libtriton_jit 可放在任意目录;未指定路径时, 默认从 FlagDNN 同级的 ../libtriton_jit 查找其构建产物或安装文件。
../libtriton_jit
在 FlagDNN 根目录执行:
tools/build.sh \ --backends hygon \ --build-dir build/hygon
该命令以 Release 模式编译 FlagDNN,并同时构建功能测试和性能测试。
若 libtriton_jit 位于其他目录,在 -- 后传入 Hygon 专用的 CMake 参数:
--
tools/build.sh \ --backends hygon \ --build-dir build/hygon \ -- \ -DFLAGDNN_HYGON_TRITON_JIT_DIR=/path/to/libtriton_jit/build
FLAGDNN_HYGON_TRITON_JIT_DIR 指向包含 TritonJITConfig.cmake 的目录, 不是 .so 文件。源码构建通常位于 <repo>/build,安装包通常位于 <prefix>/lib/cmake/TritonJIT 或 <prefix>/lib64/cmake/TritonJIT。 也可改用 -DFLAGDNN_HYGON_TRITON_JIT_ROOT=/path/to/libtriton_jit 指定已构建的 源码仓库根目录或完整安装前缀。
FLAGDNN_HYGON_TRITON_JIT_DIR
.so
<repo>/build
<prefix>/lib64/cmake/TritonJIT
-DFLAGDNN_HYGON_TRITON_JIT_ROOT=/path/to/libtriton_jit
# 默认安装到 build/hygon/install tools/install.sh --build-dir build/hygon # 指定安装目录 tools/install.sh \ --build-dir build/hygon \ --prefix /path/to/flagdnn-sdk
corex_71
cudnn.h
libcudnn.so.7
-DBACKEND=IX
请选择与当前 CoreX 兼容的依赖版本,并在编译和运行测试前激活对应的 Python 环境。 默认从 /usr/local/corex 查找 CoreX,从 /usr/local/lib/cmake/TritonJIT 查找已安装的 IX 版 libtriton_jit。
/usr/local/corex
/usr/local/lib/cmake/TritonJIT
tools/build.sh \ --backends iluvatar \ --build-dir build/iluvatar
该命令以 Release 模式编译 FlagDNN,并同时构建功能测试和性能测试。 若依赖安装在其他位置,可显式指定 Python、CoreX 和 libtriton_jit 路径:
tools/build.sh \ --backends iluvatar \ --build-dir build/iluvatar \ --python /path/to/python3 \ -- \ -DFLAGDNN_ILUVATAR_COREX_ROOT=/path/to/corex \ -DFLAGDNN_ILUVATAR_TRITON_JIT_DIR=/path/to/libtriton_jit/lib/cmake/TritonJIT
FLAGDNN_ILUVATAR_TRITON_JIT_DIR 应指向包含 TritonJITConfig.cmake 的目录。
FLAGDNN_ILUVATAR_TRITON_JIT_DIR
# 默认安装到 build/iluvatar/install tools/install.sh --build-dir build/iluvatar # 指定安装目录 tools/install.sh \ --build-dir build/iluvatar \ --prefix /path/to/flagdnn-sdk
更多测试说明见功能与性能验证。
2.1.0-a5f865
1400
0.7.0+ppu.git22f4ff0e
3.6.0
flagtree
import triton
默认从 /usr/local/PPU_SDK 查找 SDK,从 FlagDNN 同级的 libtriton_jit 目录查找 JIT 依赖;FlagTree 路径由所选 Python 环境自动发现。 功能和性能测试严格使用同一 PPU SDK 中的 acDNN 作为参考。
/usr/local/PPU_SDK
在已安装 PPU 版 FlagTree 及上述依赖的 Python 环境中,于 FlagDNN 根目录执行。 可直接使用系统 Python,无需创建或激活虚拟环境:
tools/build.sh \ --backends thead \ --build-dir build/thead
显式指定 Python、PPU SDK、libtriton_jit 和 FlagTree 路径:
tools/build.sh \ --backends thead \ --default-backend thead \ --build-dir build/thead \ --python /path/to/ppu-env/bin/python3 \ -- \ -DFLAGDNN_THEAD_PPU_SDK_ROOT=/path/to/PPU_SDK \ -DFLAGDNN_THEAD_TRITON_JIT_ROOT=/path/to/libtriton_jit \ -DFLAGDNN_THEAD_TRITON_ROOT=/path/to/ppu-env/lib/python3.12/site-packages
FLAGDNN_THEAD_TRITON_JIT_ROOT 可指向已构建的源码仓库根目录或完整安装前缀。 FLAGDNN_THEAD_TRITON_ROOT 应指向同时包含 triton/ 和对应发行包元数据的 Python 包根目录,通常为 site-packages;可省略此参数以自动发现。 --python 也可指定系统 Python(例如 /usr/local/bin/python3),无需激活虚拟环境。 解释器与 FlagTree 包目录可以分别选择;所选 Python 仍需能导入 PPU 版 PyTorch 及其余依赖。
FLAGDNN_THEAD_TRITON_JIT_ROOT
FLAGDNN_THEAD_TRITON_ROOT
triton/
site-packages
--python
/usr/local/bin/python3
# 默认安装到 build/thead/install tools/install.sh --build-dir build/thead # 指定安装目录 tools/install.sh \ --build-dir build/thead \ --prefix /path/to/flagdnn-sdk
通用测试说明见 功能与性能验证。
torch_musa
PATH
mcc
patchelf
mtgpu
-DBACKEND=MUSA
请选择与当前 MUSA 兼容的依赖版本,并在编译和运行测试前激活对应的 Python 环境。 确保 MUSA、Torch/MKL 及 libtriton_jit 所依赖的其他动态库可被加载;环境变量 配置示例见摩尔线程适配设计。
tools/build.sh \ --backends mthreads \ --build-dir build/mthreads
在 FlagDNN 根目录执行,以下示例假设 MUSA 安装在 /usr/local/musa,MUSA 版 libtriton_jit 安装在 /usr/local:
/usr/local/musa
/usr/local
export MUSA_HOME=/usr/local/musa export PATH="$MUSA_HOME/bin:$PATH" export LD_LIBRARY_PATH="$MUSA_HOME/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" tools/build.sh \ --backends mthreads \ --build-dir build/mthreads \ -- \ -DFLAGDNN_MTHREADS_MUSA_ROOT="$MUSA_HOME" \ -DFLAGDNN_MTHREADS_TRITON_JIT_DIR=/usr/local/lib/cmake/TritonJIT
FLAGDNN_MTHREADS_MUSA_ROOT 和 FLAGDNN_MTHREADS_TRITON_JIT_DIR 均须显式 指定,后者应指向包含 TritonJITConfig.cmake 的目录。若依赖安装在其他位置, 请调整上述路径;指定 Python 时,在 -- 前添加 --python /path/to/python3。
FLAGDNN_MTHREADS_MUSA_ROOT
FLAGDNN_MTHREADS_TRITON_JIT_DIR
--python /path/to/python3
# 默认安装到 build/mthreads/install tools/install.sh --build-dir build/mthreads # 指定安装目录 tools/install.sh \ --build-dir build/mthreads \ --prefix /path/to/flagdnn-sdk
>= 9.0
< 10.0
codegen_arches
libascendcl.so
libruntime.so
libnnopbase.so
libopapi_math.so
libopapi_nn.so
torch_npu
standalone_compile.py
-DBACKEND=NPU
FlagDNN 从 ASCEND_HOME_PATH 或 ASCEND_TOOLKIT_HOME 获取 CANN 路径,也可在 编译时显式指定 CANN_ROOT。建议将 FlagDNN 与 libtriton_jit 放在同一级目录, 默认会尝试从 ../libtriton_jit/build 查找 NPU 版 libtriton_jit。
ASCEND_HOME_PATH
ASCEND_TOOLKIT_HOME
CANN_ROOT
tools/build.sh \ --backends ascend \ --build-dir build/ascend
该命令以 Release 模式编译 FlagDNN,并同时构建功能测试和性能测试。 Ascend 后端仅支持默认的 libtriton_jit 执行引擎。若依赖安装在其他位置, 可显式指定 Python、CANN 和 libtriton_jit 路径:
tools/build.sh \ --backends ascend \ --build-dir build/ascend \ --python /path/to/python3 \ -- \ -DCANN_ROOT=/path/to/cann-9.x \ -DTritonJIT_DIR=/path/to/libtriton_jit/build
CANN_ROOT 应为 CANN 安装目录的绝对路径;TritonJIT_DIR 应指向包含 TritonJITConfig.cmake 的目录,已安装的包通常为 <prefix>/lib/cmake/TritonJIT。 若无法自动找到配套的 standalone_compile.py,可在 -- 后追加 -DFLAGDNN_TRITON_JIT_STANDALONE_COMPILER=/path/to/standalone_compile.py。
-DFLAGDNN_TRITON_JIT_STANDALONE_COMPILER=/path/to/standalone_compile.py
# 默认安装到 build/ascend/install tools/install.sh --build-dir build/ascend # 指定安装目录 tools/install.sh \ --build-dir build/ascend \ --prefix /path/to/flagdnn-sdk
安装后的 SDK 仍依赖兼容的 CANN 和构建时选定的 Python 环境;功能测试和性能测试 保留在构建目录中,不随 SDK 安装。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
FlagDNN
FlagDNN 是一个面向多种加速器平台的 C/C++ DNN Graph Runtime。不同平台的环境依赖 和构建参数请参考对应的安装章节。
平台安装
NVIDIA(英伟达)
环境要求
libcudnn_ext.so.9)和 cuDNN Frontend 头文件。当前验证版本为 cuDNN9.24.0.43、Frontend1.26.0。libtriton_jit需 3.25)、 Ninja、支持 C++20 的编译器、Python 3.10+ 及 Python 开发头文件和动态库; 检查动态库依赖还需要readelf和nm。当前验证使用 Python 3.12。libtriton_jit,以及配套的头文件、编译脚本和 CMake 配置文件; 需与 FlagDNN 使用相同的 Python、PyTorch 和 FlagTree 环境。依赖的编译和安装方法请参考:
tritonPython 模块,无需单独安装 Triton。libtriton_jit:编译时设置-DBACKEND=CUDA。建议将 FlagDNN 与
libtriton_jit放在同一级目录,默认从../libtriton_jit/build查找 JIT 依赖。cuDNN 和 Frontend 可从所选 Python 环境中的nvidia-cudnn-cu12、nvidia-cudnn-frontend安装目录自动发现。编译
在已激活上述 Python 环境的 FlagDNN 根目录执行:
该命令以
Release模式编译 FlagDNN,并同时构建功能测试和性能测试。 NVIDIA 后端仅支持默认的libtriton_jit执行引擎。若依赖安装在其他位置, 可显式指定 Python、CUDA、libtriton_jit和 cuDNN 路径:TritonJIT_DIR应指向包含TritonJITConfig.cmake的目录,已安装的包通常位于<prefix>/lib/cmake/TritonJIT。CUDNN_ROOT应包含配套的头文件和动态库;CUDNN_FRONTEND_INCLUDE_DIR应包含cudnn_frontend.h。安装
安装后的 SDK 仍依赖兼容的 CUDA、
libtriton_jit和构建时选定的 Python 环境; 功能测试和性能测试保留在构建目录中,不随 SDK 安装。批量测试
在与编译时一致的 Python 环境中执行:
测试细节见功能与性能验证
Hygon(海光)
环境要求
libtriton_jit需 3.25)、 Ninja、支持 C++20 的编译器、Python 3 及 Python 开发头文件。libtriton_jit。依赖的编译和安装方法请参考:
libtriton_jit:需编译为 HCU 版本。请选择与当前 DTK 兼容的依赖版本。
libtriton_jit可放在任意目录;未指定路径时, 默认从 FlagDNN 同级的../libtriton_jit查找其构建产物或安装文件。编译
在 FlagDNN 根目录执行:
该命令以
Release模式编译 FlagDNN,并同时构建功能测试和性能测试。若
libtriton_jit位于其他目录,在--后传入 Hygon 专用的 CMake 参数:FLAGDNN_HYGON_TRITON_JIT_DIR指向包含TritonJITConfig.cmake的目录, 不是.so文件。源码构建通常位于<repo>/build,安装包通常位于<prefix>/lib/cmake/TritonJIT或<prefix>/lib64/cmake/TritonJIT。 也可改用-DFLAGDNN_HYGON_TRITON_JIT_ROOT=/path/to/libtriton_jit指定已构建的 源码仓库根目录或完整安装前缀。安装
批量测试
Iluvatar(天数智芯)
环境要求
corex_71设备,适配环境为 CoreX 4.4.0。cudnn.h版本为 7.6.5、动态库为libcudnn.so.7。libtriton_jit需 3.25)、 Ninja、支持 C++20 的编译器、Python 3.10+ 及 Python 开发头文件; 检查 SDK 动态库还需要readelf和nm(或对应的 LLVM 工具)。libtriton_jit。依赖的编译和安装方法请参考:
tritonPython 模块,无需单独安装 Triton。libtriton_jit:编译时设置-DBACKEND=IX,安装动态库、头文件、脚本和 CMake 配置文件。请选择与当前 CoreX 兼容的依赖版本,并在编译和运行测试前激活对应的 Python 环境。 默认从
/usr/local/corex查找 CoreX,从/usr/local/lib/cmake/TritonJIT查找已安装的 IX 版libtriton_jit。编译
在 FlagDNN 根目录执行:
该命令以
Release模式编译 FlagDNN,并同时构建功能测试和性能测试。 若依赖安装在其他位置,可显式指定 Python、CoreX 和libtriton_jit路径:FLAGDNN_ILUVATAR_TRITON_JIT_DIR应指向包含TritonJITConfig.cmake的目录。安装
批量测试
更多测试说明见功能与性能验证。
THEAD(阿里平头哥)
环境要求
2.1.0-a5f865、acDNN header/runtime1400。libtriton_jit需 3.25)、 Ninja、支持 C++20 的编译器、Python 及对应开发头文件;当前验证使用 Python 3.12。 检查 SDK 动态库还需要readelf和nm(或对应的 LLVM 工具)。0.7.0+ppu.git22f4ff0e, 对应 Triton API3.6.0。libtriton_jit,使用 PPU SDK 的 CUDA 兼容环境构建,且与所选 Python、PyTorch 的 ABI 一致。THEAD 当前使用libtriton_jit执行 Triton kernel。依赖的编译和安装方法请参考:
flagtree,对外提供的 Python 模块仍名为triton,因此代码使用import triton; 无需另装上游 Triton。libtriton_jit:编译时设置-DBACKEND=CUDA,使用 PPU SDK 的 CUDA 兼容头文件和动态库;需保留动态库、 头文件、编译脚本和TritonJITConfig.cmake。默认从
/usr/local/PPU_SDK查找 SDK,从 FlagDNN 同级的libtriton_jit目录查找 JIT 依赖;FlagTree 路径由所选 Python 环境自动发现。 功能和性能测试严格使用同一 PPU SDK 中的 acDNN 作为参考。编译
在已安装 PPU 版 FlagTree 及上述依赖的 Python 环境中,于 FlagDNN 根目录执行。 可直接使用系统 Python,无需创建或激活虚拟环境:
该命令以
Release模式编译 FlagDNN,并同时构建功能测试和性能测试。显式指定 Python、PPU SDK、
libtriton_jit和 FlagTree 路径:FLAGDNN_THEAD_TRITON_JIT_ROOT可指向已构建的源码仓库根目录或完整安装前缀。FLAGDNN_THEAD_TRITON_ROOT应指向同时包含triton/和对应发行包元数据的 Python 包根目录,通常为site-packages;可省略此参数以自动发现。--python也可指定系统 Python(例如/usr/local/bin/python3),无需激活虚拟环境。 解释器与 FlagTree 包目录可以分别选择;所选 Python 仍需能导入 PPU 版 PyTorch 及其余依赖。安装
批量测试
在与编译时一致的 Python 环境中执行:
通用测试说明见 功能与性能验证。
MThreads(摩尔线程)
环境要求
libtriton_jit需 3.25)、 Ninja、支持 C++20 的编译器、Python 3.10+ 及 Python 开发头文件。torch_musa、支持 MUSA 后端的 FlagTree、PyYAML、NumPy、packaging 和 pybind11。libtriton_jit,以及可从PATH找到的mcc、patchelf和readelf。依赖的编译和安装方法请参考:
mtgpu)后端, 提供tritonPython 模块,无需单独安装 Triton。libtriton_jit:编译时设置-DBACKEND=MUSA,安装动态库、头文件、脚本和 CMake 配置文件。请选择与当前 MUSA 兼容的依赖版本,并在编译和运行测试前激活对应的 Python 环境。 确保 MUSA、Torch/MKL 及
libtriton_jit所依赖的其他动态库可被加载;环境变量 配置示例见摩尔线程适配设计。编译
在 FlagDNN 根目录执行,以下示例假设 MUSA 安装在
/usr/local/musa,MUSA 版libtriton_jit安装在/usr/local:该命令以
Release模式编译 FlagDNN,并同时构建功能测试和性能测试。FLAGDNN_MTHREADS_MUSA_ROOT和FLAGDNN_MTHREADS_TRITON_JIT_DIR均须显式 指定,后者应指向包含TritonJITConfig.cmake的目录。若依赖安装在其他位置, 请调整上述路径;指定 Python 时,在--前添加--python /path/to/python3。安装
批量测试
Ascend(昇腾)
环境要求
>= 9.0且< 10.0)。支持的设备型号见 Ascend 能力配置中的codegen_arches。libascendcl.so和libruntime.so;功能测试和性能测试 还依赖同一 CANN 安装中的 ACLNN 头文件、libnnopbase.so、libopapi_math.so和libopapi_nn.so。libtriton_jit需 3.25)、 Ninja、支持 C++20 的编译器、Python 3 及 Python 开发头文件和动态库; 检查动态库依赖还需要readelf。torch_npu、支持 Ascend 后端的 FlagTree、PyYAML、NumPy、packaging 和 pybind11。libtriton_jit,以及配套的头文件、standalone_compile.py和 CMake 配置文件。其链接的 Python 动态库必须与 FlagDNN 编译时选择的 Python 一致。依赖的编译和安装方法请参考:
tritonPython 模块,无需单独安装 Triton。libtriton_jit:编译时设置-DBACKEND=NPU,并使用与 FlagDNN 相同的 Python 环境。FlagDNN 从
ASCEND_HOME_PATH或ASCEND_TOOLKIT_HOME获取 CANN 路径,也可在 编译时显式指定CANN_ROOT。建议将 FlagDNN 与libtriton_jit放在同一级目录, 默认会尝试从../libtriton_jit/build查找 NPU 版libtriton_jit。编译
在 FlagDNN 根目录执行:
该命令以
Release模式编译 FlagDNN,并同时构建功能测试和性能测试。 Ascend 后端仅支持默认的libtriton_jit执行引擎。若依赖安装在其他位置, 可显式指定 Python、CANN 和libtriton_jit路径:CANN_ROOT应为 CANN 安装目录的绝对路径;TritonJIT_DIR应指向包含TritonJITConfig.cmake的目录,已安装的包通常为<prefix>/lib/cmake/TritonJIT。 若无法自动找到配套的standalone_compile.py,可在--后追加-DFLAGDNN_TRITON_JIT_STANDALONE_COMPILER=/path/to/standalone_compile.py。安装
安装后的 SDK 仍依赖兼容的 CANN 和构建时选定的 Python 环境;功能测试和性能测试 保留在构建目录中,不随 SDK 安装。
批量测试
更多测试说明见功能与性能验证。