nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at r-updates 339 lines 9.1 kB view raw
1{ 2 lib, 3 config, 4 callPackage, 5 newScope, 6 symlinkJoin, 7 fetchFromGitHub, 8 boost179, 9 opencv, 10 python3Packages, 11 openmpi, 12 stdenv, 13 pkgs, 14}: 15 16let 17 outer = lib.makeScope newScope ( 18 self: 19 let 20 inherit (self) llvm; 21 origStdenv = stdenv; 22 pyPackages = python3Packages; 23 openmpi-orig = openmpi; 24 rocmClangStdenv = llvm.rocmClangStdenv; 25 in 26 { 27 inherit rocmClangStdenv; 28 stdenv = rocmClangStdenv; 29 30 rocmUpdateScript = self.callPackage ./update.nix { }; 31 32 ## ROCm ## 33 llvm = lib.recurseIntoAttrs ( 34 callPackage ./llvm/default.nix { 35 # rocm-device-libs is used for .src only 36 # otherwise would cause infinite recursion 37 inherit (self) rocm-device-libs; 38 } 39 ); 40 inherit (self.llvm) rocm-toolchain clang openmp; 41 42 rocm-core = self.callPackage ./rocm-core { stdenv = origStdenv; }; 43 44 rocm-cmake = self.callPackage ./rocm-cmake { stdenv = origStdenv; }; 45 46 rocm-device-libs = self.callPackage ./rocm-device-libs { }; 47 48 rocm-runtime = self.callPackage ./rocm-runtime { 49 stdenv = origStdenv; 50 }; 51 52 rocm-comgr = self.callPackage ./rocm-comgr { }; 53 54 rocminfo = self.callPackage ./rocminfo { stdenv = origStdenv; }; 55 56 amdsmi = pyPackages.callPackage ./amdsmi { 57 inherit (self) rocmUpdateScript; 58 }; 59 60 rocm-smi = pyPackages.callPackage ./rocm-smi { 61 inherit (self) rocmUpdateScript; 62 }; 63 64 aqlprofile = self.callPackage ./aqlprofile { }; 65 66 rdc = self.callPackage ./rdc { }; 67 68 rocm-docs-core = python3Packages.callPackage ./rocm-docs-core { }; 69 70 hip-common = self.callPackage ./hip-common { }; 71 72 hipcc = self.callPackage ./hipcc { stdenv = origStdenv; }; 73 74 # Replaces hip, opencl-runtime, and rocclr 75 clr = self.callPackage ./clr { }; 76 77 aotriton = self.callPackage ./aotriton { stdenv = origStdenv; }; 78 79 hipify = self.callPackage ./hipify { 80 stdenv = origStdenv; 81 }; 82 83 # hsakmt was merged into rocm-runtime 84 hsakmt = self.rocm-runtime; 85 86 rocprofiler = self.callPackage ./rocprofiler { 87 inherit (llvm) clang; 88 }; 89 rocprofiler-register = self.callPackage ./rocprofiler-register { 90 inherit (llvm) clang; 91 }; 92 93 rocprof-trace-decoder = self.callPackage ./rocprof-trace-decoder { }; 94 95 roctracer = self.callPackage ./roctracer { }; 96 97 rocgdb = self.callPackage ./rocgdb { }; 98 99 rocdbgapi = self.callPackage ./rocdbgapi { }; 100 101 rocr-debug-agent = self.callPackage ./rocr-debug-agent { }; 102 103 rocprim = self.callPackage ./rocprim { }; 104 105 rocsparse = self.callPackage ./rocsparse { }; 106 107 rocthrust = self.callPackage ./rocthrust { }; 108 109 rocrand = self.callPackage ./rocrand { }; 110 111 hiprand = self.callPackage ./hiprand { }; 112 113 rocfft = self.callPackage ./rocfft { }; 114 115 mscclpp = self.callPackage ./mscclpp { }; 116 117 rccl = self.callPackage ./rccl { }; 118 119 hipcub = self.callPackage ./hipcub { }; 120 121 hipsparse = self.callPackage ./hipsparse { }; 122 123 hipfort = self.callPackage ./hipfort { }; 124 125 hipfft = self.callPackage ./hipfft { }; 126 127 hiprt = self.callPackage ./hiprt { }; 128 129 tensile = pyPackages.callPackage ./tensile { 130 inherit (self) 131 rocmUpdateScript 132 clr 133 ; 134 }; 135 136 rocblas = self.callPackage ./rocblas { }; 137 138 rocsolver = self.callPackage ./rocsolver { }; 139 140 rocwmma = self.callPackage ./rocwmma { }; 141 142 rocalution = self.callPackage ./rocalution { }; 143 144 rocmlir-rock = self.callPackage ./rocmlir { 145 buildRockCompiler = true; 146 }; 147 rocmlir = self.rocmlir-rock; 148 149 hipsolver = self.callPackage ./hipsolver { }; 150 151 hipblas-common = self.callPackage ./hipblas-common { }; 152 153 hipblas = self.callPackage ./hipblas { }; 154 155 hipblaslt = self.callPackage ./hipblaslt { }; 156 157 # hipTensor - Only supports GFX9 158 159 composable_kernel_base = self.callPackage ./composable_kernel/base.nix { }; 160 composable_kernel = self.callPackage ./composable_kernel { }; 161 162 ck4inductor = pyPackages.callPackage ./composable_kernel/ck4inductor.nix { 163 inherit (self) composable_kernel rocm-toolchain; 164 }; 165 166 half = self.callPackage ./half { }; 167 168 miopen = self.callPackage ./miopen { 169 boost = boost179.override { enableStatic = true; }; 170 }; 171 172 miopen-hip = self.miopen; 173 174 migraphx = self.callPackage ./migraphx { stdenv = origStdenv; }; 175 176 rpp = self.callPackage ./rpp { }; 177 178 rpp-hip = self.rpp.override { useCPU = false; }; 179 180 rpp-cpu = self.rpp.override { useCPU = true; }; 181 182 mivisionx = self.callPackage ./mivisionx { 183 stdenv = origStdenv; 184 opencv = opencv.override { enablePython = true; }; 185 }; 186 187 mivisionx-hip = self.mivisionx.override { 188 rpp = self.rpp-hip; 189 useOpenCL = false; 190 useCPU = false; 191 }; 192 193 mivisionx-cpu = self.mivisionx.override { 194 rpp = self.rpp-cpu; 195 useOpenCL = false; 196 useCPU = true; 197 }; 198 199 # Even if config.rocmSupport is false we need rocmSupport true 200 # version of ucc/ucx in openmpi in this package set 201 openmpi = openmpi-orig.override ( 202 prev: 203 let 204 ucx = prev.ucx.override { 205 enableCuda = false; 206 enableRocm = true; 207 rocmPackages = self; 208 }; 209 in 210 { 211 inherit ucx; 212 ucc = prev.ucc.override { 213 enableCuda = false; 214 inherit ucx; 215 }; 216 } 217 ); 218 mpi = self.openmpi; 219 220 meta = { 221 # eval all pkgsRocm release attrs with 222 # nix-eval-jobs --force-recurse pkgs/top-level/release.nix -I . --select "p: p.pkgsRocm" --no-instantiate 223 release-packagePlatforms = 224 let 225 platforms = [ 226 "x86_64-linux" 227 ]; 228 attrPaths = (builtins.fromJSON (builtins.readFile ./release-attrPaths.json)).attrPaths; 229 in 230 lib.foldl' ( 231 acc: path: 232 if lib.hasAttrByPath (lib.splitString "." path) pkgs then 233 lib.recursiveUpdate acc (lib.setAttrByPath (lib.splitString "." path) platforms) 234 else 235 acc 236 ) { } attrPaths; 237 }; 238 239 rocm-bandwidth-test = self.callPackage ./rocm-bandwidth-test { 240 rocmPackages = self; 241 }; 242 243 rocm-tests = self.callPackage ./rocm-tests { 244 rocmPackages = self; 245 }; 246 } 247 // lib.optionalAttrs config.allowAliases { 248 rpp-opencl = throw '' 249 'rpp-opencl' has been removed as it has been broken for a year and has no consuming packages. 250 Use 'rpp' or 'rpp-cpu' instead. 251 ''; # Added 2026-03-08 252 253 rocmPath = throw '' 254 'rocm-path' has been removed. If a ROCM_PATH value is required in nixpkgs please 255 construct one with the minimal set of required deps. 256 For convenience use outside of nixpkgs consider one of the entries in 257 'rocmPackages.meta'. 258 ''; # Added 2025-09-30 259 260 rocm-merged-llvm = throw '' 261 'rocm-merged-llvm' has been removed. 262 For 'libllvm' or 'libclang' use 'rocmPackages.llvm.libllvm/clang'. 263 For a ROCm compiler toolchain use 'rocmPackages.rocm-toolchain'. 264 If a package uses '$<TARGET_FILE:clang>' in CMake from 'libclang' 265 it may be necessary to convince it to use 'rocm-toolchain' instead. 266 'rocm-merged-llvm' avoided this at the cost of significantly bloating closure 267 size. 268 ''; # Added 2025-09-30 269 270 hsa-amd-aqlprofile-bin = lib.warn '' 271 'hsa-amd-aqlprofile-bin' has been replaced by 'aqlprofile'. 272 '' self.aqlprofile; # Added 2025-08-27 273 274 triton = throw '' 275 'rocmPackages.triton' has been removed. Please use python3Packages.triton 276 ''; # Added 2025-08-24 277 278 rocm-thunk = throw '' 279 'rocm-thunk' has been removed. It's now part of the ROCm runtime. 280 ''; # Added 2025-3-16 281 282 clang-ocl = throw '' 283 'clang-ocl' has been deprecated upstream. Use ROCm's clang directly. 284 ''; # Added 2025-3-16 285 286 miopengemm = throw '' 287 'miopengemm' has been deprecated. 288 ''; # Added 2024-3-3 289 290 miopen-opencl = throw '' 291 'miopen-opencl' has been deprecated. 292 ''; # Added 2024-3-3 293 294 mivisionx-opencl = throw '' 295 'mivisionx-opencl' has been deprecated. 296 Other versions of mivisionx are still available. 297 ''; # Added 2024-3-24 298 } 299 ); 300 scopeForArches = 301 arches: 302 outer.overrideScope ( 303 _final: prev: { 304 clr = prev.clr.override { 305 localGpuTargets = arches; 306 }; 307 } 308 ); 309in 310outer 311// builtins.listToAttrs ( 312 map (arch: { 313 name = arch; 314 value = scopeForArches [ arch ]; 315 }) outer.clr.gpuTargets 316) 317// { 318 gfx9 = scopeForArches [ 319 "gfx906" 320 "gfx908" 321 "gfx90a" 322 "gfx942" 323 ]; 324 gfx10 = scopeForArches [ 325 "gfx1010" 326 "gfx1030" 327 ]; 328 gfx11 = scopeForArches [ 329 "gfx1100" 330 "gfx1101" 331 "gfx1102" 332 "gfx1150" 333 "gfx1151" 334 ]; 335 gfx12 = scopeForArches [ 336 "gfx1200" 337 "gfx1201" 338 ]; 339}