diff --git a/pkgs/development/libraries/composable_kernel/default.nix b/pkgs/development/libraries/composable_kernel/default.nix index 531d5d66f3ff..54bf1251c309 100644 --- a/pkgs/development/libraries/composable_kernel/default.nix +++ b/pkgs/development/libraries/composable_kernel/default.nix @@ -13,104 +13,74 @@ , gpuTargets ? [ ] # gpuTargets = [ "gfx803" "gfx900" "gfx1030" ... ] }: -let - # This is now over 3GB, to allow hydra caching we separate it - ck = stdenv.mkDerivation (finalAttrs: { - pname = "composable_kernel"; - version = "unstable-2023-01-16"; +stdenv.mkDerivation (finalAttrs: { + pname = "composable_kernel"; + version = "unstable-2023-01-16"; - outputs = [ - "out" - ] ++ lib.optionals buildTests [ - "test" - ] ++ lib.optionals buildExamples [ - "example" - ]; + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildExamples [ + "example" + ]; - # ROCm 5.6 should release composable_kernel as stable with a tag in the future - src = fetchFromGitHub { - owner = "ROCmSoftwarePlatform"; - repo = "composable_kernel"; - rev = "80e05267417f948e4f7e63c0fe807106d9a0c0ef"; - hash = "sha256-+c0E2UtlG/abweLwCWWjNHDO5ZvSIVKwwwettT9mqR4="; - }; + # ROCm 5.6 should release composable_kernel as stable with a tag in the future + src = fetchFromGitHub { + owner = "ROCmSoftwarePlatform"; + repo = "composable_kernel"; + rev = "80e05267417f948e4f7e63c0fe807106d9a0c0ef"; + hash = "sha256-+c0E2UtlG/abweLwCWWjNHDO5ZvSIVKwwwettT9mqR4="; + }; - nativeBuildInputs = [ - cmake - rocm-cmake - hip - clang-tools-extra - ]; + nativeBuildInputs = [ + cmake + rocm-cmake + hip + clang-tools-extra + ]; - buildInputs = [ - openmp - ]; + buildInputs = [ + openmp + ]; - cmakeFlags = [ - "-DCMAKE_C_COMPILER=hipcc" - "-DCMAKE_CXX_COMPILER=hipcc" - ] ++ lib.optionals (gpuTargets != [ ]) [ - "-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" - "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" - ] ++ lib.optionals buildTests [ - "-DGOOGLETEST_DIR=${gtest.src}" # Custom linker names - ]; + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildTests [ + "-DGOOGLETEST_DIR=${gtest.src}" # Custom linker names + ]; - # No flags to build selectively it seems... - postPatch = lib.optionalString (!buildTests) '' - substituteInPlace CMakeLists.txt \ - --replace "add_subdirectory(test)" "" - '' + lib.optionalString (!buildExamples) '' - substituteInPlace CMakeLists.txt \ - --replace "add_subdirectory(example)" "" - ''; + # No flags to build selectively it seems... + postPatch = lib.optionalString (!buildTests) '' + substituteInPlace CMakeLists.txt \ + --replace "add_subdirectory(test)" "" + '' + lib.optionalString (!buildExamples) '' + substituteInPlace CMakeLists.txt \ + --replace "add_subdirectory(example)" "" + ''; - postInstall = lib.optionalString buildTests '' - mkdir -p $test/bin - mv $out/bin/test_* $test/bin - '' + lib.optionalString buildExamples '' - mkdir -p $example/bin - mv $out/bin/example_* $example/bin - ''; - - passthru.updateScript = unstableGitUpdater { }; - - # Times out otherwise - requiredSystemFeatures = [ "big-parallel" ]; - - meta = with lib; { - description = "Performance portable programming model for machine learning tensor operators"; - homepage = "https://github.com/ROCmSoftwarePlatform/composable_kernel"; - license = with licenses; [ mit ]; - maintainers = teams.rocm.members; - platforms = platforms.linux; - }; - }); - -in stdenv.mkDerivation { - inherit (ck) pname version outputs src passthru requiredSystemFeatures meta; - - dontUnpack = true; - dontPatch = true; - dontConfigure = true; - dontBuild = true; - - installPhase = '' - runHook preInstall - - mkdir -p $out - cp -an ${ck}/* $out - '' + lib.optionalString buildTests '' - cp -a ${ck.test} $test + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/test_* $test/bin '' + lib.optionalString buildExamples '' - cp -a ${ck.example} $example - '' + '' - runHook postInstall + mkdir -p $example/bin + mv $out/bin/example_* $example/bin ''; - # Fix paths - preFixup = '' - substituteInPlace $out/lib/cmake/composable_kernel/*.cmake \ - --replace "${ck}" "$out" - ''; -} + passthru.updateScript = unstableGitUpdater { }; + + # Times out otherwise + requiredSystemFeatures = [ "big-parallel" ]; + + meta = with lib; { + description = "Performance portable programming model for machine learning tensor operators"; + homepage = "https://github.com/ROCmSoftwarePlatform/composable_kernel"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + }; +})