Windows 用のtriton をビルドして whl パッケージを自分で作成 途中経過

2024年9月24日

Windows 用のtriton は標準では提供されていないので自分でビルドして whl パッケージを作成してみました

mlir のライブラリの用意

triton

MagicAnimate と同じフォルダーに入れます

GitHub – openai/triton: Development repository for the Triton language and compiler

git はインストールされているものとします

git clone https://github.com/openai/triton.git
cd triton
python.exe -m venv venv 
venv\Scripts\activate

(venv) D:\WinPython\content\triton>

Microsoft C++ Build Tools のダウンロード インストール

Microsoft C++ Build Tools – Visual Studio

pip install ninja cmake wheel

今回はうまくいかなかったのでninja を使いません

Releases · ninja-build/ninja (github.com)

“D:\WinPython\content\triton\venv\Scripts\ninja.exe"

cd python

error C3487:’__int64′: すべての return 式は推論結果が同じでなければなりません。以前は 'long’ でした。

error C2664: 'mlir::RankedTensorType mlir::RankedTensorType::get(llvm::ArrayRef,mlir::Type,mlir::Attribute)’: 引数 1 を 'llvm:
:SmallVector’ から 'llvm::ArrayRef’ へ変換できません。

“D:\WinPython\content\triton\lib\Dialect\TritonGPU\Transforms\Pipeliner\MatmulLoopPipeline.cpp"を修正します


 // SmallVector<long int> sliceShape;
  SmallVector<  int64_t> sliceShape;

    if (!op)
 ///     return -1l;
      return  -1LL;

オーバーロードされた関数ですべての引数の型を変換できませんでした

“D:\WinPython\content\triton\lib\Conversion\TritonToTritonGPU\TritonToTritonGPUPass.cpp"を修正します

    auto numElements = product<int64_t>(origShape);
 //   auto numElements = product<long int>(origShape

“D:\WinPython\content\triton\include\triton\Dialect\Triton\IR\Dialect.h"

#include "mlir/IR/FunctionInterfaces.h"
// #include "mlir/Interfaces/FunctionInt

“D:\WinPython\content\triton\include\triton\Dialect\Triton\IR\TritonInterfaces.td"
“D:\WinPython\content\triton\include\triton\Dialect\Triton\IR\TritonOps.td"

include "mlir/IR/FunctionInterfaces.td" // FunctionOpInterface
//include "mlir/Interfaces/FunctionInterfaces.td" // FunctionOp

D:\WinPython\content\triton\lib\Analysis\Utility.cpp(761,28): error C2672: 'mlir::Operation::walk’: 一致するオーバーロードされた関数が
見つかりませんでした。 [D:\WinPython\content\triton\python\build\cmake.win-amd64-cpython-3.10\lib\Analysis\TritonAnalysis.vcxproj]
D:\WinPython\content\triton\lib\Analysis\Utility.cpp(824,7): error C2672: 'mlir::Operation::walk’: 一致するオーバーロ ードされた関数が見
つかりませんでした。 [D:\WinPython\content\triton\python\build\cmake.win-amd64-cpython-3.10\lib\Analysis\TritonAnalysis.vcxproj]
D:\WinPython\content\triton\lib\Analysis\Utility.cpp(843,11): error C2672: 'mlir::OpState::walk’: 一致するオーバーロードされた関数が見つ
かりませんでした。

pybind11のインストールとビルド

GitHub – pybind/pybind11: Seamless operability between C++11 and Python

“D:\WinPython\content\pybind11-2.11.1″にインストールしました

また"D:\WinPython\content\pybind11-2.11.1\include"配下のファイルを"D:\WinPython\content\triton\third_party\nvidia\pybind11″と"D:\WinPython\content\triton\third_party\amd\pybind11″にコピーします

“D:\WinPython\content\triton\python\setup.py"を修正します

        cmake_args = [
            "-G", """Visual Studio 17 2022""",
            "-DMLIR_DIR=D:\\WinPython\\content\\llvm-project\\build\\lib\\cmake\\mlir",
            "-DCMAKE_BUILD_TYPE=Release",
#            "-G", "Ninja",  # Ninja is much faster than make
#            "-DCMAKE_MAKE_PROGRAM=" +
#            ninja_dir,  # Pass explicit path to ninja otherwise cmake may cache a temporary path
#            file = tarfile.open(fileobj=open_url(p.url), mode="r|*")
#            file.extractall(path=package_root_dir)
            # write version url to package_dir
#            with open(os.path.join(package_dir, "version.txt"), "w") as f:
#                f.write(p.url)
def add_link_to_backends():
    return
    for backend in backends:
def download_and_copy(src_path, variable, version, url_func):
    return
    triton_cache_path = get_triton_cache_path()
#        thirdparty_cmake_args = get_thirdparty_packages()
        build_args = ["--config", "Release"]
        subprocess.check_call(["cmake", "--build", "."] + build_args, cwd=cmake_dir)

Toolkit のダウンロードとインストール

CUDA Toolkit 12.3 Update 2 Downloads | NVIDIA Developer

“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.3\bin"のファイルの全てを"D:\WinPython\content\triton\third_party\nvidia\backend"にコピー

D:\WinPython\content\triton\python\triton\backends\amd"フォルダー作成

python setup.py build
python setup.py bdist_wheel

完成しました

“D:\WinPython\content\triton\python\dist\triton-3.0.0-cp310-cp310-win_amd64.whl"

インストールするには

pip install  "D:\WinPython\content\triton\python\dist\triton-3.0.0-cp310-cp310-win_amd64.whl"

参考にアンインストール

pip uninstall triton

“D:\WinPython\content\triton\python\dist\triton-3.0.0-cp310-cp310-win_amd64.whl"別なフォルダーに移動して保存しておきます。不要になった"D:\WinPython\content\triton\ “D:\WinPython\settings.triton"フォルダーを削除します

うまくいったと思ったのですがダメでした

色々と修正が必要なようで次のサイトからダウンロードすることをおすすめします

triton-2.1.0-cp310-cp310-win_amd64.whl

triton-2.1.0-cp310-cp310-win_amd64.whl · Kefasu/triton at main (huggingface.co)

triton-3.0.0-cp311-cp311-win_amd64.whl

Release triton windows binaries and python wheels · ACGNnsj/triton-windows-build · GitHub

triton-2.1.0-cp311-cp311-win_amd64.whl

madbuda/triton-windows-builds at main (huggingface.co)

Python

Posted by eightban