Skip to content

Commit 4196573

Browse files
authored
rocmPackages.miopen: strip dependency on prebuilt kernels for hardware that's not requested (NixOS#484006)
2 parents b5c3bd6 + 729fc9a commit 4196573

1 file changed

Lines changed: 28 additions & 35 deletions

File tree

pkgs/development/rocm-modules/miopen/default.nix

Lines changed: 28 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ let
6565
"gfx1201"
6666
] gpuTargets;
6767

68+
kdbTargets = lib.intersectLists [
69+
"gfx900"
70+
"gfx906"
71+
"gfx908"
72+
"gfx90a"
73+
"gfx942"
74+
"gfx1030"
75+
] gpuTargets;
76+
6877
src = fetchFromGitHub {
6978
owner = "ROCm";
7079
repo = "MIOpen";
@@ -111,25 +120,20 @@ let
111120
)
112121
);
113122

114-
gfx900 = runCommand "miopen-gfx900.kdb" { preferLocalBuild = true; } ''
115-
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx900.kdb.bz2 > $out
116-
'';
117-
118-
gfx906 = runCommand "miopen-gfx906.kdb" { preferLocalBuild = true; } ''
119-
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx906.kdb.bz2 > $out
120-
'';
121-
122-
gfx908 = runCommand "miopen-gfx908.kdb" { preferLocalBuild = true; } ''
123-
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx908.kdb.bz2 > $out
124-
'';
125-
126-
gfx90a = runCommand "miopen-gfx90a.kdb" { preferLocalBuild = true; } ''
127-
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx90a.kdb.bz2 > $out
128-
'';
123+
kernelDatabases = lib.genAttrs kdbTargets (
124+
target:
125+
runCommand "miopen-${target}.kdb" { preferLocalBuild = true; } ''
126+
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/${target}.kdb.bz2 > $out
127+
''
128+
);
129129

130-
gfx1030 = runCommand "miopen-gfx1030.kdb" { preferLocalBuild = true; } ''
131-
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx1030.kdb.bz2 > $out
132-
'';
130+
linkKDBsTo =
131+
targetPath:
132+
lib.concatStringsSep "" (
133+
map (target: ''
134+
ln -sf ${kernelDatabases.${target}} ${targetPath}/${target}.kdb
135+
'') kdbTargets
136+
);
133137
in
134138
stdenv.mkDerivation (finalAttrs: {
135139
inherit version src;
@@ -254,19 +258,12 @@ stdenv.mkDerivation (finalAttrs: {
254258
return()'
255259
256260
patchShebangs test src/composable_kernel fin utils install_deps.cmake
257-
258-
ln -sf ${gfx900} src/kernels/gfx900.kdb
259-
ln -sf ${gfx906} src/kernels/gfx906.kdb
260-
ln -sf ${gfx908} src/kernels/gfx908.kdb
261-
ln -sf ${gfx90a} src/kernels/gfx90a.kdb
262-
ln -sf ${gfx1030} src/kernels/gfx1030.kdb
261+
''
262+
+ linkKDBsTo "src/kernels"
263+
+ ''
263264
mkdir -p build/share/miopen/db/
264-
ln -sf ${gfx900} build/share/miopen/db/gfx900.kdb
265-
ln -sf ${gfx906} build/share/miopen/db/gfx906.kdb
266-
ln -sf ${gfx908} build/share/miopen/db/gfx908.kdb
267-
ln -sf ${gfx90a} build/share/miopen/db/gfx90a.kdb
268-
ln -sf ${gfx1030} build/share/miopen/db/gfx1030.kdb
269-
'';
265+
''
266+
+ linkKDBsTo "build/share/miopen/db";
270267

271268
# Unfortunately, it seems like we have to call make on these manually
272269
postBuild =
@@ -279,12 +276,8 @@ stdenv.mkDerivation (finalAttrs: {
279276

280277
postInstall = ''
281278
rm $out/libexec/miopen/install_precompiled_kernels.sh
282-
ln -sf ${gfx900} $out/share/miopen/db/gfx900.kdb
283-
ln -sf ${gfx906} $out/share/miopen/db/gfx906.kdb
284-
ln -sf ${gfx908} $out/share/miopen/db/gfx908.kdb
285-
ln -sf ${gfx90a} $out/share/miopen/db/gfx90a.kdb
286-
ln -sf ${gfx1030} $out/share/miopen/db/gfx1030.kdb
287279
''
280+
+ linkKDBsTo "$out/share/miopen/db"
288281
+ lib.optionalString buildDocs ''
289282
mv ../doc/html $out/share/doc/miopen-hip
290283
''

0 commit comments

Comments
 (0)