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+ ) ;
133137in
134138stdenv . 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