diff --git a/nixos/doc/manual/configuration/gpu-accel.xml b/nixos/doc/manual/configuration/gpu-accel.xml index 9928121a56e6..251e5c26ba44 100644 --- a/nixos/doc/manual/configuration/gpu-accel.xml +++ b/nixos/doc/manual/configuration/gpu-accel.xml @@ -70,35 +70,12 @@ Platform Vendor Advanced Micro Devices, Inc. Core Next (GCN) GPUs are supported through the rocm-opencl-icd package. Adding this package to enables OpenCL - support. However, OpenCL Image support is provided through the - non-free rocm-runtime-ext package. This package can - be added to the same configuration option, but requires that - allowUnfree option is is enabled for nixpkgs. Full - OpenCL support on supported AMD GPUs is thus enabled as follows: + support: = [ rocm-opencl-icd - rocm-runtime-ext ]; - - - It is also possible to use the OpenCL Image extension without a - system-wide installation of the rocm-runtime-ext - package by setting the ROCR_EXT_DIR environment - variable to the directory that contains the extension: - - $ export \ -ROCR_EXT_DIR=`nix-build '<nixpkgs>' --no-out-link -A rocm-runtime-ext`/lib/rocm-runtime-ext - - - - With either approach, you can verify that OpenCL Image support - is indeed working with the clinfo command: - - $ clinfo | grep Image - Image support Yes -
diff --git a/pkgs/development/compilers/llvm/rocm/clang.nix b/pkgs/development/compilers/llvm/rocm/clang.nix index 86853a97c931..6bb23b77543a 100644 --- a/pkgs/development/compilers/llvm/rocm/clang.nix +++ b/pkgs/development/compilers/llvm/rocm/clang.nix @@ -4,7 +4,6 @@ , python , llvm , clang-tools-extra_src ? null -, rocm-runtime , lld , version @@ -18,7 +17,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake python ]; - buildInputs = [ llvm rocm-runtime ]; + buildInputs = [ llvm ]; hardeningDisable = [ "all" ]; diff --git a/pkgs/development/compilers/llvm/rocm/default.nix b/pkgs/development/compilers/llvm/rocm/default.nix index e90818d8505d..d29a2bda3302 100644 --- a/pkgs/development/compilers/llvm/rocm/default.nix +++ b/pkgs/development/compilers/llvm/rocm/default.nix @@ -1,12 +1,12 @@ { stdenv, fetchFromGitHub, callPackage, wrapCCWith }: let - version = "3.5.1"; + version = "3.7.0"; src = fetchFromGitHub { owner = "RadeonOpenCompute"; repo = "llvm-project"; rev = "rocm-${version}"; - sha256 = "03k2xp8wf4awf1zcjc2hb3kf9bqp567c3s569gp1q3q1zjg6r2ib"; + sha256 = "02p0s041wwsi4q0dhs1sj5l6059y02s31az505h0f22agz3jnpfn"; }; in rec { clang = wrapCCWith rec { diff --git a/pkgs/development/libraries/rocclr/default.nix b/pkgs/development/libraries/rocclr/default.nix index 6b561b3c9dd5..4e0836946c16 100644 --- a/pkgs/development/libraries/rocclr/default.nix +++ b/pkgs/development/libraries/rocclr/default.nix @@ -10,24 +10,25 @@ , libelf , libglvnd , libX11 +, numactl }: stdenv.mkDerivation rec { pname = "rocclr"; - version = "3.5.0"; + version = "3.7.0"; src = fetchFromGitHub { owner = "ROCm-Developer-Tools"; repo = "ROCclr"; - rev = "roc-${version}"; - sha256 = "0j70lxpwrdrb1v4lbcyzk7kilw62ip4py9fj149d8k3x5x6wkji1"; + rev = "rocm-${version}"; + sha256 = "0sx4irbmjgs5bm8dc8jc9fl1jmfdnrp3ar14hdhrsmbani7gqah3"; }; nativeBuildInputs = [ cmake rocm-cmake ]; buildInputs = [ clang rocm-comgr rocm-runtime rocm-thunk ]; - propagatedBuildInputs = [ libelf libglvnd libX11 ]; + propagatedBuildInputs = [ libelf libglvnd libX11 numactl ]; prePatch = '' substituteInPlace CMakeLists.txt \ @@ -45,10 +46,9 @@ stdenv.mkDerivation rec { ]; preFixup = '' - mv $out/include/include/* $out/include - ln -s $out/include/compiler/lib/include/* $out/include/include ln -s $out/include/compiler/lib/include/* $out/include - sed "s|^\([[:space:]]*IMPORTED_LOCATION_RELEASE \).*|\1 \"$out/lib/libamdrocclr_static.a\"|" -i $out/lib/cmake/amdrocclr_staticTargets.cmake + substituteInPlace $out/lib/cmake/rocclr/ROCclrConfig.cmake \ + --replace "/build/source/build" "$out" ''; meta = with stdenv.lib; { diff --git a/pkgs/development/libraries/rocm-comgr/default.nix b/pkgs/development/libraries/rocm-comgr/default.nix index c86b081a14c4..22fbc0e998a6 100644 --- a/pkgs/development/libraries/rocm-comgr/default.nix +++ b/pkgs/development/libraries/rocm-comgr/default.nix @@ -2,13 +2,13 @@ stdenv.mkDerivation rec { pname = "rocm-comgr"; - version = "3.5.0"; + version = "3.7.0"; src = fetchFromGitHub { owner = "RadeonOpenCompute"; repo = "ROCm-CompilerSupport"; rev = "rocm-${version}"; - sha256 = "0h9bxz98sskgzc3xpnp469iq1wi59nbijbqprlylha91y10hqb88"; + sha256 = "1r7arfdqfh6pfvjza6x2dzd5gjmkndngrp688d3n2ab92n5ijiqf"; }; sourceRoot = "source/lib/comgr"; diff --git a/pkgs/development/libraries/rocm-device-libs/default.nix b/pkgs/development/libraries/rocm-device-libs/default.nix index dcdbb1cb6d1c..c1878700aaac 100644 --- a/pkgs/development/libraries/rocm-device-libs/default.nix +++ b/pkgs/development/libraries/rocm-device-libs/default.nix @@ -5,23 +5,22 @@ , clang-unwrapped , lld , llvm -, rocm-runtime }: stdenv.mkDerivation rec { pname = "rocm-device-libs"; - version = "3.5.1"; + version = "3.7.0"; src = fetchFromGitHub { owner = "RadeonOpenCompute"; repo = "ROCm-Device-Libs"; rev = "rocm-${version}"; - sha256 = "180bx05l293hrhzk2ymx41j5lhskysywvx33igbbsngzailwsc22"; + sha256 = "1sg7wzj2mi5vhba53cp52gnya7c799f0p325ig262vi70r7mr7n2"; }; nativeBuildInputs = [ cmake ]; - buildInputs = [ clang lld llvm rocm-runtime ]; + buildInputs = [ clang lld llvm ]; cmakeBuildType = "Release"; diff --git a/pkgs/development/libraries/rocm-opencl-icd/default.nix b/pkgs/development/libraries/rocm-opencl-icd/default.nix index 6830d9561931..5f2188f6e7e6 100644 --- a/pkgs/development/libraries/rocm-opencl-icd/default.nix +++ b/pkgs/development/libraries/rocm-opencl-icd/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation rec { pname = "rocm-opencl-icd"; - version = "3.5.0"; + version = rocm-opencl-runtime.version; dontUnpack = true; diff --git a/pkgs/development/libraries/rocm-opencl-runtime/default.nix b/pkgs/development/libraries/rocm-opencl-runtime/default.nix index 0c7ce260217b..90bc206a7bcf 100644 --- a/pkgs/development/libraries/rocm-opencl-runtime/default.nix +++ b/pkgs/development/libraries/rocm-opencl-runtime/default.nix @@ -5,7 +5,8 @@ , rocm-cmake , clang , clang-unwrapped -, libGLU +, glew +, libglvnd , libX11 , lld , llvm @@ -18,20 +19,15 @@ , rocm-thunk }: -let - version = "3.5.0"; - tag = "roc-${version}"; -in stdenv.mkDerivation rec { - inherit version; - +stdenv.mkDerivation rec { pname = "rocm-opencl-runtime"; + version = "3.7.0"; src = fetchFromGitHub { owner = "RadeonOpenCompute"; repo = "ROCm-OpenCL-Runtime"; - rev = tag; - sha256 = "1wrr6mmn4gf6i0vxp4yqk0ny2wglvj1jfj50il8czjwy0cwmhykk"; - name = "ROCm-OpenCL-Runtime-${tag}-src"; + rev = "rocm-${version}"; + sha256 = "15rz11a8qwvxmd0kkaikj04q1glfg9sgqqblcqp3iahr3by8z0wd"; }; nativeBuildInputs = [ cmake rocm-cmake ]; @@ -39,7 +35,8 @@ in stdenv.mkDerivation rec { buildInputs = [ clang clang-unwrapped - libGLU + glew + libglvnd libX11 lld llvm @@ -63,6 +60,12 @@ in stdenv.mkDerivation rec { dontStrip = true; + # Remove clinfo, which is already provided through the + # `clinfo` package. + postInstall = '' + rm -rf $out/bin + ''; + # Fix the ICD installation path for NixOS postPatch = '' substituteInPlace khronos/icd/loader/linux/icd_linux.c \ @@ -70,10 +73,6 @@ in stdenv.mkDerivation rec { echo 'add_dependencies(amdocl64 OpenCL)' >> amdocl/CMakeLists.txt ''; - preFixup = '' - patchelf --set-rpath "$out/lib" $out/bin/clinfo - ''; - meta = with stdenv.lib; { description = "OpenCL runtime for AMD GPUs, part of the ROCm stack"; homepage = "https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime"; diff --git a/pkgs/development/libraries/rocm-runtime-ext/default.nix b/pkgs/development/libraries/rocm-runtime-ext/default.nix deleted file mode 100644 index 3962804306a4..000000000000 --- a/pkgs/development/libraries/rocm-runtime-ext/default.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ stdenv, fetchurl, autoPatchelfHook, rpmextract, rocm-runtime }: - -stdenv.mkDerivation rec { - pname = "rocm-runtime-ext"; - version = "3.5.1"; - - src = fetchurl { - url = "https://repo.radeon.com/rocm/yum/3.5.1/hsa-ext-rocr-dev-1.1.30501.0-rocm-rel-3.5-34-def83d8a-Linux.rpm"; - sha256 = "0r7lrmnplr10hs6wrji55i3dnczfzlmp8jahm1g3mhq2x12zmly0"; - }; - - nativeBuildInputs = [ autoPatchelfHook rpmextract ]; - - buildInputs = [ rocm-runtime stdenv.cc.cc ]; - - unpackPhase = "rpmextract ${src}"; - - installPhase = '' - mkdir -p $out/lib - cp -R opt/rocm-${version}/hsa/lib $out/lib/rocm-runtime-ext - ''; - - setupHook = ./setup-hook.sh; - - meta = with stdenv.lib; { - description = "Platform runtime for ROCm (closed-source extensions)"; - longDescription = '' - This package provides closed-source extensions to the ROCm - runtime. Currently this adds support for OpenCL image - processing. - - In order for the ROCm runtime to pick up the extension, you - should either set the ROCR_EXT_DIR environment variable should - be set to ''${rocm-runtime-ext}/lib/rocm-runtime-ext or this - package should be added to the hardware.opengl.extraPackages - NixOS configuration option. - ''; - homepage = "https://github.com/RadeonOpenCompute/ROCR-Runtime"; - license = with licenses; [ unfreeRedistributable ]; - maintainers = with maintainers; [ danieldk ]; - }; -} diff --git a/pkgs/development/libraries/rocm-runtime-ext/setup-hook.sh b/pkgs/development/libraries/rocm-runtime-ext/setup-hook.sh deleted file mode 100644 index 150d65570e61..000000000000 --- a/pkgs/development/libraries/rocm-runtime-ext/setup-hook.sh +++ /dev/null @@ -1,7 +0,0 @@ -addRocmRuntimeExtDir () { - if [[ -z "${ROCR_EXT_DIR-}" ]]; then - export ROCR_EXT_DIR="@out@/lib/rocm-runtime-ext" - fi -} - -addEnvHooks "$hostOffset" addRocmRuntimeExtDir diff --git a/pkgs/development/libraries/rocm-runtime/default.nix b/pkgs/development/libraries/rocm-runtime/default.nix index 7470784d4896..6f573adabe13 100644 --- a/pkgs/development/libraries/rocm-runtime/default.nix +++ b/pkgs/development/libraries/rocm-runtime/default.nix @@ -1,41 +1,42 @@ { stdenv , fetchFromGitHub , addOpenGLRunpath +, clang-unwrapped , cmake +, xxd , elfutils +, llvm +, rocm-device-libs , rocm-thunk }: stdenv.mkDerivation rec { pname = "rocm-runtime"; - version = "3.5.0"; + version = "3.7.0"; src = fetchFromGitHub { owner = "RadeonOpenCompute"; repo = "ROCR-Runtime"; rev = "rocm-${version}"; - sha256 = "028x1f0if6lw41cpfpysp82ikp6c3fdxxd2a6ixs0vpm4424svb1"; + sha256 = "1lm4cbx1d727zll85vjc1kykc72mk82nfhyyhjljv82gd4mnz00c"; }; sourceRoot = "source/src"; - buildInputs = [ cmake elfutils ]; + nativeBuildInputs = [ cmake xxd ]; - cmakeFlags = [ "-DCMAKE_PREFIX_PATH=${rocm-thunk}" ]; + buildInputs = [ clang-unwrapped elfutils llvm ]; - # Use the ROCR_EXT_DIR environment variable and/or OpenGL driver - # link path to try to find binary-only ROCm runtime extension - # libraries. Without this change, we would have to rely on - # LD_LIBRARY_PATH to let the HSA runtime discover the shared - # libraries. - patchPhase = '' - substitute '${./rocr-ext-dir.diff}' ./rocr-ext-dir.diff \ - --subst-var-by rocrExtDir "${addOpenGLRunpath.driverLink}/lib/rocm-runtime-ext" - patch -p2 < ./rocr-ext-dir.diff + cmakeFlags = [ + "-DBITCODE_DIR=${rocm-device-libs}/lib" + "-DCMAKE_PREFIX_PATH=${rocm-thunk}" + ]; + + postPatch = '' + patchShebangs image/blit_src/create_hsaco_ascii_file.sh ''; fixupPhase = '' - rm -r $out/lib $out/include - mv $out/hsa/lib $out/hsa/include $out + rm -rf $out/hsa ''; meta = with stdenv.lib; { diff --git a/pkgs/development/libraries/rocm-runtime/rocr-ext-dir.diff b/pkgs/development/libraries/rocm-runtime/rocr-ext-dir.diff deleted file mode 100644 index 21ffe7d8c34a..000000000000 --- a/pkgs/development/libraries/rocm-runtime/rocr-ext-dir.diff +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/src/core/runtime/runtime.cpp b/src/core/runtime/runtime.cpp -index dd6a15c..fb6de49 100644 ---- a/src/core/runtime/runtime.cpp -+++ b/src/core/runtime/runtime.cpp -@@ -1358,7 +1358,17 @@ void Runtime::LoadExtensions() { - core::HsaApiTable::HSA_EXT_FINALIZER_API_TABLE_ID); - - // Update Hsa Api Table with handle of Image extension Apis -- extensions_.LoadImage(kImageLib[os_index(os::current_os)]); -+ // -+ // Use ROCR_EXT_DIR when it is non-empty. Otherwise, try to load the -+ // library from the OpenGL driver path. -+ std::string extDirVar = os::GetEnvVar("ROCR_EXT_DIR"); -+ if (!extDirVar.empty()) { -+ extensions_.LoadImage(extDirVar + "/" + kImageLib[os_index(os::current_os)]); -+ } else { -+ std::string globalDriverDir("@rocrExtDir@"); -+ extensions_.LoadImage(globalDriverDir + "/" + kImageLib[os_index(os::current_os)]); -+ } -+ - hsa_api_table_.LinkExts(&extensions_.image_api, - core::HsaApiTable::HSA_EXT_IMAGE_API_TABLE_ID); - } diff --git a/pkgs/development/libraries/rocm-thunk/default.nix b/pkgs/development/libraries/rocm-thunk/default.nix index 42b632d293c5..c43f9b04b934 100644 --- a/pkgs/development/libraries/rocm-thunk/default.nix +++ b/pkgs/development/libraries/rocm-thunk/default.nix @@ -7,13 +7,13 @@ stdenv.mkDerivation rec { pname = "rocm-thunk"; - version = "3.5.0"; + version = "3.7.0"; src = fetchFromGitHub { owner = "RadeonOpenCompute"; repo = "ROCT-Thunk-Interface"; rev = "rocm-${version}"; - sha256 = "0xn1z0xc3phjc9vabwxgph5any4ffhc8wgs5yb15m5wpg87l8x1z"; + sha256 = "05963lxip3175g4b7k45r94yayp9gcwl3fpma9g5mdkbrlbvwlvz"; }; preConfigure = '' diff --git a/pkgs/development/tools/build-managers/rocm-cmake/default.nix b/pkgs/development/tools/build-managers/rocm-cmake/default.nix index 41149522e729..f146929019f0 100644 --- a/pkgs/development/tools/build-managers/rocm-cmake/default.nix +++ b/pkgs/development/tools/build-managers/rocm-cmake/default.nix @@ -2,7 +2,7 @@ stdenv.mkDerivation rec { pname = "rocm-cmake"; - version = "3.5.0"; + version = "3.7.0"; src = fetchFromGitHub { owner = "RadeonOpenCompute"; diff --git a/pkgs/tools/system/rocm-smi/default.nix b/pkgs/tools/system/rocm-smi/default.nix index 159b41fd1ce5..8cbc56e04689 100644 --- a/pkgs/tools/system/rocm-smi/default.nix +++ b/pkgs/tools/system/rocm-smi/default.nix @@ -2,13 +2,13 @@ buildPythonApplication rec { pname = "rocm-smi"; - version = "3.5.0"; + version = "3.7.0"; src = fetchFromGitHub { owner = "RadeonOpenCompute"; repo = "ROC-smi"; rev = "rocm-${version}"; - sha256 = "189mpvmcv46nfwshyc1wla6k71kbraldik5an20g4v9s13ycrpx9"; + sha256 = "00g9cbni73x9da05lx7hiffp303mdkj1wpxiavfylr4q4z84yhrz"; }; format = "other"; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index d697ecb55e1e..80f85c707aad 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -465,6 +465,7 @@ mapAliases ({ rhc = throw "deprecated in 2019-04-09: abandoned by upstream."; rng_tools = rng-tools; # added 2018-10-24 robomongo = robo3t; #added 2017-09-28 + rocm-runtime-ext = throw "rocm-runtime-ext has been removed, since its functionality was added to rocm-runtime"; #added 2020-08-21 rssglx = rss-glx; #added 2015-03-25 recordmydesktop = throw "recordmydesktop has been removed from nixpkgs, as it's unmaintained and uses deprecated libraries"; # added 2019-12-10 gtk-recordmydesktop = throw "gtk-recordmydesktop has been removed from nixpkgs, as it's unmaintained and uses deprecated libraries"; # added 2019-12-10 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3a95c8401c83..4208749d0fa4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9411,9 +9411,9 @@ in inherit (llvmPackages_rocm) clang clang-unwrapped lld llvm; }; - rocm-runtime = callPackage ../development/libraries/rocm-runtime { }; - - rocm-runtime-ext = callPackage ../development/libraries/rocm-runtime-ext { }; + rocm-runtime = callPackage ../development/libraries/rocm-runtime { + inherit (llvmPackages_rocm) clang-unwrapped llvm; + }; # Python >= 3.8 still gives a bunch of warnings. rocm-smi = python37.pkgs.callPackage ../tools/system/rocm-smi { };