rocmPackages: 6.4.3 -> 7.0.2 (#469378)

This commit is contained in:
Luna
2026-01-18 04:13:52 +00:00
committed by GitHub
106 changed files with 796 additions and 655 deletions
@@ -67,6 +67,8 @@ of pulling the upstream container image from Docker Hub. If you want the old beh
- `services.cgit` before always had the git-http-backend and its "export all" setting enabled, which sidestepped any access control configured in cgit's settings. Now you have to make a decision and either enable or disable `services.cgit.gitHttpBackend.checkExportOkFiles` (or disable the git-http-backend).
- `rocmPackages_6` has been removed. `rocmPackages` has been updated to ROCm 7.x. Out of tree packages may rely on obsolete hipblas APIs or compile time constant warp size and need to be updated.
- The Bash implementation of the `nixos-rebuild` program is removed. All switchable systems now use the Python rewrite. Any prior usage of `system.rebuild.enableNg` must now be removed. If you have any outstanding issues with the new implementation, please open an issue on GitHub.
- `services.desktopManager.gnome` no longer installs the Geary e-mail client since it is not part of the GNOME [core applications](https://apps.gnome.org/) list. Geary's position in the default favorite apps section has been replaced by GNOME Text Editor. To keep it installed, add `programs.geary.enable = true;` to your configuration.
+1 -1
View File
@@ -92,7 +92,7 @@ let
${prepareRunCommands}
sudo nix-build --option extra-sandbox-paths '${sandboxPathsList}' ${lib.escapeShellArgs nixFlags} -A ${testPath} "$@"
sudo --preserve-env=NIXPKGS_ALLOW_UNFREE nix-build --option extra-sandbox-paths '${sandboxPathsList}' ${lib.escapeShellArgs nixFlags} -A ${testPath} "$@"
'';
in
# The main output is the run script, inject the derivation for the actual test
@@ -0,0 +1,72 @@
diff --git a/extern/hipew/include/hiprtew.h b/extern/hipew/include/hiprtew.h
index d245cb76..952ed805 100644
--- a/extern/hipew/include/hiprtew.h
+++ b/extern/hipew/include/hiprtew.h
@@ -157,7 +157,7 @@ typedef hiprtError (thiprtDestroyGlobalStackBuffer)( hiprtContext context, hiprt
typedef hiprtError(thiprtDestroyFuncTable)(hiprtContext context,
hiprtFuncTable funcTable);
-typedef void(thiprtSetLogLevel)( hiprtLogLevel level );
+typedef hiprtError(thiprtSetLogLevel)( hiprtContext context, hiprtLogLevel level );
/* Function declarations. */
extern thiprtCreateContext *hiprtCreateContext;
diff --git a/extern/hipew/src/hipew.c b/extern/hipew/src/hipew.c
index e72ccde6..138e1efc 100644
--- a/extern/hipew/src/hipew.c
+++ b/extern/hipew/src/hipew.c
@@ -241,13 +241,13 @@ static int hipewHipInit(void) {
/* ROCm 6 changes paths from /opt/rocm/hip/lib to /opt/rocm/lib, so
* search for libraries there. */
- const char* hip_paths[] = { "libamdhip64.so",
+ const char* hip_paths[] = { "libamdhip64.so.7",
+ "/opt/rocm/lib/libamdhip64.so.7",
+ "/opt/rocm/hip/lib/libamdhip64.so.7",
"libamdhip64.so.6",
"/opt/rocm/lib/libamdhip64.so.6",
"/opt/rocm/hip/lib/libamdhip64.so.6",
- "libamdhip64.so.7",
- "/opt/rocm/lib/libamdhip64.so.7",
- "/opt/rocm/hip/lib/libamdhip64.so.7",
+ "libamdhip64.so",
NULL };
#endif
static int initialized = 0;
diff --git a/intern/cycles/device/hiprt/device_impl.cpp b/intern/cycles/device/hiprt/device_impl.cpp
index c251a8d0..b54bc36c 100644
--- a/intern/cycles/device/hiprt/device_impl.cpp
+++ b/intern/cycles/device/hiprt/device_impl.cpp
@@ -104,10 +104,10 @@ HIPRTDevice::HIPRTDevice(const DeviceInfo &info,
}
if (LOG_IS_ON(LOG_LEVEL_TRACE)) {
- hiprtSetLogLevel(hiprtLogLevelInfo | hiprtLogLevelWarn | hiprtLogLevelError);
+ hiprtSetLogLevel(hiprt_context, hiprtLogLevelInfo | hiprtLogLevelWarn | hiprtLogLevelError);
}
else {
- hiprtSetLogLevel(hiprtLogLevelNone);
+ hiprtSetLogLevel(hiprt_context, hiprtLogLevelNone);
}
}
diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt
index bcaf4e16..aa6a3d17 100644
--- a/intern/cycles/kernel/CMakeLists.txt
+++ b/intern/cycles/kernel/CMakeLists.txt
@@ -93,13 +93,13 @@ set(SRC_KERNEL_DEVICE_HIPRT_HEADERS
set(SRC_KERNEL_DEVICE_HIPRT_SDK
hiprt/impl/Aabb.h
hiprt/impl/BvhNode.h
- hiprt/impl/Geometry.h
+ hiprt/impl/Header.h
hiprt/impl/hiprt_device_impl.h
hiprt/impl/hiprt_kernels_bitcode.h
hiprt/impl/Instance.h
+ hiprt/impl/Obb.h
hiprt/impl/QrDecomposition.h
hiprt/impl/Quaternion.h
- hiprt/impl/Scene.h
hiprt/impl/Transform.h
hiprt/impl/Triangle.h
)
+3
View File
@@ -126,6 +126,9 @@ stdenv'.mkDerivation (finalAttrs: {
hash = "sha256-fNnQRfGfNc7rbk8npkcYtoAqRjJc6MaV4mqtSJxd0EM=";
};
# Minimal backport of hiprt 3.x support from https://projects.blender.org/blender/blender/pulls/144889
patches = lib.optional rocmSupport ./hiprt-3-compat.patch;
postPatch =
(lib.optionalString stdenv.hostPlatform.isDarwin ''
: > build_files/cmake/platform/platform_apple_xcode.cmake
@@ -0,0 +1,26 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fc61af7..b2b594e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -303,7 +303,7 @@ if (MAGMA_ENABLE_HIP)
set(GPU_ARCH_FLAGS ${DEVCCFLAGS})
#add_compile_options(${GPU_ARCH_FLAGS})
- set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__HIP_PLATFORM_AMD__" )
+ set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__HIP_PLATFORM_AMD__ -DHIPBLAS_V2" )
option(ROCM_CORE "Location of the rocm-core package")
execute_process(COMMAND "${CMAKE_SOURCE_DIR}/tools/get-rocm-version.sh" "${ROCM_CORE}" OUTPUT_VARIABLE ROCM_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "ROCM_VERSION=${ROCM_VERSION}")
diff --git a/Makefile b/Makefile
index 44880ab..afaab45 100644
--- a/Makefile
+++ b/Makefile
@@ -846,7 +846,7 @@ ifeq ($(BACKEND),cuda)
d_ext := cu
else ifeq ($(BACKEND),hip)
d_ext := cpp
-CXXFLAGS += -D__HIP_PLATFORM_AMD__
+CXXFLAGS += -D__HIP_PLATFORM_AMD__ -DHIPBLAS_V2
CXXFLAGS += -DROCM_VERSION=$(shell ./tools/get-rocm-version.sh)
endif
+39 -8
View File
@@ -4,8 +4,8 @@
cmake,
cudaPackages,
cudaSupport ? config.cudaSupport,
fetchFromGitHub,
fetchpatch,
fetchurl,
gfortran,
gpuTargets ? [ ], # Non-CUDA targets, that is HIP
rocmPackages,
@@ -13,6 +13,7 @@
lib,
libpthreadstubs,
ninja,
perl,
python3,
config,
# At least one back-end has to be enabled,
@@ -115,9 +116,11 @@ stdenv.mkDerivation (finalAttrs: {
pname = "magma";
version = "2.9.0";
src = fetchurl {
url = "https://icl.cs.utk.edu/projectsfiles/magma/downloads/magma-${finalAttrs.version}.tar.gz";
hash = "sha256-/3f9Nyaz3+w7+1V5CwZICqXMOEOWwts1xW/a5KgsZBw=";
src = fetchFromGitHub {
owner = "icl-utk-edu";
repo = "magma";
tag = "v${finalAttrs.version}";
hash = "sha256-ZV50id9qiCrc1K87812Lvv1tmeU/6vhpxFCz8nj61wM=";
};
# Magma doesn't have anything which could be run under doCheck, but it does build test suite executables.
@@ -134,6 +137,24 @@ stdenv.mkDerivation (finalAttrs: {
url = "https://github.com/icl-utk-edu/magma/commit/2fecaf3f0c811344363f713669c1fe30f6879acd.patch";
hash = "sha256-Dfzq2gqoLSByCLWV5xvY/lXZeVa/yQ67lDSoIAa9jUU=";
})
]
++ lib.optionals rocmSupport [
# TODO: Drop both these patches on next magma release
(fetchpatch {
# ROCm 7.0 compat: use HIPBLAS_V2 types and APIs
# Requires building from git w/ make generate call. If applied to release tarball
# pre-generated hipified code will remain unpatched
name = "magma-ROCm-7.0-compat.patch";
url = "https://github.com/icl-utk-edu/magma/commit/02ecee0ccc56cce85194fdda18c9e0614797b2f9.patch";
hash = "sha256-vm58X30ZR02sOMsKrvxEcEF27tJYuuyZZrz+GGFNz5Q=";
excludes = [
"testing/testing_ztrsv_batched.cpp"
"CMakeLists.txt"
"Makefile"
];
})
# Vendored patch with CMakeLists.txt and Makefile hunks from above commit (context differs)
./magma-hipblas-v2-buildflags.patch
];
postPatch = ''
@@ -147,12 +168,25 @@ stdenv.mkDerivation (finalAttrs: {
autoPatchelfHook
cmake
ninja
perl # for make generate
gfortran
]
++ lists.optionals cudaSupport [
cudaPackages.cuda_nvcc
];
# README Step 0: generate precision variants and CMake.src.{hip|cuda} when building from git
# GPU_TARGET is a dummy value; CMake vars control target selection and `make generate`
# does not use the target setting, but the main makefile errors without it
preConfigure = ''
cat > make.inc <<EOF
BACKEND = ${if rocmSupport then "hip" else "cuda"}
FORT = true
GPU_TARGET = ${if rocmSupport then "gfx900" else "sm_90"}
EOF
make -j$NIX_BUILD_CORES generate
'';
buildInputs = [
libpthreadstubs
lapack
@@ -183,6 +217,7 @@ stdenv.mkDerivation (finalAttrs: {
env.CFLAGS = "-DADD_" + lib.optionalString rocmSupport " -fopenmp";
env.CXXFLAGS = finalAttrs.env.CFLAGS;
env.FFLAGS = "-DADD_";
env.ROCM_PATH = lib.optionalString rocmSupport rocmPackages.clr;
cmakeFlags = [
(strings.cmakeFeature "GPU_TARGET" gpuTargetString)
@@ -199,10 +234,6 @@ stdenv.mkDerivation (finalAttrs: {
(strings.cmakeFeature "MIN_ARCH" minArch) # Disarms magma's asserts
]
++ lists.optionals rocmSupport [
# Can be removed once https://github.com/icl-utk-edu/magma/pull/27 is merged
# Can't easily apply the PR as a patch because we rely on the tarball with pregenerated
# hipified files ∴ fetchpatch of the PR will apply cleanly but fail to build
(strings.cmakeFeature "ROCM_CORE" "${rocmPackages.clr}")
(strings.cmakeFeature "CMAKE_C_COMPILER" "${rocmPackages.clang}/bin/clang")
(strings.cmakeFeature "CMAKE_CXX_COMPILER" "${rocmPackages.clang}/bin/clang++")
];
+53 -4
View File
@@ -12,15 +12,16 @@
cxxopts,
nix-update-script,
config,
# Upstream has rocm/hip support, too. anyone?
cudaSupport ? config.cudaSupport,
cudaPackages,
rocmSupport ? config.rocmSupport,
rocmPackages,
autoAddDriverRunpath,
fetchpatch2,
}:
let
version = "1.1.4";
torch = python3.pkgs.torch.override { inherit cudaSupport; };
torch = python3.pkgs.torch.override { inherit cudaSupport rocmSupport; };
# Using a normal stdenv with cuda torch gives
# ld: /nix/store/k1l7y96gv0nc685cg7i3g43i4icmddzk-python3.11-torch-2.2.1-lib/lib/libc10.so: undefined reference to `std::ios_base_library_init()@GLIBCXX_3.4.32'
stdenv' = if cudaSupport then cudaPackages.backendStdenv else stdenv;
@@ -43,10 +44,32 @@ stdenv'.mkDerivation {
})
];
postPatch = lib.optionalString rocmSupport ''
# ROCm CMake targets must be available before find_package(Torch)
# because Torch's Caffe2Targets.cmake references them in torch_hip_library
substituteInPlace CMakeLists.txt \
--replace-fail "find_package(Torch REQUIRED)" \
"find_package(hip REQUIRED)
find_package(hiprtc REQUIRED)
find_package(hipblas REQUIRED)
find_package(hipfft REQUIRED)
find_package(hiprand REQUIRED)
find_package(hipsparse REQUIRED)
find_package(hipsolver REQUIRED)
find_package(hipblaslt REQUIRED)
find_package(rocblas REQUIRED)
find_package(rocsolver REQUIRED)
find_package(miopen REQUIRED)
find_package(Torch REQUIRED)"
'';
nativeBuildInputs = [
cmake
ninja
]
++ lib.optionals rocmSupport [
rocmPackages.clr
]
++ lib.optionals cudaSupport [
cudaPackages.cuda_nvcc
autoAddDriverRunpath
@@ -61,16 +84,39 @@ stdenv'.mkDerivation {
torch
opencv
]
++ lib.optionals rocmSupport [
rocmPackages.clr
rocmPackages.hipblas
rocmPackages.hipfft
rocmPackages.hiprand
rocmPackages.hipsparse
rocmPackages.hipsolver
rocmPackages.hipblaslt
rocmPackages.rocblas
rocmPackages.rocsolver
rocmPackages.rocsolver
rocmPackages.miopen
]
++ lib.optionals cudaSupport [
cudaPackages.cuda_cudart
];
env.TORCH_CUDA_ARCH_LIST = "${lib.concatStringsSep ";" python3.pkgs.torch.cudaCapabilities}";
env =
lib.optionalAttrs cudaSupport {
TORCH_CUDA_ARCH_LIST = "${lib.concatStringsSep ";" python3.pkgs.torch.cudaCapabilities}";
NIX_LDFLAGS = "-L${lib.getOutput "stubs" cudaPackages.cuda_cudart}/lib/stubs"; # fixes -lcuda not found
}
// lib.optionalAttrs rocmSupport {
HIPFLAGS = "-I${lib.getInclude rocmPackages.rocthrust}/include -I${lib.getInclude rocmPackages.rocprim}/include";
};
cmakeFlags = [
(lib.cmakeBool "CMAKE_SKIP_RPATH" true)
(lib.cmakeFeature "FETCHCONTENT_TRY_FIND_PACKAGE_MODE" "ALWAYS")
]
++ lib.optionals rocmSupport [
(lib.cmakeFeature "GPU_RUNTIME" "HIP")
]
++ lib.optionals cudaSupport [
(lib.cmakeFeature "GPU_RUNTIME" "CUDA")
(lib.cmakeFeature "CUDA_TOOLKIT_ROOT_DIR" "${cudaPackages.cudatoolkit}/")
@@ -87,7 +133,10 @@ stdenv'.mkDerivation {
# vendored+modified gsplat
lib.licenses.asl20
];
maintainers = [ lib.maintainers.jcaesar ];
maintainers = [
lib.maintainers.jcaesar
lib.maintainers.LunNova
];
platforms = lib.platforms.linux ++ lib.optionals (!cudaSupport) lib.platforms.darwin;
};
}
+11 -8
View File
@@ -14,16 +14,15 @@
stdenv,
}:
rustPlatform.buildRustPackage rec {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "zluda";
version = "4-unstable-2025-01-28";
version = "6-preview.45";
src = fetchFromGitHub {
owner = "vosen";
repo = "ZLUDA";
# Cargo.lock introduced and major bug fixes in this commit
rev = "df5a96d935b014f88e30af4abc487882b0b54a76";
hash = "sha256-T2pCZZzZbCLI01YSF0VguKtL3EDEdIoUyH4C9ccaCi8=";
rev = "v${finalAttrs.version}";
hash = "sha256-796OuIM5a0saE0v1QHHAGRjUPT+YAIfUuEtAruMn8Mk=";
fetchSubmodules = true;
};
@@ -35,6 +34,7 @@ rustPlatform.buildRustPackage rec {
rocmPackages.rocsolver
rocmPackages.rocblas
rocmPackages.hipblas
rocmPackages.hipblaslt
rocmPackages.rocm-cmake
rocmPackages.hipfft
zlib
@@ -50,7 +50,10 @@ rustPlatform.buildRustPackage rec {
clang
];
cargoHash = "sha256-hDQWjzkx7YdkgSmNKTzCa2VhBFvn6P9QANV9hJ7UiT8=";
cargoHash = "sha256-YNBeweZ/vfXGfM0lrZbAh71z6Rb0+B7nOuO8VL2BmCo=";
# Tests require a GPU and segfault in the sandbox
doCheck = false;
# xtask doesn't support passing --target, but nix hooks expect the folder structure from when it's set
env.CARGO_BUILD_TARGET = stdenv.hostPlatform.rust.cargoShortTarget;
@@ -80,10 +83,10 @@ rustPlatform.buildRustPackage rec {
meta = {
description = "CUDA on non-Nvidia GPUs";
homepage = "https://github.com/vosen/ZLUDA";
changelog = "https://github.com/vosen/ZLUDA/releases/tag/${src.rev}";
changelog = "https://github.com/vosen/ZLUDA/releases/tag/${finalAttrs.src.rev}";
license = lib.licenses.mit;
maintainers = [
lib.maintainers.errnoh
];
};
}
})
@@ -1,40 +0,0 @@
From 6ac72ec84269737626b1f5e43e64729f0922d182 Mon Sep 17 00:00:00 2001
From: "Ding, Yi" <yi.ding@amd.com>
Date: Wed, 9 Jul 2025 03:12:39 +0000
Subject: [PATCH] Avoid compile kernel in host pass
---
include/ck_tile/host/kernel_launch.hpp | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/include/ck_tile/host/kernel_launch.hpp b/include/ck_tile/host/kernel_launch.hpp
index 9770e99738..f6ccb6968b 100644
--- a/include/ck_tile/host/kernel_launch.hpp
+++ b/include/ck_tile/host/kernel_launch.hpp
@@ -4,11 +4,12 @@
#pragma once
#include "ck_tile/core/config.hpp"
-#include "ck_tile/host/stream_config.hpp"
+#include "ck_tile/core/utility/ignore.hpp"
#include "ck_tile/host/hip_check_error.hpp"
+#include "ck_tile/host/stream_config.hpp"
#include "ck_tile/host/timer.hpp"
-#include <hip/hip_runtime.h>
#include <cstddef>
+#include <hip/hip_runtime.h>
namespace ck_tile {
@@ -24,7 +25,11 @@ __launch_bounds__(MaxThreadPerBlock, MinBlockPerCu)
#endif
__global__ void kentry(Args... args)
{
+#if defined(__HIP_DEVICE_COMPILE__)
Kernel{}(args...);
+#else
+ (..., (ignore = args, 0));
+#endif
}
//
@@ -1,39 +0,0 @@
From f259eca77c592813e11752a46c4e1f9a74c64091 Mon Sep 17 00:00:00 2001
From: Luna Nova <git@lunnova.dev>
Date: Fri, 11 Oct 2024 02:56:22 -0700
Subject: [PATCH] [hipcc] Remove extra definition of hipBinUtilPtr_ in derived
platforms
Fixes UB when hipBinUtilPtr_ is used.
---
amd/hipcc/src/hipBin_amd.h | 1 -
amd/hipcc/src/hipBin_nvidia.h | 1 -
2 files changed, 2 deletions(-)
diff --git a/amd/hipcc/src/hipBin_amd.h b/amd/hipcc/src/hipBin_amd.h
index 0a782d1beab9..36cd625ae8bc 100644
--- a/src/hipBin_amd.h
+++ b/src/hipBin_amd.h
@@ -42,7 +42,6 @@ THE SOFTWARE.
class HipBinAmd : public HipBinBase {
private:
- HipBinUtil* hipBinUtilPtr_;
string hipClangPath_ = "";
string roccmPathEnv_, hipRocclrPathEnv_, hsaPathEnv_;
PlatformInfo platformInfoAMD_;
diff --git a/amd/hipcc/src/hipBin_nvidia.h b/amd/hipcc/src/hipBin_nvidia.h
index ff142cc1cea2..09b7b80979c7 100644
--- a/src/hipBin_nvidia.h
+++ b/src/hipBin_nvidia.h
@@ -31,7 +31,6 @@ THE SOFTWARE.
class HipBinNvidia : public HipBinBase {
private:
- HipBinUtil* hipBinUtilPtr_;
string cudaPath_ = "";
PlatformInfo platformInfoNV_;
string hipCFlags_, hipCXXFlags_, hipLdFlags_;
--
2.46.0
@@ -1,13 +0,0 @@
diff --git a/src/init.cc b/src/init.cc
index 738f756..1b0e4fc 100644
--- a/src/init.cc
+++ b/src/init.cc
@@ -2049,7 +2049,7 @@ static ncclResult_t ncclCommInitRankFunc(struct ncclAsyncJob* job_) {
if (mscclEnabled() && (comm->topo->mscclEnabled || mscclForceEnabled()) && mscclppCommCompatible(comm)) {
hipDeviceProp_t devProp;
CUDACHECK(hipGetDeviceProperties(&devProp, cudaDev));
- comm->mscclppCompatible = IsArchMatch(devProp.gcnArchName, "gfx94");
+ comm->mscclppCompatible = IsArchMatch(devProp.gcnArchName, "gfx9");
if (comm->mscclppCompatible) {
bool mapContainsId = (mscclpp_uniqueIdMap.count(job->commId) > 0);
auto& mscclppUniqueId = mscclpp_uniqueIdMap[job->commId];
@@ -1,172 +0,0 @@
diff --git a/src/include/bootstrap.h b/src/include/bootstrap.h
index 8c5f081..9922b79 100644
--- a/src/include/bootstrap.h
+++ b/src/include/bootstrap.h
@@ -10,11 +10,13 @@
#include "nccl.h"
#include "comm.h"
+// this is accessed through unaligned ptrs because ncclUniqueId is a typedef of char[128]
struct ncclBootstrapHandle {
uint64_t magic;
union ncclSocketAddress addr;
};
static_assert(sizeof(struct ncclBootstrapHandle) <= sizeof(ncclUniqueId), "Bootstrap handle is too large to fit inside NCCL unique ID");
+static_assert(alignof(struct ncclBootstrapHandle) == alignof(ncclUniqueId), "Bootstrap handle must have same alignment as NCCL unique ID to avoid UB");
ncclResult_t bootstrapNetInit();
ncclResult_t bootstrapCreateRoot(struct ncclBootstrapHandle* handle, bool idFromEnv);
diff --git a/src/misc/rocmwrap.cc b/src/misc/rocmwrap.cc
index b3063d5..464b80d 100644
--- a/src/misc/rocmwrap.cc
+++ b/src/misc/rocmwrap.cc
@@ -131,9 +131,12 @@ static void initOnceFunc() {
//format and store the kernel conf file location
snprintf(kernel_conf_file, sizeof(kernel_conf_file), "/boot/config-%s", utsname.release);
fp = fopen(kernel_conf_file, "r");
- if (fp == NULL) INFO(NCCL_INIT,"Could not open kernel conf file");
+ if (fp == NULL) {
+ INFO(NCCL_INIT,"Could not open kernel conf file, will assume CONFIG_DMABUF_MOVE_NOTIFY and CONFIG_PCI_P2PDMA are enabled");
+ }
//look for kernel_opt1 and kernel_opt2 in the conf file and check
- while (fgets(buf, sizeof(buf), fp) != NULL) {
+ // FIXME: This check is broken, CONFIG_DMABUF_MOVE_NOTIFY could be across a buf boundary.
+ while (fp && fgets(buf, sizeof(buf), fp) != NULL) {
if (strstr(buf, kernel_opt1) != NULL) {
found_opt1 = 1;
INFO(NCCL_INIT,"CONFIG_DMABUF_MOVE_NOTIFY=y in /boot/config-%s", utsname.release);
@@ -143,11 +146,12 @@ static void initOnceFunc() {
INFO(NCCL_INIT,"CONFIG_PCI_P2PDMA=y in /boot/config-%s", utsname.release);
}
}
- if (!found_opt1 || !found_opt2) {
+ if (fp && (!found_opt1 || !found_opt2)) {
dmaBufSupport = 0;
INFO(NCCL_INIT, "CONFIG_DMABUF_MOVE_NOTIFY and CONFIG_PCI_P2PDMA should be set for DMA_BUF in /boot/config-%s", utsname.release);
INFO(NCCL_INIT, "DMA_BUF_SUPPORT Failed due to OS kernel support");
}
+ if (fp) fclose(fp);
if(dmaBufSupport) INFO(NCCL_INIT, "DMA_BUF Support Enabled");
else goto error;
diff --git a/src/nccl.h.in b/src/nccl.h.in
index 1d127b0..6296073 100644
--- a/src/nccl.h.in
+++ b/src/nccl.h.in
@@ -39,7 +39,7 @@ typedef struct ncclComm* ncclComm_t;
#define NCCL_UNIQUE_ID_BYTES 128
/*! @brief Opaque unique id used to initialize communicators
@details The ncclUniqueId must be passed to all participating ranks */
-typedef struct { char internal[NCCL_UNIQUE_ID_BYTES]; /*!< Opaque array>*/} ncclUniqueId;
+typedef struct alignas(int64_t) { char internal[NCCL_UNIQUE_ID_BYTES]; /*!< Opaque array>*/} ncclUniqueId;
/*! @defgroup rccl_result_code Result Codes
@details The various result codes that RCCL API calls may return
diff --git a/src/proxy.cc b/src/proxy.cc
index 50e5437..51bb401 100644
--- a/src/proxy.cc
+++ b/src/proxy.cc
@@ -965,7 +965,11 @@ struct ncclProxyConnectionPool {
static ncclResult_t ncclProxyNewConnection(struct ncclProxyConnectionPool* pool, int* id) {
if (pool->offset == NCCL_PROXY_CONN_POOL_SIZE) {
- NCCLCHECK(ncclRealloc(&pool->pools, pool->banks, pool->banks+1));
+ if (pool->pools) {
+ NCCLCHECK(ncclRealloc(&pool->pools, pool->banks, pool->banks+1));
+ } else {
+ NCCLCHECK(ncclCalloc(&pool->pools, pool->banks+1));
+ }
NCCLCHECK(ncclCalloc(pool->pools+pool->banks, NCCL_PROXY_CONN_POOL_SIZE));
pool->banks++;
pool->offset = 0;
diff --git a/src/transport/net_ib.cc b/src/transport/net_ib.cc
index 6d77784..49762d3 100644
--- a/src/transport/net_ib.cc
+++ b/src/transport/net_ib.cc
@@ -573,7 +573,7 @@ ncclResult_t ncclIbGdrSupport() {
// Requires support from NIC driver modules
// Use ONLY for debugging!
moduleLoaded = 1;
- INFO(NCCL_INIT, "RCCL_FORCE_ENABLE_GDRDMA = 1, so explicitly setting moduleLoaded = 1");
+ INFO(NCCL_INIT, "ncclIbGdrSupport: RCCL_FORCE_ENABLE_GDRDMA = 1, so explicitly setting moduleLoaded = 1");
}
if (moduleLoaded == -1) {
@@ -586,9 +586,9 @@ ncclResult_t ncclIbGdrSupport() {
int i = 0;
while (memory_peers_paths[i]) {
if (access(memory_peers_paths[i], F_OK) == 0) {
moduleLoaded = 1;
- INFO(NCCL_INIT,"Found %s", memory_peers_paths[i]);
+ INFO(NCCL_INIT,"ncclIbGdrSupport: Found %s", memory_peers_paths[i]);
break;
} else {
moduleLoaded = 0;
@@ -612,22 +613,23 @@ ncclResult_t ncclIbGdrSupport() {
if (moduleLoaded == 0) {
// Check for `ib_register_peer_memory_client` symbol in `/proc/kallsyms`
// if your system uses native OS ib_peer module
- char buf[256];
- FILE *fp = NULL;
- fp = fopen("/proc/kallsyms", "r");
+ FILE *fp = fopen("/proc/kallsyms", "r");
+ char *line = NULL;
+ size_t len = 0;
if (fp == NULL) {
- INFO(NCCL_INIT,"Could not open /proc/kallsyms");
+ INFO(NCCL_INIT,"ncclIbGdrSupport: Could not open /proc/kallsyms to check for ib_register_peer_memory_client");
} else {
- while (fgets(buf, sizeof(buf), fp) != NULL) {
- if (strstr(buf, "t ib_register_peer_memory_client") != NULL ||
- strstr(buf, "T ib_register_peer_memory_client") != NULL) {
+ while (getline(&line, &len, fp) > 0) {
+ if (line && strstr(line, "ib_register_peer_memory_client") != NULL) {
moduleLoaded = 1;
- INFO(NCCL_INIT,"Found ib_register_peer_memory_client in /proc/kallsyms");
+ INFO(NCCL_INIT,"ncclIbGdrSupport: Found ib_register_peer_memory_client in /proc/kallsyms");
break;
}
}
}
+ if (line) free(line);
+ if (fp) fclose(fp);
}
#else
// Check for the nv_peer_mem module being loaded
@@ -637,7 +639,7 @@ ncclResult_t ncclIbGdrSupport() {
#endif
}
if (moduleLoaded == 0) {
- INFO(NCCL_INIT,"GDRDMA not enabled. Could not find memory_peers directory or peer_memory symbol");
+ INFO(NCCL_INIT,"ncclIbGdrSupport: GDRDMA not enabled. Could not find memory_peers directory or peer_memory symbol");
return ncclSystemError;
}
return ncclSuccess;
diff --git a/tools/ib-test/include/nccl.h b/tools/ib-test/include/nccl.h
index 2c86c33..5801c61 100755
--- a/tools/ib-test/include/nccl.h
+++ b/tools/ib-test/include/nccl.h
@@ -31,7 +31,7 @@ extern "C" {
typedef struct ncclComm* ncclComm_t;
#define NCCL_UNIQUE_ID_BYTES 128
-typedef struct { char internal[NCCL_UNIQUE_ID_BYTES]; } ncclUniqueId;
+typedef struct alignas(int64_t) { char internal[NCCL_UNIQUE_ID_BYTES]; } ncclUniqueId;
/* Error type */
typedef enum { ncclSuccess = 0,
diff --git a/tools/topo_expl/include/nccl.h b/tools/topo_expl/include/nccl.h
index 729561b..4e4bdd9 100644
--- a/tools/topo_expl/include/nccl.h
+++ b/tools/topo_expl/include/nccl.h
@@ -35,7 +35,7 @@ typedef struct ncclComm* ncclComm_t;
#define NCCL_COMM_NULL NULL
#define NCCL_UNIQUE_ID_BYTES 128
-typedef struct { char internal[NCCL_UNIQUE_ID_BYTES]; } ncclUniqueId;
+typedef struct alignas(int64_t) { char internal[NCCL_UNIQUE_ID_BYTES]; } ncclUniqueId;
/*! @brief Error type */
typedef enum { ncclSuccess = 0,
@@ -1,89 +0,0 @@
diff --git a/rocm_smi-backward-compat.cmake b/rocm_smi-backward-compat.cmake
index aa8fd9c..59afce5 100644
--- a/rocm_smi-backward-compat.cmake
+++ b/rocm_smi-backward-compat.cmake
@@ -72,7 +72,12 @@ function(generate_wrapper_header)
set(include_guard "${include_guard}COMGR_WRAPPER_INCLUDE_${INC_GAURD_NAME}_H")
#set #include statement
get_filename_component(file_name ${header_file} NAME)
- set(include_statements "${include_statements}#include \"../../../${CMAKE_INSTALL_INCLUDEDIR}/${ROCM_SMI}/${file_name}\"\n")
+ if(IS_ABSOLUTE ${CMAKE_INSTALL_INCLUDEDIR})
+ set(include_dir "${CMAKE_INSTALL_INCLUDEDIR}")
+ else()
+ set(include_dir "../../../${CMAKE_INSTALL_INCLUDEDIR}")
+ endif()
+ set(include_statements "${include_statements}#include \"${include_dir}/${ROCM_SMI}/${file_name}\"\n")
configure_file(${RSMI_WRAPPER_DIR}/header.hpp.in ${RSMI_WRAPPER_INC_DIR}/${file_name})
unset(include_guard)
unset(include_statements)
@@ -90,7 +95,12 @@ function(generate_wrapper_header)
set(include_guard "${include_guard}COMGR_WRAPPER_INCLUDE_${INC_GAURD_NAME}_H")
#set #include statement
get_filename_component(file_name ${header_file} NAME)
- set(include_statements "${include_statements}#include \"../../../${CMAKE_INSTALL_INCLUDEDIR}/${OAM_TARGET_NAME}/${file_name}\"\n")
+ if(IS_ABSOLUTE ${CMAKE_INSTALL_INCLUDEDIR})
+ set(include_dir "${CMAKE_INSTALL_INCLUDEDIR}")
+ else()
+ set(include_dir "../../../${CMAKE_INSTALL_INCLUDEDIR}")
+ endif()
+ set(include_statements "${include_statements}#include \"${include_dir}/${OAM_TARGET_NAME}/${file_name}\"\n")
configure_file(${RSMI_WRAPPER_DIR}/header.hpp.in ${OAM_WRAPPER_INC_DIR}/${file_name})
unset(include_guard)
unset(include_statements)
@@ -123,11 +133,16 @@ function(create_library_symlink)
set(library_files "${LIB_RSMI}")
endif()
+ if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBDIR})
+ set(install_libdir "${CMAKE_INSTALL_LIBDIR}")
+ else()
+ set(install_libdir "../../${CMAKE_INSTALL_LIBDIR}")
+ endif()
foreach(file_name ${library_files})
add_custom_target(link_${file_name} ALL
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E create_symlink
- ../../${CMAKE_INSTALL_LIBDIR}/${file_name} ${RSMI_WRAPPER_LIB_DIR}/${file_name})
+ ${install_libdir}/${file_name} ${RSMI_WRAPPER_LIB_DIR}/${file_name})
endforeach()
file(MAKE_DIRECTORY ${OAM_WRAPPER_LIB_DIR})
@@ -151,11 +166,16 @@ function(create_library_symlink)
set(library_files "${LIB_OAM}")
endif()
+ if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBDIR})
+ set(install_libdir "${CMAKE_INSTALL_LIBDIR}")
+ else()
+ set(install_libdir "../../${CMAKE_INSTALL_LIBDIR}")
+ endif()
foreach(file_name ${library_files})
add_custom_target(link_${file_name} ALL
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E create_symlink
- ../../${CMAKE_INSTALL_LIBDIR}/${file_name} ${OAM_WRAPPER_LIB_DIR}/${file_name})
+ ${install_libdir}/${file_name} ${OAM_WRAPPER_LIB_DIR}/${file_name})
endforeach()
endfunction()
diff --git a/rocm_smi/CMakeLists.txt b/rocm_smi/CMakeLists.txt
index c594eeb..d3ed39d 100755
--- a/rocm_smi/CMakeLists.txt
+++ b/rocm_smi/CMakeLists.txt
@@ -105,10 +105,15 @@ endif ()
#file reorganization changes
#rocm_smi.py moved to libexec/rocm_smi. so creating rocm-smi symlink
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
+if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBEXECDIR})
+ set(install_libexecdir "${CMAKE_INSTALL_LIBEXECDIR}")
+else()
+ set(install_libexecdir "../${CMAKE_INSTALL_LIBEXECDIR}")
+endif()
add_custom_target(link-rocm-smi ALL
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND ${CMAKE_COMMAND} -E create_symlink
- ../${CMAKE_INSTALL_LIBEXECDIR}/${ROCM_SMI}/rocm_smi.py ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi)
+ ${install_libexecdir}/${ROCM_SMI}/rocm_smi.py ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi)
## Add the install directives for the runtime library.
install(TARGETS ${ROCM_SMI_TARGET}
@@ -21,12 +21,12 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "amdsmi";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "rocm";
repo = "amdsmi";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-9O29O4HGkQxFDglAhHKv5KWA7p97RwMGG2x/fkOS2jE=";
hash = "sha256-1xQD68mrG1g9Bpw5/vxn+XxDM5HuAyEHyALyBixqR1s=";
};
postPatch = ''
@@ -43,11 +43,6 @@ stdenv.mkDerivation (finalAttrs: {
'';
patches = [
(fetchpatch {
name = "esmi-to-tag-4.2.patch";
url = "https://github.com/ROCm/amdsmi/commit/49aa2af045a4bc688e6f3ee0545f12afc45c1efe.patch";
hash = "sha256-5dH9N4m+2mJIGVEB86SvdK3uAYyGFTfbCBJ8e09iQ3w=";
})
(fetchpatch {
name = "fix-build-with-gcc15.patch";
url = "https://github.com/ROCm/amdsmi/commit/902667db3cafe72e2009287cb96b160854ab9d81.patch";
@@ -38,13 +38,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "aotriton${lib.optionalString (!anySupportedTargets) "-shim"}";
version = "0.10b";
version = "0.11.1b";
src = fetchFromGitHub {
owner = "ROCm";
repo = "aotriton";
tag = finalAttrs.version;
hash = "sha256-stAHnsqChkNv69wjlhM/qUetrJpNwI1i7rGnPMwsNz0=";
hash = "sha256-F7JjyS+6gMdCpOFLldTsNJdVzzVwd6lwW7+V8ZOZfig=";
leaveDotGit = true;
# fetch all submodules except unused triton submodule that is ~500MB
postFetch = ''
@@ -65,9 +65,11 @@ stdenv.mkDerivation (finalAttrs: {
requiredSystemFeatures = if anySupportedTargets then [ "big-parallel" ] else [ ];
env = {
AOTRITON_CI_SUPPLIED_SHA1 = finalAttrs.version;
ROCM_PATH = "${clr}";
CFLAGS = "-w -g1 -gz -Wno-c++11-narrowing";
CXXFLAGS = finalAttrs.env.CFLAGS;
TRITON_STORE_BINARY_ONLY = 1; # reduce triton disk space usage
};
nativeBuildInputs = [
@@ -97,14 +99,6 @@ stdenv.mkDerivation (finalAttrs: {
triton
]);
patches = [
# CMakeLists.txt: AOTRITON_INHERIT_SYSTEM_SITE_TRITON flag
(fetchpatch {
url = "https://github.com/ROCm/aotriton/commit/9734c3e999c412a07d2b35671998650942b26ed4.patch";
hash = "sha256-tBmjjhRJmLv3K6F2+4OcMuwf8dH7efPPECMQjh6QdUA=";
})
];
# Excerpt from README:
# Note: do not run ninja separately, due to the limit of the current build system,
# ninja install will run the whole build process unconditionally.
@@ -126,8 +120,8 @@ stdenv.mkDerivation (finalAttrs: {
# picked if nix-shell is used against this package
preConfigure = ''
cmakeFlagsArray+=(
"-DVENV_DIR=$(pwd)/aotriton-venv/"
"-DVENV_BIN_PYTHON=$(pwd)/aotriton-venv/bin/python"
"-DVENV_DIR=$(pwd)/build/venv/"
"-DVENV_BIN_PYTHON=$(pwd)/build/venv/bin/python"
)
'';
@@ -136,6 +130,8 @@ stdenv.mkDerivation (finalAttrs: {
(lib.cmakeBool "AOTRITON_NOIMAGE_MODE" (!anySupportedTargets))
# Use preinstalled triton from our python's site-packages
(lib.cmakeBool "AOTRITON_INHERIT_SYSTEM_SITE_TRITON" true)
# Circular dependency
(lib.cmakeBool "AOTRITON_USE_TORCH" false)
# FP32 kernels are optional, turn them off to speed up builds and save space
# Perf sensitive code should be using BF16 or F16
(lib.cmakeBool "AOTRITON_ENABLE_FP32_INPUTS" false)
@@ -8,15 +8,13 @@
stdenv.mkDerivation {
pname = "aqlprofile";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
# TODO: Will move to rocm-systems repo and have proper tags in 7.x
# pinned to oddly named tag for now
owner = "ROCm";
repo = "aqlprofile";
tag = "rocm-42";
hash = "sha256-avL78ZfB+rJ1TYaejSUzU6i5L9JeMawMwIxaTQINQdE=";
tag = "rocm-7.0.2";
hash = "sha256-A17SAkEUf3yAGwvZUWSdL7Tn5YAXB0YlD3T1DLTjDSg=";
};
env.CXXFLAGS = "-DROCP_LD_AQLPROFILE=1";
@@ -70,7 +70,7 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "clr";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -84,7 +84,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "clr";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-DOAAuC9TN1//v56GXyUMJwQHgOuctC+WsC5agrgL+QM=";
hash = "sha256-zajb/iTtF/ECRScdcQ85HPgq8DdIGqSinJoVyyi89bw=";
};
nativeBuildInputs = [
@@ -148,24 +148,13 @@ stdenv.mkDerivation (finalAttrs: {
./cmake-find-x11-libgl.patch
(fetchpatch {
# [PATCH] improve rocclr isa compatibility check
sha256 = "sha256-oj1loBEuqzuMihOKoN0wR92Wo25AshN5MpBuTq/9TMw=";
url = "https://github.com/GZGavinZhao/clr/commit/f675b9b46d9f7bb8e003f4f47f616fa86a0b7a5e.patch";
sha256 = "sha256-/QpB3Wqdhcq6lzyO/zOWzwQC0oYpesCICxnVx5CqbWg=";
url = "https://github.com/GZGavinZhao/clr/commit/733ee38ef8ad5c84926970981821f446dfcb00af.patch";
})
(fetchpatch {
# [PATCH] improve hipamd isa compatibility check
sha256 = "sha256-E3ERoVjUVWCiYHuE1GaVY5jMrAVx3B1cAVHM4/HPuaQ=";
url = "https://github.com/GZGavinZhao/clr/commit/aec0fc56ee2d10a2bc269c418fa847da2ee9969a.patch";
})
(fetchpatch {
# [PATCH] SWDEV-507104 - Removes alignment requirement for Semaphore class to resolve runtime misaligned memory issues
sha256 = "sha256-nStJ22B/CM0fzQTvYjbHDbQt0GlE8DXxVK+UDU9BAx4=";
url = "https://github.com/ROCm/clr/commit/21d764518363d74187deaef2e66c1a127bc5aa64.patch";
})
(fetchpatch {
# CMake 4 compat
# [PATCH] SWDEV-509213 - make cmake_minimum_required consistent across clr
url = "https://github.com/ROCm/clr/commit/fcaefe97b862afe12aaac0147f1004e6dc595fce.patch";
hash = "sha256-hRZXbASbIOOETe+T4mDyyiRWLXd6RDKRieN2ns1w/rs=";
sha256 = "sha256-FvZInw8PqB68ePxAGu45cWT/whD1xmprIA5wZb5OLcE=";
url = "https://github.com/GZGavinZhao/clr/commit/1f0b54ee9b0de08f4dc8cd38b6728928b180048a.patch";
})
];
@@ -198,7 +187,7 @@ stdenv.mkDerivation (finalAttrs: {
cp ${amdclang}/bin/* $out/bin/
cp ${amdclangxx}/bin/* $out/bin/
for prog in hip{cc,config}{,.pl}; do
for prog in hip{cc,config}; do
wrapProgram $out/bin/$prog ${lib.concatStringsSep " " wrapperArgs}
done
@@ -280,6 +269,33 @@ stdenv.mkDerivation (finalAttrs: {
opencl-example = callPackage ./test-opencl-example.nix {
clr = finalAttrs.finalPackage;
};
generic-arch = callPackage ./test-isa-compat.nix {
clr = finalAttrs.finalPackage;
name = "generic-arch";
offloadArches = [
"gfx9-generic"
"gfx10-1-generic"
"gfx10-3-generic"
"gfx11-generic"
"gfx12-generic"
];
};
isa-compat = callPackage ./test-isa-compat.nix {
clr = finalAttrs.finalPackage;
name = "isa-compat";
offloadArches = [
"gfx900"
"gfx1010"
"gfx1030"
];
};
spirv = callPackage ./test-isa-compat.nix {
clr = finalAttrs.finalPackage;
name = "spirv";
offloadArches = [
"amdgcnspirv"
];
};
};
selectGpuTargets =
@@ -0,0 +1,74 @@
{
lib,
stdenv,
makeImpureTest,
fetchFromGitHub,
clr,
rocm-smi,
name,
offloadArches,
}:
let
# TODO: swap to another tiny test if this breaks; upstream is archived but fine for now
vectoradd = stdenv.mkDerivation {
pname = "rocm-hip-vectoradd";
version = "2024-04-11";
src = fetchFromGitHub {
owner = "ROCm";
repo = "HIP-Examples";
rev = "cdf9d101acd9a3fc89ee750f73c1f1958cbd5cc3";
hash = "sha256-/I1KmOBFbEZIjA1vRE+2tPTtEKtOgazjCbnZtr+87E0=";
};
nativeBuildInputs = [
clr
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
amdclang++ -x hip -o $out/bin/vectoradd \
${lib.concatMapStringsSep " " (arch: "--offload-arch=${arch}") offloadArches} \
vectorAdd/vectoradd_hip.cpp
runHook postInstall
'';
meta = {
description = "vectorAdd HIP example for ROCm";
homepage = "https://github.com/ROCm/HIP-Examples";
license = lib.licenses.unfree;
platforms = lib.platforms.linux;
teams = [ lib.teams.rocm ];
};
};
in
makeImpureTest {
inherit name;
testedPackage = "rocmPackages.clr";
sandboxPaths = [
"/sys"
"/dev/dri"
"/dev/kfd"
];
nativeBuildInputs = [
vectoradd
rocm-smi
];
testScript = ''
rocm-smi
vectoradd
'';
meta = {
teams = [ lib.teams.rocm ];
};
}
@@ -61,7 +61,7 @@ let
in
makeImpureTest {
name = "opencl-example";
testedPackage = "rocmPackages_6.clr";
testedPackage = "rocmPackages.clr";
sandboxPaths = [
"/sys"
@@ -8,7 +8,7 @@
makeImpureTest {
name = "rocm-smi";
testedPackage = "rocmPackages_6.clr";
testedPackage = "rocmPackages.clr";
nativeBuildInputs = [
clinfo
rocm-smi
@@ -15,6 +15,11 @@
zstd,
buildTests ? false,
buildExamples ? false,
# limits prebuilt kernel selection to those needed for MIOPEN (currently "*conv*")
# Other kernels can still be used if treating CK as a header only library
# and building specific instances, as done with ck4inductor/torch
miOpenReqLibsOnly ? true,
withDeprecatedKernels ? false,
gpuTargets ? (
clr.localGpuTargets or [
"gfx900"
@@ -22,20 +27,14 @@
"gfx908"
"gfx90a"
"gfx942"
"gfx1030"
"gfx1100"
"gfx1101"
"gfx1102"
"gfx1200"
"gfx1201"
"gfx950"
"gfx10-3-generic"
"gfx11-generic"
"gfx12-generic"
]
),
}:
# TODO: in 7.x CK is likely to gain support for
# a) miopen kernel only build (MIOPEN_REQ_LIBS_ONLY)
# b) header only build (useful for torch) https://github.com/ROCm/composable_kernel/issues/2030
# that will likely allow us to get rid of this complicated split part build!
stdenv.mkDerivation (finalAttrs: {
preBuild = ''
echo "This derivation isn't intended to be built directly and only exists to be overridden and built in chunks";
@@ -43,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: {
'';
pname = "composable_kernel_base";
version = "6.4-unstable-2025-05-22";
version = "7.0.2";
outputs = [
"out"
@@ -58,9 +57,8 @@ stdenv.mkDerivation (finalAttrs: {
src = fetchFromGitHub {
owner = "ROCm";
repo = "composable_kernel";
# Using a dev snapshot, trying to get MIOpen to work
rev = "bc2551ac3b27edc31f20863e3a873508fb73aad2";
hash = "sha256-bfmwbgR1ya+zkME3wOyaZX/e+1+ie0sSlugK/kozLsI=";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-Wql7PD3kg85AFXn7UaTKxhURyDPfVe/OUbR+udrqDc8=";
};
nativeBuildInputs = [
@@ -87,10 +85,14 @@ stdenv.mkDerivation (finalAttrs: {
env.ROCM_PATH = clr;
cmakeFlags = [
(lib.cmakeBool "MIOPEN_REQ_LIBS_ONLY" miOpenReqLibsOnly)
(lib.cmakeBool "BUILD_MHA_LIB" (!miOpenReqLibsOnly))
(lib.cmakeBool "DISABLE_DL_KERNELS" true)
(lib.cmakeBool "DISABLE_DPP_KERNELS" true)
(lib.cmakeBool "CK_TIME_KERNEL" false)
"-DCMAKE_MODULE_PATH=${clr}/hip/cmake"
"-DCMAKE_BUILD_TYPE=Release"
"-DCMAKE_POLICY_DEFAULT_CMP0069=NEW"
# "-DDL_KERNELS=ON" # Not needed, slow to build
"-DDL_KERNELS=OFF"
# CK_USE_CODEGEN Required for migraphx which uses device_gemm_multiple_d.hpp
# but migraphx requires an incompatible fork of CK and fails anyway
# "-DCK_USE_CODEGEN=ON"
@@ -122,11 +124,6 @@ stdenv.mkDerivation (finalAttrs: {
"-DGOOGLETEST_DIR=${gtest.src}" # Custom linker names
];
patches = [
# Significant build performance improvement
./avoid-extra-host-compile.patch
];
# No flags to build selectively it seems...
postPatch =
# Reduce configure time by preventing thousands of clang-tidy targets being added
@@ -139,12 +136,10 @@ stdenv.mkDerivation (finalAttrs: {
--replace-fail "add_subdirectory(profiler)" ""
substituteInPlace cmake/EnableCompilerWarnings.cmake \
--replace-fail "-Werror" ""
# Apply equivalent change to https://github.com/ROCm/composable_kernel/pull/2564
# TODO: Remove after ROCm 7.1
find include/ck/tensor_operation/ -type f -name "*.hpp" -exec sed -i \
-e 's/!defined(__HIP_DEVICE_COMPILE__)/false/g' \
{} +
''
+ lib.optionalString (!withDeprecatedKernels) ''
substituteInPlace include/ck/ck.hpp \
--replace-fail "CK_BUILD_DEPRECATED 1" "CK_BUILD_DEPRECATED 0"
''
# Optionally remove tests
+ lib.optionalString (!buildTests) ''
@@ -170,7 +165,7 @@ stdenv.mkDerivation (finalAttrs: {
'';
passthru = {
inherit gpuTargets;
inherit gpuTargets miOpenReqLibsOnly;
updateScript = rocmUpdateScript {
name = finalAttrs.pname;
inherit (finalAttrs.src) owner;
@@ -14,8 +14,7 @@ buildPythonPackage {
setuptools
setuptools-scm
];
version = "6.4.3";
inherit (composable_kernel) src;
inherit (composable_kernel) version src;
pythonImportsCheck = [
"ck4inductor"
"ck4inductor.universal_gemm.gen_instances"
@@ -5,8 +5,10 @@
}:
let
inherit (composable_kernel_base) miOpenReqLibsOnly;
parts = {
_mha = {
enabled = !miOpenReqLibsOnly;
# mha takes ~3hrs on 64 cores on an EPYC milan system at ~2.5GHz
# big-parallel builders are one gen newer and clocked ~30% higher but only 24 cores
# Should be <10h timeout but might be cutting it close
@@ -20,6 +22,7 @@ let
extraCmakeFlags = [ "-DHIP_CLANG_NUM_PARALLEL_JOBS=2" ];
};
gemm_multiply_multiply = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_gemm_multiply_multiply_instance"
];
@@ -30,6 +33,7 @@ let
];
};
gemm_multiply_multiply_wp = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_gemm_multiply_multiply_wp_instance"
];
@@ -50,7 +54,8 @@ let
targets = [
"device_grouped_conv1d_fwd_instance"
"device_grouped_conv2d_fwd_instance"
"device_grouped_conv2d_fwd_bias_relu_instance"
"device_grouped_conv2d_fwd_bias_clamp_instance"
"device_grouped_conv2d_fwd_clamp_instance"
"device_grouped_conv2d_fwd_dynamic_op_instance"
];
};
@@ -71,7 +76,8 @@ let
grouped_conv_fwd_3d1 = {
targets = [
"device_grouped_conv3d_fwd_instance"
"device_grouped_conv3d_fwd_bias_relu_instance"
"device_grouped_conv3d_fwd_clamp_instance"
"device_grouped_conv3d_fwd_bias_clamp_instance"
"device_grouped_conv3d_fwd_bilinear_instance"
"device_grouped_conv3d_fwd_convinvscale_instance"
"device_grouped_conv3d_fwd_convscale_instance"
@@ -87,7 +93,13 @@ let
"device_grouped_conv3d_fwd_scaleadd_scaleadd_relu_instance"
];
};
grouped_conv_fwd_nd = {
targets = [
"device_grouped_convnd_bwd_weight_instance"
];
};
batched_gemm1 = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_batched_gemm_instance"
"device_batched_gemm_b_scale_instance"
@@ -100,6 +112,7 @@ let
];
};
batched_gemm2 = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_batched_gemm_softmax_gemm_permute_instance"
"device_grouped_gemm_instance"
@@ -111,18 +124,21 @@ let
];
};
gemm_universal1 = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_gemm_universal_instance"
"device_gemm_universal_batched_instance"
];
};
gemm_universal2 = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_gemm_universal_reduce_instance"
"device_gemm_universal_streamk_instance"
];
};
gemm_other1 = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_gemm_instance"
"device_gemm_b_scale_instance"
@@ -135,6 +151,7 @@ let
];
};
gemm_other2 = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_gemm_add_relu_add_layernorm_instance"
"device_gemm_add_silu_instance"
@@ -159,6 +176,7 @@ let
];
};
pool = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_avg_pool2d_bwd_instance"
"device_avg_pool3d_bwd_instance"
@@ -167,7 +185,13 @@ let
"device_max_pool_bwd_instance"
];
};
other0 = {
targets = [
"device_quantization_instance"
];
};
other1 = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_batchnorm_instance"
"device_contraction_bilinear_instance"
@@ -177,15 +201,16 @@ let
];
};
other2 = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_column_to_image_instance"
"device_image_to_column_instance"
"device_permute_scale_instance"
"device_quantization_instance"
"device_reduce_instance"
];
};
other3 = {
enabled = !miOpenReqLibsOnly;
targets = [
"device_normalization_bwd_data_instance"
"device_normalization_bwd_gamma_beta_instance"
@@ -201,11 +226,13 @@ let
targets,
extraCmakeFlags ? [ ],
requiredSystemFeatures ? [ "big-parallel" ],
enabled ? true,
onlyFor ? [ ],
}:
let
supported =
onlyFor == [ ] || (lib.lists.intersectLists composable_kernel_base.gpuTargets onlyFor) != [ ];
enabled
&& (onlyFor == [ ] || (lib.lists.intersectLists composable_kernel_base.gpuTargets onlyFor) != [ ]);
in
if supported then
(composable_kernel_base.overrideAttrs (old: {
@@ -213,6 +213,7 @@ let
ucx = prev.ucx.override {
enableCuda = false;
enableRocm = true;
rocmPackages = self;
};
in
{
@@ -9,13 +9,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "half";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "half";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-H8Ogm4nxaxDB0WHx+KhRjUO3vzp3AwCqrIQ6k8R+xkc=";
hash = "sha256-If9O5BEeymsLN+C0drZsPSxEWXpJTxeDBGNHNXSumm4=";
};
nativeBuildInputs = [
@@ -7,13 +7,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "hip-common";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "HIP";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-B4Gc119iff3ak9tmpz3rUJBtCk5T1AA8z67K9PshTLQ=";
hash = "sha256-9VQrCed5EKVXu41Qrnf2m2jXveWt5Y/SlSxlUmjZS0M=";
};
dontConfigure = true;
@@ -8,13 +8,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "hipblas-common";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "hipBLAS-common";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-eTwoAXH2HGdSAOLTZHJUFHF+c2wWHixqeMqr60KxJrc=";
hash = "sha256-NXSMVtfjei4vIjU9y4o3Px/fplq7C7ziY1R8YqnY2LQ=";
};
nativeBuildInputs = [
@@ -2,7 +2,6 @@
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
rocmUpdateScript,
cmake,
rocm-cmake,
@@ -25,7 +24,7 @@
# Can also use cuBLAS
stdenv.mkDerivation (finalAttrs: {
pname = "hipblas";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -44,19 +43,9 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "hipBLAS";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-lQv8Ik6+0ldqyeJ05CSGB0309nIpzlRL3CRYeQxVfd0=";
hash = "sha256-SoszZBbk8sM3yjgahs1UrPCsEbGmTYTpdOw+Ah/z8H8=";
};
patches = [
(fetchpatch {
# Subject: [PATCH] Add gfx1150, gfx1150, gfx1200, gfx1201 support (#1055)
# This was merged to release/rocm-rel-6.4 but AMD forgot to tag it for 6.4.3
name = "release-6.4-arch-extra.patch";
url = "https://github.com/ROCm/hipBLAS/commit/0100b32ccff9a0f12134694315b4e44884e25a8e.patch";
hash = "sha256-BmktlLJpYaTcogHzEKpZdCnksIIysEO47WMezXoxvCs=";
})
];
postPatch = ''
substituteInPlace library/CMakeLists.txt \
--replace-fail "find_package(Git REQUIRED)" ""
@@ -70,7 +70,7 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "hipblaslt${clr.gpuArchSuffix}";
version = "6.5-unstable-2025-08-21";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
@@ -23,12 +23,6 @@ stdenv.mkDerivation (finalAttrs: {
llvm.clang-unwrapped
];
patches = [
# https://github.com/ROCm/llvm-project/pull/183
# Fixes always-invoked UB in hipcc
./0001-hipcc-Remove-extra-definition-of-hipBinUtilPtr_-in-d.patch
];
postPatch = ''
substituteInPlace src/hipBin_amd.h \
--replace-fail "/usr/bin/lsb_release" "${lsb-release}/bin/lsb_release"
@@ -17,7 +17,7 @@
# CUB can also be used as a backend instead of rocPRIM.
stdenv.mkDerivation (finalAttrs: {
pname = "hipcub";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -33,7 +33,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "hipCUB";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-yRJxhYFZYiKNR2xrn5fif/+vjHKKcKdn0JKPi972g+0=";
hash = "sha256-Vx9h/DTZo7RfQrflVwXOCKiA7rt6dQQw/P/bllgtq8w=";
};
nativeBuildInputs = [
@@ -21,7 +21,7 @@
# Can also use cuFFT
stdenv.mkDerivation (finalAttrs: {
pname = "hipfft";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -40,7 +40,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "hipFFT";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-4W93OOKTqNteoQ4GKycr06cjvGy5NF7RR08F+rfn+0o=";
hash = "sha256-cozwHUlqACq0IM3YToc/xFB694DJ3rPiEPUCTo0xuHY=";
fetchSubmodules = true;
};
@@ -11,13 +11,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "hipfort";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "hipfort";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-Nks1+0X8bLtZ9HqZXJOtrAWQlJquMH+feuu1stf/9Vo=";
hash = "sha256-s/VOaU5IKZYH0Vhtjl/UZTrnpLsJ7zWFTvAJY2x3AcA=";
};
patches = [
@@ -12,13 +12,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "hipify";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "HIPIFY";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-uj25WmGCpwouS1yzW9Oil5Vyrbyj5yRITvWF9WaGozM=";
hash = "sha256-xcWUYfZvbTHs4BvDiXAOLONfLiCq9uEGOHSK/hOWg7c=";
};
strictDeps = true;
@@ -52,10 +52,12 @@ stdenv.mkDerivation (finalAttrs: {
};
postInstall = ''
rm $out/bin/hipify-perl
chmod +x $out/bin/*
chmod +x $out/libexec/*
patchShebangs $out/bin/
patchShebangs $out/libexec/
ln -s $out/{libexec/hipify,bin}/hipify-perl
'';
meta = {
@@ -14,7 +14,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "hiprand";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -27,7 +27,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "hipRAND";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-f/AWDV7vkjt8BnjhLwT2m1Y6dlZy054+z6J0UW9Glg8=";
hash = "sha256-yOLdFQ4/OGGfX75A/ElY1xD+4nkcqT8tZx2bQZgXTx4=";
};
nativeBuildInputs = [
@@ -9,17 +9,16 @@
stdenv.mkDerivation (finalAttrs: {
pname = "hiprt";
version = "2.5.a21e075.3";
version = "3.0.3.a1525e7";
src = fetchFromGitHub {
owner = "GPUOpen-LibrariesAndSDKs";
repo = "HIPRT";
tag = finalAttrs.version;
sha256 = "sha256-3yGhwIsFHlFMCEzuYnXuXNzs99m7f2LTkYaTGs0GEcI=";
hash = "sha256-7r7KO+WuXOeQQhYLYpJRrD4ZqVsBOqaD2NGD15CWnoo=";
};
postPatch = ''
rm -rf contrib/easy-encrypt # contains prebuilt easy-encrypt binaries, we disable encryption
substituteInPlace contrib/Orochi/contrib/hipew/src/hipew.cpp --replace-fail '"/opt/rocm/hip/lib/' '"${clr}/lib'
substituteInPlace hiprt/hiprt_libpath.h --replace-fail '"/opt/rocm/hip/lib/' '"${clr}/lib/'
'';
@@ -40,8 +39,6 @@ stdenv.mkDerivation (finalAttrs: {
(lib.cmakeBool "PRECOMPILE" true)
# needs accelerator
(lib.cmakeBool "NO_UNITTEST" true)
# we have no need to support baking encrypted kernels into object files
(lib.cmakeBool "NO_ENCRYPT" true)
(lib.cmakeBool "FORCE_DISABLE_CUDA" true)
];
@@ -21,7 +21,7 @@
# Can also use cuSOLVER
stdenv.mkDerivation (finalAttrs: {
pname = "hipsolver";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -40,7 +40,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "hipSOLVER";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-YP88fSM27Do0/tZ676Pvv2tr+lnlQa4vr3UnVNaVpLA=";
hash = "sha256-IZAVdu+VpSrJ/EZXymOzvrGnRLBpxUgVeaj1U+ux02M=";
};
nativeBuildInputs = [
@@ -19,7 +19,7 @@
# This can also use cuSPARSE as a backend instead of rocSPARSE
stdenv.mkDerivation (finalAttrs: {
pname = "hipsparse";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -35,7 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "hipSPARSE";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-fbh9fKlzxuIBTeCV/bEQbUS3lO6O3KoGF7/tTqRaCpE=";
hash = "sha256-hfC+QsOfDNKIZROgTZZsGbAG0yghc27PyVwCDr8MEJ8=";
};
nativeBuildInputs = [
@@ -2,7 +2,7 @@
lib,
stdenv,
# LLVM version closest to ROCm fork to override
llvmPackages_19,
llvmPackages_20,
overrideCC,
lndir,
rocm-device-libs,
@@ -11,7 +11,6 @@
symlinkJoin,
rdfind,
zstd,
zlib,
gcc-unwrapped,
glibc,
replaceVars,
@@ -34,12 +33,12 @@
}:
let
version = "6.4.3";
version = "7.0.2";
# major version of this should be the clang version ROCm forked from
rocmLlvmVersion = "19.0.0-rocm";
rocmLlvmVersion = "20.0.0-rocm";
# llvmPackages_base version should match rocmLlvmVersion
# so libllvm's bitcode is compatible with the built toolchain
llvmPackages_base = llvmPackages_19;
llvmPackages_base = llvmPackages_20;
llvmPackagesNoBintools = llvmPackages_base.override {
bootBintools = null;
bootBintoolsNoLibc = null;
@@ -116,7 +115,7 @@ let
owner = "ROCm";
repo = "llvm-project";
rev = "rocm-${version}";
hash = "sha256-12ftH5fMPAsbcEBmhADwW1YY/Yxo/MAK1FafKczITMg=";
hash = "sha256-gJlDFbCRsiwHgRzmwm36C3WvGfWwgPrtBNUHYmZHTB8=";
};
llvmMajorVersion = lib.versions.major rocmLlvmVersion;
# An llvmPackages (pkgs/development/compilers/llvm/) built from ROCm LLVM's source tree
@@ -229,9 +228,8 @@ let
commonCmakeFlags = [
llvmTargetsFlag
# Compression support is required for compressed offload kernels
# Set FORCE_ON so that failure to find the compression libs will be a build error
# Set FORCE_ON so that failure to find the compression lib will be a build error
(lib.cmakeFeature "LLVM_ENABLE_ZSTD" "FORCE_ON")
(lib.cmakeFeature "LLVM_ENABLE_ZLIB" "FORCE_ON")
# required for threaded ThinLTO to work
(lib.cmakeBool "LLVM_ENABLE_THREADS" true)
# LLVM tries to call git to embed VCS info if FORCE_VC_ aren't set
@@ -271,6 +269,7 @@ let
"-g1"
]
);
inherit (llvmPackagesRocm) libcxx;
in
overrideLlvmPackagesRocm (s: {
libllvm = (s.prev.libllvm.override { }).overrideAttrs (old: {
@@ -282,13 +281,6 @@ overrideLlvmPackagesRocm (s: {
hash = "sha256-yly93PvGIXOnFeDGZ2W+W6SyhdWFM6iwA+qOeaptrh0=";
relative = "llvm";
})
(fetchpatch {
# fix tools/llvm-exegesis/X86/latency/ failing with glibc 2.4+
name = "exegesis-latency-glibc-fix.patch";
sha256 = "sha256-CjKxQlYwHXTM0mVnv8k/ssg5OXuKpJxRvBZGXjrFZAg=";
url = "https://github.com/llvm/llvm-project/commit/1e8df9e85a1ff213e5868bd822877695f27504ad.patch";
relative = "llvm";
})
./perf-increase-namestring-size.patch
# TODO: consider reapplying "Don't include aliases in RegisterClassInfo::IgnoreCSRForAllocOrder"
# it was reverted as it's a pessimization for non-GPU archs, but this compiler
@@ -299,7 +291,6 @@ overrideLlvmPackagesRocm (s: {
nativeBuildInputs = old.nativeBuildInputs ++ [ removeReferencesTo ];
buildInputs = old.buildInputs ++ [
zstd
zlib
];
preFixup = ''
moveToOutput "lib/lib*.a" "$dev"
@@ -329,7 +320,6 @@ overrideLlvmPackagesRocm (s: {
];
buildInputs = old.buildInputs ++ [
zstd
zlib
];
env = (old.env or { }) // {
NIX_CFLAGS_COMPILE = "${(old.env or { }).NIX_CFLAGS_COMPILE or ""} ${llvmExtraCflags}";
@@ -351,25 +341,7 @@ overrideLlvmPackagesRocm (s: {
passthru = old.passthru // {
inherit gcc-prefix;
};
patches = [
(fetchpatch {
# [PATCH] [clang] Install scan-build-py into plain "lib" directory
# Backported so 19/clang/gnu-install-dirs patch applies to AMD's LLVM fork
hash = "sha256-bOqAjBwRKcERpQkiBpuojGs6ddd5Ht3zL5l3TuJK2w8=";
url = "https://github.com/llvm/llvm-project/commit/816fde1cbb700ebcc8b3df81fb93d675c04c12cd.patch";
relative = "clang";
})
(fetchpatch {
# [PATCH] Reapply "[CUDA][HIP] Add a __device__ version of std::__glibcxx_assert_fail()"
# Fix errors with gcc15
# https://github.com/ROCm/composable_kernel/issues/2887
hash = "sha256-liowyS6FTsDhH8mJYXsanK7GEIlXFhd68GRDf/7Y6gg=";
url = "https://github.com/llvm/llvm-project/commit/8ec0552a7f1f50986dda6d13eae310d121d7e3ba.patch";
relative = "clang";
})
]
++ old.patches
++ [
patches = old.patches ++ [
# Never add FHS include paths
./clang-bodge-ignore-systemwide-incls.diff
# Prevents builds timing out if a single compiler invocation is very slow but
@@ -390,7 +362,6 @@ overrideLlvmPackagesRocm (s: {
];
buildInputs = old.buildInputs ++ [
zstd
zlib
];
env = (old.env or { }) // {
NIX_CFLAGS_COMPILE = "${(old.env or { }).NIX_CFLAGS_COMPILE or ""} ${llvmExtraCflags}";
@@ -465,20 +436,6 @@ overrideLlvmPackagesRocm (s: {
isGNU = false;
};
compiler-rt-libc = s.prev.compiler-rt-libc.overrideAttrs (old: {
patches = old.patches ++ [
(fetchpatch {
name = "Fix-missing-main-function-in-float16-bfloat16-support-checks.patch";
url = "https://github.com/ROCm/llvm-project/commit/68d8b3846ab1e6550910f2a9a685690eee558af2.patch";
hash = "sha256-Db+L1HFMWVj4CrofsGbn5lnMoCzEcU+7q12KKFb17/g=";
relative = "compiler-rt";
})
(fetchpatch {
# Fixes fortify hardening compile error related to openat usage
hash = "sha256-pgpN1q1vIQrPXHPxNSZ6zfgV2EflHO5Amzl+2BDjXbs=";
url = "https://github.com/llvm/llvm-project/commit/155b7a12820ec45095988b6aa6e057afaf2bc892.patch";
relative = "compiler-rt";
})
];
meta = old.meta // llvmMeta;
});
compiler-rt = s.final.compiler-rt-libc;
@@ -509,11 +466,14 @@ overrideLlvmPackagesRocm (s: {
];
buildInputs = old.buildInputs ++ [
clang-unwrapped
zlib
zstd
libxml2
libffi
];
postFixup = ''
${old.postFixup or ""}
ln -s $out/lib/libomp.so $dev/lib/libomp.so
'';
});
# AMD has a separate MLIR impl which we package under rocmPackages.rocmlir
# It would be an error to rely on the original mlir package from this scope
@@ -59,7 +59,7 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "migraphx";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -75,17 +75,11 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "AMDMIGraphX";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-8iOBoRBygTvn9eX5f9cG0kBHKgKSeflqHkV6Qwh/ruA=";
hash = "sha256-P3jiq6i7jpfpL9/S7mc1CiNRwAt8fzy3waHKhyuYIXI=";
};
patches = [
./msgpack-6-compat.patch
# Backport "Add quantize_bf16 to C api output"
# Required for onnxruntime 1.23+
(fetchpatch {
url = "https://github.com/ROCm/AMDMIGraphX/commit/f33afac654dfc4558f4d9867c2d28a2d98cf49b4.patch";
hash = "sha256-5O4UanmyhQ9Te830SISaquM4TdG/gEY3wfWSaU/cS30=";
})
];
nativeBuildInputs = [
@@ -159,6 +153,12 @@ stdenv.mkDerivation (finalAttrs: {
# `error: '__clang_hip_runtime_wrapper.h' file not found [clang-diagnostic-error]`
substituteInPlace CMakeLists.txt \
--replace "set(MIGRAPHX_TIDY_ERRORS ALL)" ""
# Fix Unicode minus sign (U+2212) in comment that breaks EMBED_USE=CArrays
# The embed mechanism generates char[] arrays that can't store unicode
# which has values >127
substituteInPlace src/targets/gpu/kernels/include/migraphx/kernels/bit.hpp \
--replace-fail "// popcount(~(x | x))" "// popcount(~(x | -x))"
''
+ lib.optionalString (!buildDocs) ''
substituteInPlace CMakeLists.txt \
@@ -37,13 +37,13 @@
gpuTargets ? clr.localGpuTargets or clr.gpuTargets,
buildDocs ? false, # Needs internet because of rocm-docs-core
buildTests ? false,
withComposableKernel ? composable_kernel.anyMfmaTarget,
withComposableKernel ? true,
}:
let
# FIXME: cmake files need patched to include this properly
cFlags = "-Wno-documentation-pedantic --offload-compress -I${hipblas-common}/include -I${hipblas}/include -I${roctracer}/include -I${nlohmann_json}/include -I${sqlite.dev}/include -I${rocrand}/include";
version = "6.4.3";
version = "7.0.2";
# Targets outside this list will get
# error: use of undeclared identifier 'CK_BUFFER_RESOURCE_3RD_DWORD'
@@ -69,7 +69,7 @@ let
owner = "ROCm";
repo = "MIOpen";
rev = "rocm-${version}";
hash = "sha256-DEcVj2vOwIYYyNKEKFqZ0fb9o+/QRpwiSksxwnmgEMc=";
hash = "sha256-PJj2LzU5naAku+FOnMl+Ymad2beYYSS81/K/CR+l2UA=";
fetchLFS = true;
fetchSubmodules = true;
# WORKAROUND: .lfsconfig is incorrectly set to exclude everything upstream
@@ -40,13 +40,13 @@ stdenv.mkDerivation (finalAttrs: {
"cpu"
);
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "MIVisionX";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-07MivgCYmKLnhGDjOYsFBfwIxEoQLYNoRbOo3MPpVzE=";
hash = "sha256-SO0rE86UmX9f574ALdnnBDFceKGKTvJDQ8Lf7iSlJtA=";
};
patches = [
@@ -13,6 +13,7 @@
perl,
hipify,
python3,
fmt,
gtest,
chrpath,
roctracer,
@@ -39,7 +40,7 @@ in
# infiniband ib_peer_mem support isn't in the mainline kernel but is carried by some distros
stdenv.mkDerivation (finalAttrs: {
pname = "rccl${clr.gpuArchSuffix}";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -49,8 +50,6 @@ stdenv.mkDerivation (finalAttrs: {
];
patches = [
./fix-mainline-support-and-ub.diff
./enable-mscclpp-on-all-gfx9.diff
./rccl-test-missing-iomanip.diff
./fix_hw_reg_hw_id_gt_gfx10.patch
];
@@ -59,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "rccl";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-XpD+UjgdbAoGYK5UvvTX3f8rny4tiEDH/vYoCdZhtjo=";
hash = "sha256-ByKz6TNdGVbh65ZH5PtgUbAj4qNVmOBmZ9SrOjkTbWU=";
};
nativeBuildInputs = [
@@ -75,6 +74,7 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
rocm-smi
fmt
gtest
roctracer
rocprofiler
@@ -4,6 +4,7 @@
fetchFromGitHub,
rocmUpdateScript,
cmake,
pkg-config,
amdsmi,
rocm-smi,
rocm-runtime,
@@ -48,7 +49,7 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "rdc";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -64,11 +65,19 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "rdc";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-zILZPW9Lx5T+cMDqTg/zWy3ro+Nypzc9bDNTupZjt4s=";
hash = "sha256-ztInmK3oCbvnLe7XQ55/hUHRyhuZ2M2XVTG1NcVHtGs=";
};
patches = [
# https://github.com/ROCm/rocm-systems/pull/2423
./fix-cmake-cxxflags.patch
# https://github.com/ROCm/rocm-systems/pull/2424
./fix-libcap-pkgconfig.patch
];
nativeBuildInputs = [
cmake
pkg-config
protobuf
]
++ lib.optionals buildDocs [
@@ -90,10 +99,8 @@ stdenv.mkDerivation (finalAttrs: {
gtest
];
CXXFLAGS = "-I${libcap.dev}/include";
cmakeFlags = [
"-DCMAKE_VERBOSE_MAKEFILE=OFF"
"-DCMAKE_VERBOSE_MAKEFILE=ON"
"-DRDC_INSTALL_PREFIX=${placeholder "out"}"
"-DBUILD_RVS=OFF" # TODO: Needs RVS package
"-DBUILD_ROCRTEST=ON"
@@ -114,7 +121,7 @@ stdenv.mkDerivation (finalAttrs: {
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace "file(STRINGS /etc/os-release LINUX_DISTRO LIMIT_COUNT 1 REGEX \"NAME=\")" "set(LINUX_DISTRO \"NixOS\")"
--replace-fail "file(STRINGS /etc/os-release LINUX_DISTRO LIMIT_COUNT 1 REGEX \"NAME=\")" "set(LINUX_DISTRO \"NixOS\")"
'';
postInstall = ''
@@ -0,0 +1,217 @@
From 92f25181dbf722cb749e445851580df4ea779299 Mon Sep 17 00:00:00 2001
From: Luna Nova <git@lunnova.dev>
Date: Sun, 21 Dec 2025 08:01:08 -0800
Subject: [PATCH 1/2] fix(rdc): set CMAKE_CXX_FLAGS after project() to avoid
clobbering env
CMAKE_CXX_FLAGS' initial value is set from $CXXFLAGS on project() call
so the previous location ignored CXXFLAGS from env or CMake toolchain
config.
Ref: https://cmake.org/cmake/help/v4.2/variable/CMAKE_LANG_FLAGS_INIT.html
Fixes: 874a7b438f ("CMAKE - Fix build types")
---
CMakeLists.txt | 48 +++++++++++++++++++------------------
1 file changed, 25 insertions(+), 23 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 907c9fbff42..8b386c7be3d 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,29 +55,6 @@ set_property(
PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" "MinSizeRel"
)
-# Set compile flags
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
-set(CMAKE_CXX_FLAGS_DEBUG
- "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
- CACHE STRING
- "Flags for Debug builds"
-)
-set(CMAKE_CXX_FLAGS_RELEASE
- "${CMAKE_CXX_FLAGS_RELEASE} -O2 -s -DNDEBUG"
- CACHE STRING
- "Flags for Release builds"
-)
-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
- "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
- CACHE STRING
- "Flags for RelWithDebInfo builds"
-)
-set(CMAKE_CXX_FLAGS_MINSIZEREL
- "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
- CACHE STRING
- "Flags for MinSizeRel builds"
-)
-
set(CMAKE_MODULE_PATH
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/"
CACHE INTERNAL
@@ -155,6 +132,31 @@ project(${RDC} VERSION "${VERSION_STRING}" HOMEPAGE_URL "https://github.com/Rade
# this must go after project()
include(GNUInstallDirs)
+# NB: CMAKE_<LANG>_FLAGS are initialized from environment (CXXFLAGS et al.)
+# during project(). Setting them before project() discards env and toolchain
+# defaults. Cf. CMAKE_<LANG>_FLAGS_INIT for toolchain overrides.
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
+set(CMAKE_CXX_FLAGS_DEBUG
+ "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
+ CACHE STRING
+ "Flags for Debug builds"
+)
+set(CMAKE_CXX_FLAGS_RELEASE
+ "${CMAKE_CXX_FLAGS_RELEASE} -O2 -s -DNDEBUG"
+ CACHE STRING
+ "Flags for Release builds"
+)
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
+ "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
+ CACHE STRING
+ "Flags for RelWithDebInfo builds"
+)
+set(CMAKE_CXX_FLAGS_MINSIZEREL
+ "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
+ CACHE STRING
+ "Flags for MinSizeRel builds"
+)
+
set(COMMON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/common")
set(GRPC_ROOT_DEFAULT "/usr")
From 0c8710c3570963b29c709b1cd1f78b15fd73a950 Mon Sep 17 00:00:00 2001
From: Luna Nova <git@lunnova.dev>
Date: Sun, 21 Dec 2025 08:13:04 -0800
Subject: [PATCH 2/2] fix(rdc): don't reimplement CMake default build type flag
logic
The previous approach was overly complicated and added nothing. CMake already defaults
similar flags for each of the default supported build types.
Additionally, the previous flags broke AArch64 as -m64 -msse are incompatible.
It's not necessary to explicitly set this with modern toolchains.
Fixes: 874a7b438f ("CMAKE - Fix build types")
Fixes: bc7f01e992 ("Initial RDC commit")
---
CMakeLists.txt | 25 +---------------------
example/CMakeLists.txt | 26 ++---------------------
tests/example/CMakeLists.txt | 24 +--------------------
3 files changed, 4 insertions(+), 71 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8b386c7be3d..251fcddd653 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -132,30 +132,7 @@ project(${RDC} VERSION "${VERSION_STRING}" HOMEPAGE_URL "https://github.com/Rade
# this must go after project()
include(GNUInstallDirs)
-# NB: CMAKE_<LANG>_FLAGS are initialized from environment (CXXFLAGS et al.)
-# during project(). Setting them before project() discards env and toolchain
-# defaults. Cf. CMAKE_<LANG>_FLAGS_INIT for toolchain overrides.
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
-set(CMAKE_CXX_FLAGS_DEBUG
- "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
- CACHE STRING
- "Flags for Debug builds"
-)
-set(CMAKE_CXX_FLAGS_RELEASE
- "${CMAKE_CXX_FLAGS_RELEASE} -O2 -s -DNDEBUG"
- CACHE STRING
- "Flags for Release builds"
-)
-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
- "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
- CACHE STRING
- "Flags for RelWithDebInfo builds"
-)
-set(CMAKE_CXX_FLAGS_MINSIZEREL
- "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
- CACHE STRING
- "Flags for MinSizeRel builds"
-)
+add_compile_options(-Wall -Wextra)
set(COMMON_DIR "${CMAKE_CURRENT_SOURCE_DIR}/common")
diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt
index 378a2005818..7c51307ec38 100755
--- a/example/CMakeLists.txt
+++ b/example/CMakeLists.txt
@@ -31,30 +31,6 @@ cmake_minimum_required(VERSION 3.15)
option(CMAKE_VERBOSE_MAKEFILE "Enable verbose output" ON)
option(CMAKE_EXPORT_COMPILE_COMMANDS "Export compile commands for linters and autocompleters" ON)
-# Set compile flags
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
-set(CMAKE_CXX_FLAGS_DEBUG
- "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
- CACHE STRING
- "Flags for Debug builds"
-)
-# note: no '-s' here unlike other CMakeLists.txt
-set(CMAKE_CXX_FLAGS_RELEASE
- "${CMAKE_CXX_FLAGS_RELEASE} -O2 -DNDEBUG"
- CACHE STRING
- "Flags for Release builds"
-)
-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
- "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
- CACHE STRING
- "Flags for RelWithDebInfo builds"
-)
-set(CMAKE_CXX_FLAGS_MINSIZEREL
- "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
- CACHE STRING
- "Flags for MinSizeRel builds"
-)
-
set(CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use")
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
@@ -66,6 +42,8 @@ endif()
project(RDC_example)
+add_compile_options(-Wall -Wextra)
+
# provides cmake_print_variables(VAR)
include(CMakePrintHelpers)
diff --git a/tests/example/CMakeLists.txt b/tests/example/CMakeLists.txt
index d5614f387bd..13c2f3857a1 100755
--- a/tests/example/CMakeLists.txt
+++ b/tests/example/CMakeLists.txt
@@ -22,29 +22,7 @@ message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
message(" Cmake Example Lib ")
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
-# Set compile flags
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -m64 -msse -msse2")
-set(CMAKE_CXX_FLAGS_DEBUG
- "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -DDEBUG"
- CACHE STRING
- "Flags for Debug builds"
-)
-# note: no '-s' here unlike other CMakeLists.txt
-set(CMAKE_CXX_FLAGS_RELEASE
- "${CMAKE_CXX_FLAGS_RELEASE} -O2 -DNDEBUG"
- CACHE STRING
- "Flags for Release builds"
-)
-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
- "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g -DNDEBUG"
- CACHE STRING
- "Flags for RelWithDebInfo builds"
-)
-set(CMAKE_CXX_FLAGS_MINSIZEREL
- "${CMAKE_CXX_FLAGS_MINSIZEREL} -Os -DNDEBUG"
- CACHE STRING
- "Flags for MinSizeRel builds"
-)
+add_compile_options(-Wall -Wextra)
# Required Defines first:
@@ -0,0 +1,57 @@
From 299f2c770ff0abf07b8f394f154168d2aa78aa60 Mon Sep 17 00:00:00 2001
From: Luna Nova <git@lunnova.dev>
Date: Sun, 21 Dec 2025 08:23:01 -0800
Subject: [PATCH] fix(rdc): use pkg-config to find libcap
If libcap isn't available in system wide FHS include paths building would fail.
Fix this by using pkg-config to find libcap which provides both the library
to link and include dirs.
---
CMakeLists.txt | 6 +++---
rdc_libs/rdc/CMakeLists.txt | 2 +-
server/CMakeLists.txt | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 907c9fbff42..00e0a9dd87d 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -192,9 +192,9 @@ mark_as_advanced(
CPACK_GENERATOR
)
-# check if libcap exists
-# needed for sys/capabilities.h
-find_library(LIB_CAP NAMES cap REQUIRED)
+# needed for sys/capability.h
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(LIBCAP REQUIRED IMPORTED_TARGET libcap)
if(BUILD_STANDALONE AND GRPC_ROOT STREQUAL GRPC_ROOT_DEFAULT)
message(
diff --git a/rdc_libs/rdc/CMakeLists.txt b/rdc_libs/rdc/CMakeLists.txt
index d4e368edca5..f9a3ac4c487 100644
--- a/rdc_libs/rdc/CMakeLists.txt
+++ b/rdc_libs/rdc/CMakeLists.txt
@@ -71,7 +71,7 @@ set(RDC_LIB_INC_LIST
message("RDC_LIB_INC_LIST=${RDC_LIB_INC_LIST}")
add_library(${RDC_LIB} SHARED ${RDC_LIB_SRC_LIST} ${RDC_LIB_INC_LIST})
-target_link_libraries(${RDC_LIB} ${BOOTSTRAP_LIB} pthread amd_smi cap)
+target_link_libraries(${RDC_LIB} ${BOOTSTRAP_LIB} pthread amd_smi PkgConfig::LIBCAP)
target_include_directories(
${RDC_LIB}
PRIVATE "${PROJECT_SOURCE_DIR}" "${PROJECT_SOURCE_DIR}/include" "${AMD_SMI_INCLUDE_DIR}"
diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt
index baf0d851c86..0a6e71dda1c 100755
--- a/server/CMakeLists.txt
+++ b/server/CMakeLists.txt
@@ -97,7 +97,7 @@ target_link_libraries(
pthread
rt
gRPC::grpc++
- cap
+ PkgConfig::LIBCAP
dl
amd_smi
rdc_bootstrap
@@ -22,7 +22,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocalution";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -41,7 +41,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "rocALUTION";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-bZx1Cc2jcIfysohKCKzj5mowM3IeCelRhVaBU73KnTo=";
hash = "sha256-/Tcb11/63MWnUTyigDrL2slwqL8C553hG5OKRYZan7s=";
};
nativeBuildInputs = [
@@ -40,13 +40,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "rocblas${clr.gpuArchSuffix}";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "rocBLAS";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-FCzo/BOk4xLEFkdOdqcCXh4a9t3/OIIBEy8oz6oOMWg=";
hash = "sha256-528jAdhWtZbbw76dfUgpMr5px0T7q4Oj76jp0z0lh3A=";
};
outputs = [ "out" ] ++ lib.optional buildBenchmarks "benchmark" ++ lib.optional buildTests "test";
@@ -122,7 +122,7 @@ stdenv.mkDerivation (finalAttrs: {
++ lib.optionals buildTensile [
"-DCPACK_SET_DESTDIR=OFF"
"-DLINK_BLIS=ON"
"-DBLIS_LIB=${amd-blis}/lib/libblis-mt.so"
"-DBLAS_LIBRARY=${amd-blis}/lib/libblis-mt.so"
"-DBLIS_INCLUDE_DIR=${amd-blis}/include/blis/"
"-DBLA_PREFER_PKGCONFIG=ON"
"-DTensile_CODE_OBJECT_VERSION=default"
@@ -136,23 +136,27 @@ stdenv.mkDerivation (finalAttrs: {
patches = [
(fetchpatch {
name = "Extend-rocBLAS-HIP-ISA-compatibility.patch";
url = "https://github.com/GZGavinZhao/rocBLAS/commit/89b75ff9cc731f71f370fad90517395e117b03bb.patch";
hash = "sha256-W/ohOOyNCcYYLOiQlPzsrTlNtCBdJpKVxO8s+4G7sjo=";
url = "https://github.com/GZGavinZhao/rocm-libraries/commit/2850f22f80f90c9e498f520608a82989a4932ec3.patch";
hash = "sha256-SPsdEwGe+r8bQudkChRzBDAgu3tPQWFweZCgzh+4nOE=";
stripLen = 2;
})
./hiplaslt-unstable-compat.patch
];
# Pass $NIX_BUILD_CORES to Tensile
postPatch = ''
substituteInPlace cmake/build-options.cmake \
--replace-fail 'Tensile_CPU_THREADS ""' 'Tensile_CPU_THREADS "$ENV{NIX_BUILD_CORES}"'
substituteInPlace CMakeLists.txt \
--replace-fail "4.43.0" "4.44.0" \
--replace-fail '0.10' '1.0'
''
# Workaround: libblis detection uses broken absolute paths
# TODO: upstream a proper fix
+ ''
substituteInPlace clients/CMakeLists.txt \
--replace-fail "if ( NOT WIN32 )" "if(OFF)" \
--replace-fail "else() # WIN32" "elseif(OFF)"
''
# Fixes sh: line 1: /usr/bin/diff: No such file or directory
# /build/source/clients/gtest/../include/testing_logging.hpp:1117: Failure
+ lib.optionals buildTests ''
+ lib.optionalString buildTests ''
substituteInPlace clients/include/testing_logging.hpp \
--replace-fail "/usr/bin/diff" "${lib.getExe' diffutils "diff"}"
'';
@@ -47,7 +47,7 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "rocdbgapi";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -60,7 +60,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "ROCdbgapi";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-Rr8+SNeFps0rjk4Jn2+rFmtRJfL42l0tNOz13oZQy+I=";
hash = "sha256-adzHfTd4O59YKqkPL1oZnM8qiuGjlWefbl50MI2Z7co=";
};
nativeBuildInputs = [
@@ -20,13 +20,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocfft${clr.gpuArchSuffix}";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "rocFFT";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-yaOjBF2aJkCBlxkydyOsrfT4lNZ0BVkS2jJC0fEiBug=";
hash = "sha256-VVRZSmMma/sjSj2obRrwP118v/FasS30ZU0nFsEp9rw=";
};
nativeBuildInputs = [
@@ -23,13 +23,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocgdb";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "ROCgdb";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-evDWg2w2FHv6OU5BQOCAXTlDm7JpwdJ3Wh5a2i5r1gQ=";
hash = "sha256-IYdhYYJGTXBIftTEpvi+lvdhtYgdFWSpdNbtTBh0l9s=";
};
nativeBuildInputs = [
@@ -9,13 +9,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocm-cmake";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "rocm-cmake";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-wAipNWAB66YNf7exLSNPAzg3NgkGD9LPKfKiulL5yak=";
hash = "sha256-Gu+w+2dXKXcJtdmpODByxQaZbYMkoAeX9/0tOcGy5Es=";
};
nativeBuildInputs = [ cmake ];
@@ -17,13 +17,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "rocm-core";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "rocm-core";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-Z21k+0vi/P35WTHGAdfUAX7/jVv+d9g5YBo+HTi1Mpk=";
hash = "sha256-TKHNtY3XoLznOi1aVHdxFk3bedtLKkrFy0NVm0ad6ZY=";
};
patches = [
@@ -16,13 +16,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocm-runtime";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "ROCR-Runtime";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-zs0nydwYUY+8uiPyJxgTfAiV7spUMbESb0jUUvFf+AU=";
hash = "sha256-oz2UCR4XEhNm1uDlCeDnDJrmysWKA6GKxlEuFu21es0=";
};
cmakeBuildType = "RelWithDebInfo";
@@ -59,11 +59,6 @@ stdenv.mkDerivation (finalAttrs: {
url = "https://github.com/GZGavinZhao/ROCR-Runtime/commit/7c63e7185d8fcf08537a278908946145f6231121.patch";
})
# Patches for UB at runtime https://github.com/ROCm/ROCR-Runtime/issues/272
(fetchpatch {
# [PATCH] hsa-runtime: set underlying type of hsa_region_info_t and hsa_amd_region_info_t to int
url = "https://github.com/ROCm/ROCR-Runtime/commit/39a6a168fa07e289a10f6e20e6ead4e303e99ba0.patch";
hash = "sha256-CshJJDvII1nNyNmt+YjwMwfBHUTlrdsxkhwfgBwO+WE=";
})
(fetchpatch {
# [PATCH] queues: fix UB due to 1 << 31
url = "https://github.com/ROCm/ROCR-Runtime/commit/9b8a0f5dbee1903fa990a7d8accc1c5fbc549636.patch";
@@ -79,12 +74,6 @@ stdenv.mkDerivation (finalAttrs: {
url = "https://github.com/ROCm/ROCR-Runtime/commit/41bfc66aef437a5b349f71105fa4b907cc7e17d5.patch";
hash = "sha256-A7VhPR3eSsmjq2cTBSjBIz9i//WiNjoXm0EsRKtF+ns=";
})
# Fix build with gcc15
(fetchpatch {
# [PATCH] rocr:Add missing cstdint include
url = "https://github.com/ROCm/ROCR-Runtime/commit/5cc61b714d5b59ed5405639a37a582d839e6ebe9.patch";
hash = "sha256-IPxDShpoFB0PjCG+zwFbnW9IBTCG3G2o9sfITGs+bN4=";
})
# This causes a circular dependency, aqlprofile relies on hsa-runtime64
# which is part of rocm-runtime
# Worked around by having rocprofiler load aqlprofile directly
@@ -11,19 +11,15 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocm-smi";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "rocm_smi_lib";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-yJ3Bf+tM39JWbY+A0NlpHNkvythdAdz6ZVp1AvLcXhk=";
hash = "sha256-LzWKWiHmMDGO2ejvcT0BBg22HbYD9q0fxK/bq6JvcnQ=";
};
patches = [
./cmake.patch
];
propagatedBuildInputs = [
libdrm
];
@@ -39,6 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
# See: https://github.com/NixOS/nixpkgs/pull/197838
"-DCMAKE_INSTALL_BINDIR=bin"
"-DCMAKE_INSTALL_LIBDIR=lib"
"-DCMAKE_INSTALL_LIBEXECDIR=libexec"
"-DCMAKE_INSTALL_INCLUDEDIR=include"
];
@@ -12,14 +12,14 @@
}:
stdenv.mkDerivation (finalAttrs: {
version = "6.4.3";
version = "7.0.2";
pname = "rocminfo";
src = fetchFromGitHub {
owner = "ROCm";
repo = "rocminfo";
rev = "rocm-${finalAttrs.version}";
sha256 = "sha256-YscZ5sFsLOVBg98w2X6vTzniTvl9NfCkIE+HAH6vv5Y=";
sha256 = "sha256-wE1/golRQm5uggXRQ1BucxV3laypSOUCvjTFx5N2yTE=";
};
strictDeps = true;
@@ -39,7 +39,7 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "rocmlir${suffix}";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -52,7 +52,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "rocMLIR";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-p/gvr1Z6yZtO5N+ecSouXiCrf520jt1HMOy/tohUHfI=";
hash = "sha256-0+vZ/Lkh1fC9oKyy83YjIX4xuMJEWErd8UpZZuaaXdI=";
};
nativeBuildInputs = [
@@ -15,7 +15,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocprim";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "rocPRIM";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-lH4MlBEkVJocq1VliGBtb7VvWfS6p/uIKWR239fSjRY=";
hash = "sha256-uOlrN/FvEBBCHsPeJOWs9NNqVwrcxVExfs5wp03PH0U=";
};
nativeBuildInputs = [
@@ -18,22 +18,16 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocprofiler-register";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "rocprofiler-register";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-HaN4XMHuCRDfKOpfuZ2SkOEQfAZKouh6luqbtATUYm0=";
hash = "sha256-hK7k4tg7/5rYCSTFKsFRsRYfVevkCARcDyxlexrXbts=";
fetchSubmodules = true;
};
# vendored glog is too old and breaks on CMake 4, gets bumped in ROCm 7.0
postPatch = ''
substituteInPlace external/glog/cmake/GetCacheVariables.cmake \
--replace-fail "(VERSION 3.3)" "(VERSION 3.5)"
'';
nativeBuildInputs = [
cmake
clang
@@ -44,13 +44,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "rocprofiler";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "rocprofiler";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-CgW8foM4W3K19kUK/l8IsH2Q9DHi/z88viXTxhNqlHQ=";
hash = "sha256-p2VwMm9Ltx/SFDIFk42nY9Too0Rp/IrqfuH8cQnhoGA=";
fetchSubmodules = true;
};
@@ -4,6 +4,7 @@
fetchFromGitHub,
rocmUpdateScript,
cmake,
python3,
clr,
rocdbgapi,
elfutils,
@@ -11,18 +12,19 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocr-debug-agent";
version = "6.4.3";
version = "7.0.2";
src = fetchFromGitHub {
owner = "ROCm";
repo = "rocr_debug_agent";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-otoxZ2NHkPDIFhvn4/nvaQ/W4LF38Nx9MZ9IYEf1DyY=";
hash = "sha256-twoihis1OrCQ4K3rjDgjSErq+qktqz2xwkLLxBJIJ90=";
};
nativeBuildInputs = [
cmake
clr
python3 # TODO: check for scripts that need patchShebangs in output
];
buildInputs = [
@@ -15,7 +15,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocrand${clr.gpuArchSuffix}";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "rocRAND";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-pZAwmsWup0byGxJ5ADbztco8svBpIjBWITjs+OgKvQc=";
hash = "sha256-O7YCQBtFSa0xiHbbAXX2FyE6uRywEaMaJyX85875Yd0=";
};
nativeBuildInputs = [
@@ -36,7 +36,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocsolver${clr.gpuArchSuffix}";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -52,7 +52,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "rocSOLVER";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-JthNY5rkrrm9bf1fgkO9HnARdX6H0kiF9EW1jMbBmj4=";
hash = "sha256-/JFGqNA4weVgFuVtszYAxq65/+oZjiKC8zSxwvp964M=";
};
nativeBuildInputs = [
@@ -19,7 +19,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocsparse${clr.gpuArchSuffix}";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -35,7 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "rocSPARSE";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-PrLyqHMAJYACkBMz97iBfwCaQ9Kf1IBL7IEf1IF1/m0=";
hash = "sha256-0KFzrVGScCQDbOdlX016ymZ4lgCimd9XK4auK9V5p3k=";
};
nativeBuildInputs = [
@@ -15,7 +15,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocthrust";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "rocThrust";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-IfMBVISClD1dk7FnAakP2GIpyZFrCnAloFRTaNdSKyw=";
hash = "sha256-tbGEZ8NXu7euPN8CaRYOjcmTmYq1SUP7LNKOjO0RICE=";
};
nativeBuildInputs = [
@@ -19,7 +19,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "roctracer";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -35,7 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "roctracer";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-Dwk5cBZLysmsVA2kwpQM0FQt2KXOGcaZcAw/d8VUaXw=";
hash = "sha256-8DMwaMtzdBuAAV5KhQfqLfTtSyvPiwZxc1lAAoeXGus=";
};
nativeBuildInputs = [
@@ -19,7 +19,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocwmma";
version = "6.4.3";
version = "7.0.2";
outputs = [
"out"
@@ -38,7 +38,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCm";
repo = "rocWMMA";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-fjyxMrzt74rE7Gf4v4WawYltuw1fvahwZUpauMIE3qc=";
hash = "sha256-xCLoYvbKiAgAxDCbEopNxYBs3V3EJBmO3NpONiveXvE=";
};
patches = lib.optionals (buildTests || buildBenchmarks) [

Some files were not shown because too many files have changed in this diff Show More