Commit 5ed0e25b authored by Dennis Wuitz's avatar Dennis Wuitz Committed by SomeoneSerge
Browse files

python312Packages.triton*: repair package

parent b8e22218
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -11,6 +11,7 @@
, libedit
, libffi
, libpfm
, lit
, mpfr
, zlib
, ncurses
@@ -45,7 +46,7 @@ let
  isNative = stdenv.hostPlatform == stdenv.buildPlatform;
in stdenv.mkDerivation (finalAttrs: {
  pname = "triton-llvm";
  version = "17.0.0-c5dede880d17";
  version = "19.1.0-rc1"; # One of the tags at https://github.com/llvm/llvm-project/commit/10dc3a8e916d73291269e5e2b82dd22681489aa1

  outputs = [
    "out"
@@ -60,8 +61,8 @@ in stdenv.mkDerivation (finalAttrs: {
  src = fetchFromGitHub {
    owner = "llvm";
    repo = "llvm-project";
    rev = "c5dede880d175f7229c9b2923f4753e12702305d";
    hash = "sha256-v4r3+7XVFK+Dzxt/rErZNJ9REqFO3JmGN4X4vZ+77ew=";
    rev = "10dc3a8e916d73291269e5e2b82dd22681489aa1";
    hash = "sha256-9DPvcFmhzw6MipQeCQnr35LktW0uxtEL8axMMPXIfWw=";
  };

  nativeBuildInputs = [
@@ -74,6 +75,7 @@ in stdenv.mkDerivation (finalAttrs: {
    doxygen
    sphinx
    python3Packages.recommonmark
    python3Packages.myst-parser
  ];

  buildInputs = [
@@ -154,9 +156,11 @@ in stdenv.mkDerivation (finalAttrs: {
    rm test/tools/llvm-exegesis/AArch64/latency-by-opcode-name.s
  '';

  postInstall = lib.optionalString (!isNative) ''
  postInstall = ''
    cp ${lib.getExe lit} $out/bin/llvm-lit
  '' + (lib.optionalString (!isNative) ''
    cp -a NATIVE/bin/llvm-config $out/bin/llvm-config-native
  '';
  '');

  doCheck = buildTests;

+63 −11
Original line number Diff line number Diff line
From 10f3d49aa6084d1b9b9624017cce7df106b9fb7e Fri Jul 19 00:00:00 2024
From: derdennisop <just@patch.local>
Date: Fri, 19 jul 2024 00:00:00 +0100
Subject: [PATCH] ptxas: disable version key for non-cuda targets

---
 python/setup.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/python/setup.py b/python/setup.py
index 18764ec13..b3bb5b60a 100644
index d55972b4b..bd875a701 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -269,10 +269,6 @@ class CMakeBuild(build_ext):
         subprocess.check_call(["cmake", self.base_dir] + cmake_args, cwd=cmake_dir, env=env)
         subprocess.check_call(["cmake", "--build", "."] + build_args, cwd=cmake_dir)
@@ -437,54 +117,5 @@
 with open(nvidia_version_path, "r") as nvidia_version_file:
     NVIDIA_TOOLCHAIN_VERSION = nvidia_version_file.read().strip()

-download_and_copy(
-    name="ptxas",
-    src_path="bin/ptxas",
-    variable="TRITON_PTXAS_PATH",
-    version=NVIDIA_TOOLCHAIN_VERSION,
-    url_func=lambda arch, version:
-    f"https://anaconda.org/nvidia/cuda-nvcc/{version}/download/linux-{arch}/cuda-nvcc-{version}-0.tar.bz2",
-)
-download_and_copy(
-    name="cuobjdump",
-    src_path="bin/cuobjdump",
-    variable="TRITON_CUOBJDUMP_PATH",
-    version=NVIDIA_TOOLCHAIN_VERSION,
-    url_func=lambda arch, version:
-    f"https://anaconda.org/nvidia/cuda-cuobjdump/{version}/download/linux-{arch}/cuda-cuobjdump-{version}-0.tar.bz2",
-)
-download_and_copy(
-    name="nvdisasm",
-    src_path="bin/nvdisasm",
-    variable="TRITON_NVDISASM_PATH",
-    version=NVIDIA_TOOLCHAIN_VERSION,
-    url_func=lambda arch, version:
-    f"https://anaconda.org/nvidia/cuda-nvdisasm/{version}/download/linux-{arch}/cuda-nvdisasm-{version}-0.tar.bz2",
-)
-download_and_copy(
-    name="cudacrt",
-    src_path="include",
-    variable="TRITON_CUDACRT_PATH",
-    version=NVIDIA_TOOLCHAIN_VERSION,
-    url_func=lambda arch, version:
-    f"https://anaconda.org/nvidia/cuda-nvcc/{version}/download/linux-{arch}/cuda-nvcc-{version}-0.tar.bz2",
-)
-download_and_copy(
-    name="cudart",
-    src_path="include",
-    variable="TRITON_CUDART_PATH",
-    version=NVIDIA_TOOLCHAIN_VERSION,
-    url_func=lambda arch, version:
-    f"https://anaconda.org/nvidia/cuda-cudart-dev/{version}/download/linux-{arch}/cuda-cudart-dev-{version}-0.tar.bz2",
-)
-download_and_copy(
-    name="cupti",
-    src_path="include",
-    variable="TRITON_CUPTI_PATH",
-    version=NVIDIA_TOOLCHAIN_VERSION,
-    url_func=lambda arch, version:
-    f"https://anaconda.org/nvidia/cuda-cupti/{version}/download/linux-{arch}/cuda-cupti-{version}-0.tar.bz2",
-)
-
-download_and_copy_ptxas()
-
-
 setup(
     name="triton",
     version="2.1.0",
 backends = [*BackendInstaller.copy(["nvidia", "amd"]), *BackendInstaller.copy_externals()]
+0 −27
Original line number Diff line number Diff line
From 10f3d49aa6084d1b9b9624017cce7df106b9fb7e Mon Sep 17 00:00:00 2001
From: Yaroslav Bolyukin <iam@lach.pw>
Date: Tue, 6 Feb 2024 13:51:28 +0100
Subject: [PATCH] ptxas: disable version key for non-cuda targets

---
 python/triton/runtime/jit.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/python/triton/runtime/jit.py b/python/triton/runtime/jit.py
index d55972b4b..bd875a701 100644
--- a/python/triton/runtime/jit.py
+++ b/python/triton/runtime/jit.py
@@ -117,8 +117,8 @@ def version_key():
         with open(lib.module_finder.find_spec(lib.name).origin, "rb") as f:
             contents += [hashlib.md5(f.read()).hexdigest()]
     # ptxas version
-    ptxas = path_to_ptxas()[0]
-    ptxas_version = hashlib.md5(subprocess.check_output([ptxas, "--version"])).hexdigest()
+    # ptxas = path_to_ptxas()[0]
+    ptxas_version = "noptxas"
     return '-'.join(TRITON_VERSION) + '-' + ptxas_version + '-' + '-'.join(contents)
 
 
-- 
2.43.0
+2 −5
Original line number Diff line number Diff line
@@ -5,11 +5,8 @@
  cudaPackages,
  buildPythonPackage,
  fetchurl,
  isPy38,
  isPy39,
  isPy310,
  isPy311,
  python,
  pythonOlder,
  autoPatchelfHook,
  filelock,
  lit,
@@ -29,7 +26,7 @@ buildPythonPackage rec {
    in
    fetchurl srcs;

  disabled = !(isPy38 || isPy39 || isPy310 || isPy311);
  disabled = pythonOlder "3.8";

  pythonRemoveDeps = [
    "cmake"
+46 −92
Original line number Diff line number Diff line
{
  lib,
  config,
  addDriverRunpath,
  buildPythonPackage,
  fetchFromGitHub,
  setuptools,
  cmake,
  ninja,
  pybind11,
  config,
  cudaPackages,
  fetchFromGitHub,
  filelock,
  gtest,
  zlib,
  ncurses,
  libxml2,
  lit,
  llvm,
  filelock,
  torchWithRocm,
  ncurses,
  ninja,
  pybind11,
  python,

  runCommand,

  cudaPackages,
  setuptools,
  torchWithRocm,
  zlib,
  cudaSupport ? config.cudaSupport,
}:

let
  ptxas = lib.getExe' cudaPackages.cuda_nvcc "ptxas"; # Make sure cudaPackages is the right version each update (See python/setup.py)
in
buildPythonPackage rec {
buildPythonPackage {
  pname = "triton";
  version = "3.0.0";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "triton-lang";
    repo = pname;
    repo = "triton";
    # latest branch commit from https://github.com/triton-lang/triton/commits/release/3.0.x/
    rev = "91f24d87e50cb748b121a6c24e65a01187699c22";
    hash = "sha256-L5KqiR+TgSyKjEBlkE0yOU1pemMHFk2PhEmxLdbbxUU=";
  };

  patches =
    [
      # Upstream startded pinning CUDA version and falling back to downloading from Conda
      # in https://github.com/triton-lang/triton/pull/1574/files#diff-eb8b42d9346d0a5d371facf21a8bfa2d16fb49e213ae7c21f03863accebe0fcfR120-R123
      ./0000-dont-download-ptxas.patch
    ]
    ++ lib.optionals (!cudaSupport) [
      # triton wants to get ptxas version even if ptxas is not
      # used, resulting in ptxas not found error.
      ./0001-ptxas-disable-version-key-for-non-cuda-targets.patch
    ];
  # triton wants to download every dependency, even if we are not using cuda.
  patches = lib.optionals (!cudaSupport) [ ./0000-dont-download-ptxas.patch ];

  postPatch =
    let
      quote = x: ''"${x}"'';
      subs.ldFlags =
        let
          # Bash was getting weird without linting,
          # but basically upstream contains [cc, ..., "-lcuda", ...]
          # and we replace it with [..., "-lcuda", "-L/run/opengl-driver/lib", "-L$stubs", ...]
          old = [ "-lcuda" ];
          new = [
            "-lcuda"
            "-L${addDriverRunpath.driverLink}"
            "-L${cudaPackages.cuda_cudart}/lib/stubs/"
          ];
        in
        {
          oldStr = lib.concatMapStringsSep ", " quote old;
          newStr = lib.concatMapStringsSep ", " quote new;
        };
    in
    ''
      # Use our `cmakeFlags` instead and avoid downloading dependencies
      # remove any downloads
      substituteInPlace python/setup.py \
        --replace "= get_thirdparty_packages(triton_cache_path)" "= os.environ[\"cmakeFlags\"].split()"

      # Already defined in llvm, when built with -DLLVM_INSTALL_UTILS
      substituteInPlace bin/CMakeLists.txt \
        --replace "add_subdirectory(FileCheck)" ""
        --replace-fail "get_json_package_info(), get_pybind11_package_info()" ""\
        --replace-fail "get_pybind11_package_info(), get_llvm_package_info()" ""\
        --replace-fail 'packages += ["triton/profiler"]' ""\
        --replace-fail "curr_version != version" "False"

      # Don't fetch googletest
      substituteInPlace unittest/CMakeLists.txt \
        --replace "include (\''${CMAKE_CURRENT_SOURCE_DIR}/googletest.cmake)" ""\
        --replace "include(GoogleTest)" "find_package(GTest REQUIRED)"

      cat << \EOF >> python/triton/common/build.py
      def libcuda_dirs():
          return [ "${addDriverRunpath.driverLink}/lib" ]
      EOF
    ''
    + lib.optionalString cudaSupport ''
      # Use our linker flags
      substituteInPlace python/triton/common/build.py \
        --replace '${subs.ldFlags.oldStr}' '${subs.ldFlags.newStr}'
        --replace-fail "include (\''${CMAKE_CURRENT_SOURCE_DIR}/googletest.cmake)" ""\
        --replace-fail "include(GoogleTest)" "find_package(GTest REQUIRED)"
    '';

  nativeBuildInputs = [
@@ -133,8 +89,7 @@ buildPythonPackage rec {
  ];

  # Avoid GLIBCXX mismatch with other cuda-enabled python packages
  preConfigure =
    ''
  preConfigure = ''
    # Ensure that the build process uses the requested number of cores
    export MAX_JOBS="$NIX_BUILD_CORES"

@@ -148,25 +103,24 @@ buildPythonPackage rec {

    # The rest (including buildPhase) is relative to ./python/
    cd python
    ''
    + lib.optionalString cudaSupport ''
      export CC=${cudaPackages.backendStdenv.cc}/bin/cc;
      export CXX=${cudaPackages.backendStdenv.cc}/bin/c++;

      # Work around download_and_copy_ptxas()
      mkdir -p $PWD/triton/third_party/cuda/bin
      ln -s ${ptxas} $PWD/triton/third_party/cuda/bin
  '';

  env = {
    TRITON_BUILD_PROTON = "OFF";
  } // lib.optionalAttrs cudaSupport {
    CC = "${cudaPackages.backendStdenv.cc}/bin/cc";
    CXX = "${cudaPackages.backendStdenv.cc}/bin/c++";

    TRITON_PTXAS_PATH = lib.getExe' cudaPackages.cuda_nvcc "ptxas"; # Make sure cudaPackages is the right version each update (See python/setup.py)
    TRITON_CUOBJDUMP_PATH = cudaPackages.cuda_cuobjdump;
    TRITON_NVDISASM_PATH = cudaPackages.cuda_nvdisasm;
    TRITON_CUDACRT_PATH = cudaPackages.cuda_nvcc;
    TRITON_CUDART_PATH = cudaPackages.cuda_cudart;
    TRITON_CUPTI_PATH = cudaPackages.cuda_cupti;
  };

  # CMake is run by setup.py instead
  dontUseCmakeConfigure = true;

  # Setuptools (?) strips runpath and +x flags. Let's just restore the symlink
  postFixup = lib.optionalString cudaSupport ''
    rm -f $out/${python.sitePackages}/triton/third_party/cuda/bin/ptxas
    ln -s ${ptxas} $out/${python.sitePackages}/triton/third_party/cuda/bin/ptxas
  '';

  checkInputs = [ cmake ]; # ctest
  dontUseSetuptoolsCheck = true;

Loading