diff --git a/pkgs/development/rocm-modules/6/default.nix b/pkgs/development/rocm-modules/6/default.nix index 6654bafef12d..44454b36958a 100644 --- a/pkgs/development/rocm-modules/6/default.nix +++ b/pkgs/development/rocm-modules/6/default.nix @@ -26,8 +26,6 @@ let { inherit rocmClangStdenv; stdenv = rocmClangStdenv; - buildTests = false; - buildBenchmarks = false; rocmUpdateScript = self.callPackage ./update.nix { }; diff --git a/pkgs/development/rocm-modules/6/rocblas/default.nix b/pkgs/development/rocm-modules/6/rocblas/default.nix index 0c9c2ee5c424..c6bce658f6cc 100644 --- a/pkgs/development/rocm-modules/6/rocblas/default.nix +++ b/pkgs/development/rocm-modules/6/rocblas/default.nix @@ -7,6 +7,7 @@ cmake, rocm-cmake, clr, + diffutils, python3, tensile, boost, @@ -24,9 +25,10 @@ python3Packages, rocm-smi, pkg-config, + removeReferencesTo, buildTensile ? true, - buildTests ? false, - buildBenchmarks ? false, + buildTests ? true, + buildBenchmarks ? true, tensileSepArch ? true, tensileLazyLib ? true, withHipBlasLt ? true, @@ -47,6 +49,8 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-FCzo/BOk4xLEFkdOdqcCXh4a9t3/OIIBEy8oz6oOMWg="; }; + outputs = [ "out" ] ++ lib.optional buildBenchmarks "benchmark" ++ lib.optional buildTests "test"; + nativeBuildInputs = [ cmake # no ninja, it buffers console output and nix times out long periods of no output @@ -54,6 +58,7 @@ stdenv.mkDerivation (finalAttrs: { clr gitMinimal pkg-config + removeReferencesTo ] ++ lib.optionals buildTensile [ tensile @@ -76,10 +81,8 @@ stdenv.mkDerivation (finalAttrs: { python3Packages.msgpack python3Packages.zstandard ] - ++ lib.optionals buildTests [ - gtest - ] ++ lib.optionals (buildTests || buildBenchmarks) [ + gtest gfortran rocm-smi ] @@ -146,14 +149,39 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace CMakeLists.txt \ --replace-fail "4.43.0" "4.44.0" \ --replace-fail '0.10' '1.0' + '' + # 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 '' + substituteInPlace clients/include/testing_logging.hpp \ + --replace-fail "/usr/bin/diff" "${lib.getExe' diffutils "diff"}" ''; + postInstall = + # tensile isn't needed at runtime and pulls in ~400MB of python deps + '' + remove-references-to -t ${tensile} \ + "$out/lib/librocblas.so."* + '' + + lib.optionalString buildBenchmarks '' + moveToOutput "bin/*-tune" "$benchmark" + moveToOutput "bin/*-bench" "$benchmark" + moveToOutput "bin/*example*" "$benchmark" + cp "$out/bin/"*.{yaml,txt} "$benchmark/bin" + '' + + lib.optionalString buildTests '' + moveToOutput "bin/*test*" "$test" + cp "$out/bin/"*.{yaml,txt} "$test/bin" + '' + + '' + if [ -d $out/bin ]; then + rm $out/bin/*.{yaml,txt} || true + rmdir $out/bin + fi + ''; + passthru = { amdgpu_targets = gpuTargets'; - tests.rocblas-tests = finalAttrs.finalPackage.override { - buildBenchmarks = true; - buildTests = true; - }; updateScript = rocmUpdateScript { name = finalAttrs.pname; inherit (finalAttrs.src) owner;