Name: triton-cpu
Version: 3.2.0
Release: 1
Summary: A CPU backend for Triton.
License: MIT
URL: https://atomgit.com/openeuler/triton-cpu/
Source0: https://raw.atomgit.com/openeuler/triton-cpu/archive/refs/heads/%{name}-%{version}-v1.tar.gz
Source1: triton-downloads.tar.gz
Source2: llvm-project.tar.gz
Patch0: 0001-TritonShared-Generate-a-new-SME-pipeline.patch
Patch1: 0002-Fix-error-when-running-sme-Flaggems-test.patch
Patch2: 0003-Set-default-env-vars-for-openEuler.patch
ExclusiveArch: aarch64
BuildRequires: python3-devel, python3-pip, python3-wheel, python3-lit, python3-pybind11, python3-numpy
BuildRequires: python3-setuptools >= 40.8.0
BuildRequires: cmake >= 3.18, cmake < 4.0
BuildRequires: ninja-build >= 1.11.1
BuildRequires: zlib-devel, patchelf
BuildRequires: clang, compiler-rt, chrpath
Requires: llvm-toolset-20, llvm-toolset-20-openmp, llvm-toolset-20-compiler-rt, llvm-toolset-20-llvm-mlir-devel
%description
Triton-CPU is a branch to build a CPU backend for Triton.
%global debug_package %{nil}
%prep
tar -zxf %{_sourcedir}/%{name}-%{version}-v1.tar.gz
mv %{name}-2403-SP4-RC0 %{name}
tar -zxf %{_sourcedir}/triton-downloads.tar.gz
pip install .triton/nanobind-2.12.0-py3-none-any.whl
mkdir %{name}/third_party/nvidia/backend/bin
cp -r .triton/nvidia/bin/* %{name}/third_party/nvidia/backend/bin
mkdir %{name}/third_party/nvidia/backend/include
cp -r .triton/nvidia/include/* %{name}/third_party/nvidia/backend/include
cp -r .triton/sleef/ %{name}/third_party/
tar -zxf %{_sourcedir}/llvm-project.tar.gz
mv llvm-project-2403-SP4-RC0 llvm-project
cd %{name}
%patch -P 0 -p1
%patch -P 1 -p1
%patch -P 2 -p1
%build
cd %{_builddir}/llvm-project/
mkdir build && cd build
cmake -G Ninja -DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON ../llvm -DLLVM_ENABLE_PROJECTS="mlir;llvm;clang;clang-tools-extra;lld;compiler-rt;openmp" -DLLVM_TARGETS_TO_BUILD="NVPTX;AMDGPU;AArch64" -DCMAKE_INSTALL_PREFIX=../install -DMLIR_ENABLE_BINDINGS_PYTHON=ON -DPython3_EXECUTABLE=$(which python3) -DMLIR_INCLUDE_INTEGRATION_TESTS=ON -DLLVM_ENABLE_RTTI=ON -DBUILD_SHARED_LIBS=OFF -DLLVM_DEFAULT_TARGET_TRIPLE="aarch64-openEuler-linux"
ninja -j32
ninja install
%install
export LLVM_INSTALL_DIR=%{_builddir}/llvm-project/install
export LLVM_INCLUDE_DIRS=$LLVM_INSTALL_DIR/include
export LLVM_LIBRARY_DIR=$LLVM_INSTALL_DIR/lib
export LLVM_SYSPATH=$LLVM_INSTALL_DIR
export PATH=$LLVM_INSTALL_DIR/bin:$PATH
export PYTHONPATH=$LLVM_INSTALL_DIR/python_packages/mlir_core
export TRITON_BUILD_WITH_CLANG_LLD=true
export TRITON_HOME=%{_builddir}
export TRITON_PLUGIN_DIRS=$TRITON_HOME/triton-cpu/triton-shared
export TRITON_OFFLINE_BUILD=true
export PYBIND11_SYSPATH=$TRITON_HOME/.triton/pybind11/pybind11-2.13.1
export JSON_SYSPATH=$TRITON_HOME/.triton/json
cd %{_builddir}/%{name}
pip install python/ --no-build-isolation --prefix=%{buildroot}%{_prefix}
cp -r %{_builddir}/llvm-project/install/python_packages/mlir_core %{buildroot}%{_prefix}/lib64/python3.11/site-packages/triton/
find %{buildroot}/%{_prefix}/lib64/python3.11/site-packages/triton/mlir_core/mlir/_mlir_libs/ -name '*.so*' -exec patchelf --set-rpath '$ORIGIN' {} \;
cp %{_builddir}/triton-cpu/python/build/cmake.linux-aarch64-cpython-3.11/third_party/triton_shared/tools/triton-shared-opt/triton-shared-opt %{buildroot}%{_prefix}/bin
patchelf --set-rpath '$ORIGIN/../lib' %{buildroot}/%{_bindir}/triton-shared-opt
%files -n %{name}
%{_bindir}/proton
%{_bindir}/proton-viewer
%{_bindir}/triton-shared-opt
%{python3_sitearch}/triton-%{version}.dist-info
%{python3_sitearch}/triton
%changelog
* Tue May 26 2026 yuzhichao <yuzhichao9@huawei.com> - 3.2.0-1
- Add Triton shared backend and FlagGems
* Fri Jul 18 2025 huangkaiyao <huangkaiyao1@huawei.com> - 3.0.0-5
- Update LLVM to fix some failed testcases
* Wed Jul 2 2025 huangkaiyao <huangkaiyao1@huawei.com> - 3.0.0-4
- Fixed some failed testcases
* Thu May 29 2025 huangkaiyao <huangkaiyao1@huawei.com> - 3.0.0-3
- Add SME/SVE matrix operation support
* Tue May 20 2025 huangkaiyao <huangkaiyao1@huawei.com> - 3.0.0-2
- Move large files to git-lfs
* Fri May 9 2025 huangkaiyao <huangkaiyao1@huawei.com> - 3.0.0-1
- Package init