diff --git a/README.md b/README.md index 084cf900c..d00b70351 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## FlagTree -FlagTree is an open source, unified compiler for multiple AI chips project dedicated to developing a diverse ecosystem of AI chip compilers and related tooling platforms, thereby fostering and strengthening the upstream and downstream Triton ecosystem. Currently in its initial phase, the project aims to maintain compatibility with existing adaptation solutions while unifying the codebase to rapidly implement single-version multi-backend support. +FlagTree is an open source, unified compiler for multiple AI chips project dedicated to developing a diverse ecosystem of AI chip compilers and related tooling platforms, thereby fostering and strengthening the upstream and downstream Triton ecosystem. Currently in its initial phase, the project aims to maintain compatibility with existing adaptation solutions while unifying the codebase to rapidly implement single-repository multi-backend support. For upstream model users, it provides unified compilation capabilities across multiple backends; for downstream chip manufacturers, it offers examples of Triton ecosystem integration. ## Install from source Installation dependencies (ensure you use the correct python3.x version): @@ -28,7 +28,9 @@ Complete build commands for each backend: # Recommended: Use Ubuntu 20.04 mkdir -p ~/.flagtree/iluvatar; cd ~/.flagtree/iluvatar wget https://github.com/FlagTree/flagtree/releases/download/v0.1.0-build-deps/iluvatar-llvm18-x86_64.tar.gz +tar zxvf iluvatar-llvm18-x86_64.tar.gz wget https://github.com/FlagTree/flagtree/releases/download/v0.1.0-build-deps/iluvatarTritonPlugin-cpython3.10-glibc2.30-glibcxx3.4.28-cxxabi1.3.12-ubuntu-x86_64.tar.gz +tar zxvf iluvatarTritonPlugin-cpython3.10-glibc2.30-glibcxx3.4.28-cxxabi1.3.12-ubuntu-x86_64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/python export FLAGTREE_BACKEND=iluvatar python3 -m pip install . --no-build-isolation -v @@ -39,7 +41,9 @@ python3 -m pip install . --no-build-isolation -v # Contact kunlunxin-support@baidu.com for support mkdir -p ~/.flagtree/xpu; cd ~/.flagtree/xpu wget https://github.com/FlagTree/flagtree/releases/download/v0.1.0-build-deps/XTDK-llvm19-ubuntu2004_x86_64.tar.gz +tar zxvf XTDK-llvm19-ubuntu2004_x86_64.tar.gz wget https://github.com/FlagTree/flagtree/releases/download/v0.1.0-build-deps/xre-Linux-x86_64.tar.gz +tar zxvf xre-Linux-x86_64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/python export FLAGTREE_BACKEND=xpu python3 -m pip install . --no-build-isolation -v @@ -49,6 +53,7 @@ python3 -m pip install . --no-build-isolation -v # Recommended: Use the Dockerfile flagtree/dockerfiles/Dockerfile-ubuntu22.04-python3.10-mthreads mkdir -p ~/.flagtree/mthreads; cd ~/.flagtree/mthreads wget https://github.com/FlagTree/flagtree/releases/download/v0.1.0-build-deps/mthreads-llvm19-glibc2.34-glibcxx3.4.30-x64.tar.gz +tar zxvf mthreads-llvm19-glibc2.34-glibcxx3.4.30-x64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/python export FLAGTREE_BACKEND=mthreads python3 -m pip install . --no-build-isolation -v @@ -58,6 +63,7 @@ python3 -m pip install . --no-build-isolation -v # Recommended: Use Ubuntu 20.04 mkdir -p ~/.flagtree/aipu; cd ~/.flagtree/aipu wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-a66376b0-ubuntu-x64.tar.gz +tar zxvf llvm-a66376b0-ubuntu-x64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/ git checkout -b triton_v3.3.x origin/triton_v3.3.x export FLAGTREE_BACKEND=aipu @@ -68,6 +74,7 @@ python3 -m pip install . --no-build-isolation -v # Recommended: Use Ubuntu 20.04 mkdir -p ~/.flagtree/tsingmicro; cd ~/.flagtree/tsingmicro wget https://github.com/FlagTree/flagtree/releases/download/v0.2.0-build-deps/tsingmicro-llvm21-glibc2.30-glibcxx3.4.28-x64.tar.gz +tar zxvf tsingmicro-llvm21-glibc2.30-glibcxx3.4.28-x64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/ git checkout -b triton_v3.3.x origin/triton_v3.3.x export FLAGTREE_BACKEND=tsingmicro @@ -86,28 +93,28 @@ chmod +x Atlas-A3-cann-kernels_8.1.RC1_linux-aarch64.run # build mkdir -p ~/.flagtree/ascend; cd ~/.flagtree/ascend wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-b5cc222d-ubuntu-arm64.tar.gz +tar zxvf llvm-b5cc222d-ubuntu-arm64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/python git checkout -b triton_v3.2.x origin/triton_v3.2.x export FLAGTREE_BACKEND=ascend python3 -m pip install . --no-build-isolation -v ``` -To build with default backends (nvidia, amd, triton_shared): +To build with default backends nvidia, amd, triton_shared (cpu): ```shell # manually download LLVM cd ${YOUR_LLVM_DOWNLOAD_DIR} wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-10dc3a8e-ubuntu-x64.tar.gz -tar -zxvf llvm-10dc3a8e-ubuntu-x64.tar.gz +tar zxvf llvm-10dc3a8e-ubuntu-x64.tar.gz # build cd ${YOUR_CODE_DIR}/flagtree/python -export LLVM_BUILD_DIR=${YOUR_LLVM_DOWNLOAD_DIR}/llvm-10dc3a8e-ubuntu-x64 -export LLVM_INCLUDE_DIRS=$LLVM_BUILD_DIR/include -export LLVM_LIBRARY_DIR=$LLVM_BUILD_DIR/lib -export LLVM_SYSPATH=$LLVM_BUILD_DIR +export LLVM_SYSPATH=${YOUR_LLVM_DOWNLOAD_DIR}/llvm-10dc3a8e-ubuntu-x64 +export LLVM_INCLUDE_DIRS=$LLVM_SYSPATH/include +export LLVM_LIBRARY_DIR=$LLVM_SYSPATH/lib unset FLAGTREE_BACKEND python3 -m pip install . --no-build-isolation -v # If you need to build other backends afterward, you should clear LLVM-related environment variables -unset LLVM_BUILD_DIR LLVM_INCLUDE_DIRS LLVM_LIBRARY_DIR LLVM_SYSPATH +unset LLVM_SYSPATH LLVM_INCLUDE_DIRS LLVM_LIBRARY_DIR ``` ## Running tests diff --git a/README_cn.md b/README_cn.md index 359b1ce86..32edc72aa 100644 --- a/README_cn.md +++ b/README_cn.md @@ -2,7 +2,7 @@ ## FlagTree -FlagTree 是面向多种 AI 芯片的开源、统一编译器。FlagTree 致力于打造多元 AI 芯片编译器及相关工具平台,发展和壮大 Triton 上下游生态。项目当前处于初期,目标是兼容现有适配方案,统一代码仓库,快速实现单版本多后端支持。 +FlagTree 是面向多种 AI 芯片的开源、统一编译器。FlagTree 致力于打造多元 AI 芯片编译器及相关工具平台,发展和壮大 Triton 上下游生态。项目当前处于初期,目标是兼容现有适配方案,统一代码仓库,快速实现单仓库多后端支持。对于上游模型用户,提供多后端的统一编译能力;对于下游芯片厂商,提供 Triton 生态接入范例。 ## 从源代码安装 安装依赖(注意使用正确的 python3.x 执行): @@ -20,15 +20,17 @@ python3 -m pip install . --no-build-isolation -v ## 构建技巧 -自动下载依赖库的速度可能受限于网络环境,编译前可自行下载至缓存目录 ~/.flagtree(可通过环境变量 FLAGTREE_CACHE_DIR 修改),无需自行设置 LLVM_BUILD_DIR 等环境变量。 -各后端完整编译命令如下: +自动下载依赖库的速度可能受限于网络环境,编译前可自行下载至缓存目录 ~/.flagtree(可通过环境变量 FLAGTREE_CACHE_DIR 修改),无需自行设置 LLVM_BUILD_DIR 等环境变量。
+各后端完整编译命令如下:
[iluvatar](/third_party/iluvatar/) ```shell # 推荐使用镜像 Ubuntu 20.04 mkdir -p ~/.flagtree/iluvatar; cd ~/.flagtree/iluvatar wget https://github.com/FlagTree/flagtree/releases/download/v0.1.0-build-deps/iluvatar-llvm18-x86_64.tar.gz +tar zxvf iluvatar-llvm18-x86_64.tar.gz wget https://github.com/FlagTree/flagtree/releases/download/v0.1.0-build-deps/iluvatarTritonPlugin-cpython3.10-glibc2.30-glibcxx3.4.28-cxxabi1.3.12-ubuntu-x86_64.tar.gz +tar zxvf iluvatarTritonPlugin-cpython3.10-glibc2.30-glibcxx3.4.28-cxxabi1.3.12-ubuntu-x86_64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/python export FLAGTREE_BACKEND=iluvatar python3 -m pip install . --no-build-isolation -v @@ -39,7 +41,9 @@ python3 -m pip install . --no-build-isolation -v # 联系 kunlunxin-support@baidu.com 可获取进一步支持 mkdir -p ~/.flagtree/xpu; cd ~/.flagtree/xpu wget https://github.com/FlagTree/flagtree/releases/download/v0.1.0-build-deps/XTDK-llvm19-ubuntu2004_x86_64.tar.gz +tar zxvf XTDK-llvm19-ubuntu2004_x86_64.tar.gz wget https://github.com/FlagTree/flagtree/releases/download/v0.1.0-build-deps/xre-Linux-x86_64.tar.gz +tar zxvf xre-Linux-x86_64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/python export FLAGTREE_BACKEND=xpu python3 -m pip install . --no-build-isolation -v @@ -49,6 +53,7 @@ python3 -m pip install . --no-build-isolation -v # 推荐使用镜像 flagtree/dockerfiles/Dockerfile-ubuntu22.04-python3.10-mthreads mkdir -p ~/.flagtree/mthreads; cd ~/.flagtree/mthreads wget https://github.com/FlagTree/flagtree/releases/download/v0.1.0-build-deps/mthreads-llvm19-glibc2.34-glibcxx3.4.30-x64.tar.gz +tar zxvf mthreads-llvm19-glibc2.34-glibcxx3.4.30-x64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/python export FLAGTREE_BACKEND=mthreads python3 -m pip install . --no-build-isolation -v @@ -58,6 +63,7 @@ python3 -m pip install . --no-build-isolation -v # 推荐使用镜像 Ubuntu 20.04 mkdir -p ~/.flagtree/aipu; cd ~/.flagtree/aipu wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-a66376b0-ubuntu-x64.tar.gz +tar zxvf llvm-a66376b0-ubuntu-x64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/ git checkout -b triton_v3.3.x origin/triton_v3.3.x export FLAGTREE_BACKEND=aipu @@ -68,6 +74,7 @@ python3 -m pip install . --no-build-isolation -v # 推荐使用镜像 Ubuntu 20.04 mkdir -p ~/.flagtree/tsingmicro; cd ~/.flagtree/tsingmicro wget https://github.com/FlagTree/flagtree/releases/download/v0.2.0-build-deps/tsingmicro-llvm21-glibc2.30-glibcxx3.4.28-x64.tar.gz +tar zxvf tsingmicro-llvm21-glibc2.30-glibcxx3.4.28-x64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/ git checkout -b triton_v3.3.x origin/triton_v3.3.x export FLAGTREE_BACKEND=tsingmicro @@ -77,7 +84,8 @@ python3 -m pip install . --no-build-isolation -v ```shell # 推荐使用镜像 flagtree/dockerfiles/Dockerfile-ubuntu20.04-python3.9-ascend # 在 https://www.hiascend.com/developer/download/community/result?module=cann -# 注册账号后下载对应平台的 cann-toolkit、cann-kernels,这里以 AArch64 架构的 A3 处理器为例展示如何安装 +# 注册账号后下载对应平台的 cann-toolkit、cann-kernels +# 这里以 AArch64 架构的 A3 处理器为例展示如何安装 chmod +x Ascend-cann-toolkit_8.2.RC1.alpha002_linux-aarch64.run ./Ascend-cann-toolkit_8.2.RC1.alpha002_linux-aarch64.run --install chmod +x Atlas-A3-cann-kernels_8.1.RC1_linux-aarch64.run @@ -85,27 +93,28 @@ chmod +x Atlas-A3-cann-kernels_8.1.RC1_linux-aarch64.run # 编译安装 mkdir -p ~/.flagtree/ascend; cd ~/.flagtree/ascend wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-b5cc222d-ubuntu-arm64.tar.gz +tar zxvf llvm-b5cc222d-ubuntu-arm64.tar.gz cd ${YOUR_CODE_DIR}/flagtree/python +git checkout -b triton_v3.2.x origin/triton_v3.2.x export FLAGTREE_BACKEND=ascend python3 -m pip install . --no-build-isolation -v ``` -使用默认的编译命令,可以编译安装 nvidia、amd、triton_shared 后端: +使用默认的编译命令,可以编译安装 nvidia、amd、triton_shared (cpu) 后端: ```shell # 自行下载 llvm cd ${YOUR_LLVM_DOWNLOAD_DIR} wget https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-10dc3a8e-ubuntu-x64.tar.gz -tar -zxvf llvm-10dc3a8e-ubuntu-x64.tar.gz +tar zxvf llvm-10dc3a8e-ubuntu-x64.tar.gz # 编译安装 cd ${YOUR_CODE_DIR}/flagtree/python -export LLVM_BUILD_DIR=${YOUR_LLVM_DOWNLOAD_DIR}/llvm-10dc3a8e-ubuntu-x64 -export LLVM_INCLUDE_DIRS=$LLVM_BUILD_DIR/include -export LLVM_LIBRARY_DIR=$LLVM_BUILD_DIR/lib -export LLVM_SYSPATH=$LLVM_BUILD_DIR +export LLVM_SYSPATH=${YOUR_LLVM_DOWNLOAD_DIR}/llvm-10dc3a8e-ubuntu-x64 +export LLVM_INCLUDE_DIRS=$LLVM_SYSPATH/include +export LLVM_LIBRARY_DIR=$LLVM_SYSPATH/lib unset FLAGTREE_BACKEND python3 -m pip install . --no-build-isolation -v # 如果接下来需要编译安装其他后端,应清空 LLVM 相关环境变量 -unset LLVM_BUILD_DIR LLVM_INCLUDE_DIRS LLVM_LIBRARY_DIR LLVM_SYSPATH +unset LLVM_SYSPATH LLVM_INCLUDE_DIRS LLVM_LIBRARY_DIR ``` ## 运行测试 diff --git a/python/setup_tools/setup_helper.py b/python/setup_tools/setup_helper.py index eb6e1d94d..7661b623b 100644 --- a/python/setup_tools/setup_helper.py +++ b/python/setup_tools/setup_helper.py @@ -431,7 +431,7 @@ def check_env(env_val): # ascend cache.store( - file="ascend-llvm-b5cc222d-ubuntu-arm64", + file="llvm-b5cc222d-ubuntu-arm64", condition=("ascend" == flagtree_backend), url="https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-b5cc222d-ubuntu-arm64.tar.gz", pre_hock=lambda: check_env('LLVM_SYSPATH'), @@ -440,7 +440,7 @@ def check_env(env_val): # aipu cache.store( - file="aipu-llvm-a66376b0-ubuntu-x64", + file="llvm-a66376b0-ubuntu-x64", condition=("aipu" == flagtree_backend), url="https://oaitriton.blob.core.windows.net/public/llvm-builds/llvm-a66376b0-ubuntu-x64.tar.gz", pre_hock=lambda: check_env('LLVM_SYSPATH'), diff --git a/python/setup_tools/utils/__init__.py b/python/setup_tools/utils/__init__.py index 190fc98e0..2600a9512 100644 --- a/python/setup_tools/utils/__init__.py +++ b/python/setup_tools/utils/__init__.py @@ -17,10 +17,7 @@ class FlagTreeBackend: tag="380b87122c88af131530903a702d5318ec59bb33"), FlagTreeBackend(name="cambricon", url="https://github.com/Cambricon/triton-linalg.git", tag="00f51c2e48a943922f86f03d58e29f514def646d"), - FlagTreeBackend( - name="ascend", - url="https://gitee.com/ascend/triton-ascend.git", - ), + FlagTreeBackend(name="ascend", url="https://gitee.com/ascend/triton-ascend.git"), )