biome: 1.9.2 -> 1.9.3 (#349335)
[NixPkgs.git] / pkgs / development / rocm-modules / 5 / default.nix
blobc1ffd01c806135b25780bf6f31cddad88761707a
1 { gcc12Stdenv # FIXME: Try removing this with a new ROCm release https://github.com/NixOS/nixpkgs/issues/271943
2 , callPackage
3 , recurseIntoAttrs
4 , symlinkJoin
5 , fetchFromGitHub
6 , cudaPackages
7 , python3Packages
8 , elfutils
9 , boost179
10 , opencv
11 , ffmpeg_4
12 , libjpeg_turbo
15 let
16   rocmUpdateScript = callPackage ./update.nix { };
17 in rec {
18   ## ROCm ##
19   llvm = recurseIntoAttrs (callPackage ./llvm/default.nix { inherit rocmUpdateScript rocm-device-libs rocm-runtime rocm-thunk clr; });
21   rocm-core = callPackage ./rocm-core {
22     inherit rocmUpdateScript;
23     stdenv = llvm.rocmClangStdenv;
24   };
26   rocm-cmake = callPackage ./rocm-cmake {
27     inherit rocmUpdateScript;
28     stdenv = llvm.rocmClangStdenv;
29   };
31   rocm-thunk = callPackage ./rocm-thunk {
32     inherit rocmUpdateScript;
33     stdenv = llvm.rocmClangStdenv;
34   };
36   rocm-smi = python3Packages.callPackage ./rocm-smi {
37     inherit rocmUpdateScript;
38     stdenv = llvm.rocmClangStdenv;
39   };
41   # Eventually will be in the LLVM repo
42   rocm-device-libs = callPackage ./rocm-device-libs {
43     inherit rocmUpdateScript rocm-cmake;
44     stdenv = llvm.rocmClangStdenv;
45   };
47   rocm-runtime = callPackage ./rocm-runtime {
48     inherit rocmUpdateScript rocm-device-libs rocm-thunk;
49     stdenv = llvm.rocmClangStdenv;
50   };
52   # Eventually will be in the LLVM repo
53   rocm-comgr = callPackage ./rocm-comgr {
54     inherit rocmUpdateScript rocm-cmake rocm-device-libs;
55     stdenv = llvm.rocmClangStdenv;
56   };
58   rocminfo = callPackage ./rocminfo {
59     inherit rocmUpdateScript rocm-cmake rocm-runtime;
60     stdenv = llvm.rocmClangStdenv;
61   };
63   clang-ocl = callPackage ./clang-ocl {
64     inherit rocmUpdateScript rocm-cmake rocm-device-libs;
65     stdenv = llvm.rocmClangStdenv;
66   };
68   # Unfree
69   hsa-amd-aqlprofile-bin = callPackage ./hsa-amd-aqlprofile-bin {
70     stdenv = llvm.rocmClangStdenv;
71   };
73   # Broken, too many errors
74   rdc = callPackage ./rdc {
75     inherit rocmUpdateScript rocm-smi rocm-runtime;
76     stdenv = gcc12Stdenv;
77     # stdenv = llvm.rocmClangStdenv;
78   };
80   rocm-docs-core = python3Packages.callPackage ./rocm-docs-core { stdenv = gcc12Stdenv; };
82   hip-common = callPackage ./hip-common {
83     inherit rocmUpdateScript;
84     stdenv = llvm.rocmClangStdenv;
85   };
87   # Eventually will be in the LLVM repo
88   hipcc = callPackage ./hipcc {
89     inherit rocmUpdateScript;
90     stdenv = llvm.rocmClangStdenv;
91   };
93   # Replaces hip, opencl-runtime, and rocclr
94   clr = callPackage ./clr {
95     inherit rocmUpdateScript hip-common hipcc rocm-device-libs rocm-comgr rocm-runtime roctracer rocminfo rocm-smi;
96     inherit (llvm) clang;
97     stdenv = llvm.rocmClangStdenv;
98   };
100   hipify = callPackage ./hipify {
101     inherit rocmUpdateScript;
102     inherit (llvm) clang;
103     stdenv = llvm.rocmClangStdenv;
104   };
106   # Needs GCC
107   rocprofiler = callPackage ./rocprofiler {
108     inherit rocmUpdateScript clr rocm-core rocm-thunk rocm-device-libs roctracer rocdbgapi rocm-smi hsa-amd-aqlprofile-bin;
109     inherit (llvm) clang;
110     stdenv = gcc12Stdenv;
111   };
113   # Needs GCC
114   roctracer = callPackage ./roctracer {
115     inherit rocmUpdateScript rocm-device-libs rocm-runtime clr;
116     stdenv = gcc12Stdenv;
117   };
119   # Needs GCC
120   rocgdb = callPackage ./rocgdb {
121     inherit rocmUpdateScript;
122     elfutils = elfutils.override { enableDebuginfod = true; };
123     stdenv = gcc12Stdenv;
124   };
126   rocdbgapi = callPackage ./rocdbgapi {
127     inherit rocmUpdateScript rocm-cmake rocm-comgr rocm-runtime;
128     stdenv = llvm.rocmClangStdenv;
129   };
131   rocr-debug-agent = callPackage ./rocr-debug-agent {
132     inherit rocmUpdateScript clr rocdbgapi;
133     stdenv = llvm.rocmClangStdenv;
134   };
136   rocprim = callPackage ./rocprim {
137     inherit rocmUpdateScript rocm-cmake clr;
138     stdenv = llvm.rocmClangStdenv;
139   };
141   rocsparse = callPackage ./rocsparse {
142     inherit rocmUpdateScript rocm-cmake rocprim clr;
143     stdenv = llvm.rocmClangStdenv;
144   };
146   rocthrust = callPackage ./rocthrust {
147     inherit rocmUpdateScript rocm-cmake rocprim clr;
148     stdenv = llvm.rocmClangStdenv;
149   };
151   rocrand = callPackage ./rocrand {
152     inherit rocmUpdateScript rocm-cmake clr;
153     stdenv = llvm.rocmClangStdenv;
154   };
156   hiprand = rocrand; # rocrand includes hiprand
158   rocfft = callPackage ./rocfft {
159     inherit rocmUpdateScript rocm-cmake rocrand rocfft clr;
160     inherit (llvm) openmp;
161     stdenv = llvm.rocmClangStdenv;
162   };
164   rccl = callPackage ./rccl {
165     inherit rocmUpdateScript rocm-cmake rocm-smi clr hipify;
166     stdenv = llvm.rocmClangStdenv;
167   };
169   hipcub = callPackage ./hipcub {
170     inherit rocmUpdateScript rocm-cmake rocprim clr;
171     stdenv = llvm.rocmClangStdenv;
172   };
174   hipsparse = callPackage ./hipsparse {
175     inherit rocmUpdateScript rocm-cmake rocsparse clr;
176     inherit (llvm) openmp;
177     stdenv = llvm.rocmClangStdenv;
178   };
180   hipfort = callPackage ./hipfort {
181     inherit rocmUpdateScript rocm-cmake;
182     stdenv = llvm.rocmClangStdenv;
183   };
185   hipfft = callPackage ./hipfft {
186     inherit rocmUpdateScript rocm-cmake rocfft clr;
187     inherit (llvm) openmp;
188     stdenv = llvm.rocmClangStdenv;
189   };
191   tensile = python3Packages.callPackage ./tensile {
192     inherit rocmUpdateScript rocminfo;
193     stdenv = llvm.rocmClangStdenv;
194   };
196   rocblas = callPackage ./rocblas {
197     inherit rocblas rocmUpdateScript rocm-cmake clr tensile;
198     inherit (llvm) openmp;
199     stdenv = llvm.rocmClangStdenv;
200   };
202   rocsolver = callPackage ./rocsolver {
203     inherit rocmUpdateScript rocm-cmake rocblas rocsparse clr;
204     stdenv = llvm.rocmClangStdenv;
205   };
207   rocwmma = callPackage ./rocwmma {
208     inherit rocmUpdateScript rocm-cmake rocm-smi rocblas clr;
209     inherit (llvm) openmp;
210     stdenv = llvm.rocmClangStdenv;
211   };
213   rocalution = callPackage ./rocalution {
214     inherit rocmUpdateScript rocm-cmake rocprim rocsparse rocrand rocblas clr;
215     inherit (llvm) openmp;
216     stdenv = llvm.rocmClangStdenv;
217   };
219   rocmlir = callPackage ./rocmlir {
220     inherit rocmUpdateScript rocm-cmake clr;
221     stdenv = llvm.rocmClangStdenv;
222   };
224   rocmlir-rock = rocmlir.override {
225     buildRockCompiler = true;
226   };
228   hipsolver = callPackage ./hipsolver {
229     inherit rocmUpdateScript rocm-cmake rocblas rocsolver clr;
230     stdenv = llvm.rocmClangStdenv;
231   };
233   hipblas = callPackage ./hipblas {
234     inherit rocmUpdateScript rocm-cmake rocblas rocsolver clr;
235     stdenv = llvm.rocmClangStdenv;
236   };
238   # hipBlasLt - Very broken with Tensile at the moment, only supports GFX9
239   # hipTensor - Only supports GFX9
241   miopengemm = callPackage ./miopengemm {
242     inherit rocmUpdateScript rocm-cmake clr;
243     stdenv = llvm.rocmClangStdenv;
244   };
246   composable_kernel = callPackage ./composable_kernel {
247     inherit rocmUpdateScript rocm-cmake clr;
248     inherit (llvm) openmp clang-tools-extra;
249     stdenv = llvm.rocmClangStdenv;
250   };
252   half = callPackage ./half {
253     inherit rocmUpdateScript rocm-cmake;
254     stdenv = llvm.rocmClangStdenv;
255   };
257   miopen = callPackage ./miopen {
258     inherit rocmUpdateScript rocm-cmake rocblas clang-ocl miopengemm composable_kernel rocm-comgr clr rocm-docs-core half;
259     inherit (llvm) clang-tools-extra;
260     stdenv = llvm.rocmClangStdenv;
261     rocmlir = rocmlir-rock;
262     boost = boost179.override { enableStatic = true; };
263   };
265   miopen-hip = miopen.override {
266     useOpenCL = false;
267   };
269   miopen-opencl = miopen.override {
270     useOpenCL = true;
271   };
273   migraphx = callPackage ./migraphx {
274     inherit rocmUpdateScript rocm-cmake rocblas composable_kernel miopengemm miopen clr half rocm-device-libs;
275     inherit (llvm) openmp clang-tools-extra;
276     stdenv = llvm.rocmClangStdenv;
277     rocmlir = rocmlir-rock;
278   };
280   rpp = callPackage ./rpp {
281     inherit rocmUpdateScript rocm-cmake rocm-docs-core clr half;
282     inherit (llvm) openmp;
283     stdenv = llvm.rocmClangStdenv;
284   };
286   rpp-hip = rpp.override {
287     useOpenCL = false;
288     useCPU = false;
289   };
291   rpp-opencl = rpp.override {
292     useOpenCL = true;
293     useCPU = false;
294   };
296   rpp-cpu = rpp.override {
297     useOpenCL = false;
298     useCPU = true;
299   };
301   mivisionx = callPackage ./mivisionx {
302     inherit rocmUpdateScript rocm-cmake rocm-device-libs clr rpp rocblas miopengemm miopen migraphx half rocm-docs-core;
303     inherit (llvm) clang openmp;
304     opencv = opencv.override { enablePython = true; };
305     ffmpeg = ffmpeg_4;
306     stdenv = llvm.rocmClangStdenv;
308     # Unfortunately, rocAL needs a custom libjpeg-turbo until further notice
309     # See: https://github.com/ROCm/MIVisionX/issues/1051
310     libjpeg_turbo = libjpeg_turbo.overrideAttrs {
311       version = "2.0.6.1";
313       src = fetchFromGitHub {
314         owner = "rrawther";
315         repo = "libjpeg-turbo";
316         rev = "640d7ee1917fcd3b6a5271aa6cf4576bccc7c5fb";
317         sha256 = "sha256-T52whJ7nZi8jerJaZtYInC2YDN0QM+9tUDqiNr6IsNY=";
318       };
320       # overwrite all patches, since patches for newer version do not apply
321       patches = [ ../6/0001-Compile-transupp.c-as-part-of-the-library.patch ];
322     };
323   };
325   mivisionx-hip = mivisionx.override {
326     rpp = rpp-hip;
327     useOpenCL = false;
328     useCPU = false;
329   };
331   mivisionx-opencl = mivisionx.override {
332     rpp = rpp-opencl;
333     miopen = miopen-opencl;
334     useOpenCL = true;
335     useCPU = false;
336   };
338   mivisionx-cpu = mivisionx.override {
339     rpp = rpp-cpu;
340     useOpenCL = false;
341     useCPU = true;
342   };
344   ## Meta ##
345   # Emulate common ROCm meta layout
346   # These are mainly for users. I strongly suggest NOT using these in nixpkgs derivations
347   # Don't put these into `propagatedBuildInputs` unless you want PATH/PYTHONPATH issues!
348   # See: https://rocm.docs.amd.com/en/docs-5.7.1/_images/image.004.png
349   # See: https://rocm.docs.amd.com/en/docs-5.7.1/deploy/linux/os-native/package_manager_integration.html
350   meta = rec {
351     rocm-developer-tools = symlinkJoin {
352       name = "rocm-developer-tools-meta";
354       paths = [
355         hsa-amd-aqlprofile-bin
356         rocm-core
357         rocr-debug-agent
358         roctracer
359         rocdbgapi
360         rocprofiler
361         rocgdb
362         rocm-language-runtime
363       ];
364     };
366     rocm-ml-sdk = symlinkJoin {
367       name = "rocm-ml-sdk-meta";
369       paths = [
370         rocm-core
371         miopen-hip
372         rocm-hip-sdk
373         rocm-ml-libraries
374       ];
375     };
377     rocm-ml-libraries = symlinkJoin {
378       name = "rocm-ml-libraries-meta";
380       paths = [
381         llvm.clang
382         llvm.mlir
383         llvm.openmp
384         rocm-core
385         miopen-hip
386         rocm-hip-libraries
387       ];
388     };
390     rocm-hip-sdk = symlinkJoin {
391       name = "rocm-hip-sdk-meta";
393       paths = [
394         rocprim
395         rocalution
396         hipfft
397         rocm-core
398         hipcub
399         hipblas
400         rocrand
401         rocfft
402         rocsparse
403         rccl
404         rocthrust
405         rocblas
406         hipsparse
407         hipfort
408         rocwmma
409         hipsolver
410         rocsolver
411         rocm-hip-libraries
412         rocm-hip-runtime-devel
413       ];
414     };
416     rocm-hip-libraries = symlinkJoin {
417       name = "rocm-hip-libraries-meta";
419       paths = [
420         rocblas
421         hipfort
422         rocm-core
423         rocsolver
424         rocalution
425         rocrand
426         hipblas
427         rocfft
428         hipfft
429         rccl
430         rocsparse
431         hipsparse
432         hipsolver
433         rocm-hip-runtime
434       ];
435     };
437     rocm-openmp-sdk = symlinkJoin {
438       name = "rocm-openmp-sdk-meta";
440       paths = [
441         rocm-core
442         llvm.clang
443         llvm.mlir
444         llvm.openmp # openmp-extras-devel (https://github.com/ROCm/aomp)
445         rocm-language-runtime
446       ];
447     };
449     rocm-opencl-sdk = symlinkJoin {
450       name = "rocm-opencl-sdk-meta";
452       paths = [
453         rocm-core
454         rocm-runtime
455         clr
456         clr.icd
457         rocm-thunk
458         rocm-opencl-runtime
459       ];
460     };
462     rocm-opencl-runtime = symlinkJoin {
463       name = "rocm-opencl-runtime-meta";
465       paths = [
466         rocm-core
467         clr
468         clr.icd
469         rocm-language-runtime
470       ];
471     };
473     rocm-hip-runtime-devel = symlinkJoin {
474       name = "rocm-hip-runtime-devel-meta";
476       paths = [
477         clr
478         rocm-core
479         hipify
480         rocm-cmake
481         llvm.clang
482         llvm.mlir
483         llvm.openmp
484         rocm-thunk
485         rocm-runtime
486         rocm-hip-runtime
487       ];
488     };
490     rocm-hip-runtime = symlinkJoin {
491       name = "rocm-hip-runtime-meta";
493       paths = [
494         rocm-core
495         rocminfo
496         clr
497         rocm-language-runtime
498       ];
499     };
501     rocm-language-runtime = symlinkJoin {
502       name = "rocm-language-runtime-meta";
504       paths = [
505         rocm-runtime
506         rocm-core
507         rocm-comgr
508         llvm.openmp # openmp-extras-runtime (https://github.com/ROCm/aomp)
509       ];
510     };
512     rocm-all = symlinkJoin {
513       name = "rocm-all-meta";
515       paths = [
516         rocm-developer-tools
517         rocm-ml-sdk
518         rocm-ml-libraries
519         rocm-hip-sdk
520         rocm-hip-libraries
521         rocm-openmp-sdk
522         rocm-opencl-sdk
523         rocm-opencl-runtime
524         rocm-hip-runtime-devel
525         rocm-hip-runtime
526         rocm-language-runtime
527       ];
528     };
529   };