From d6ff35d6158553f8ca5301bb24afaef4714b01a5 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Thu, 21 Mar 2024 21:58:20 +0100 Subject: [PATCH 01/32] rocmPackages: move over everything from 5/ folder to make 6/ --- pkgs/development/rocm-modules/{5 => 6}/clang-ocl/default.nix | 0 .../rocm-modules/{5 => 6}/clr/add-missing-operators.patch | 0 pkgs/development/rocm-modules/{5 => 6}/clr/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/clr/static-functions.patch | 0 .../development/rocm-modules/{5 => 6}/clr/test-opencl-example.nix | 0 pkgs/development/rocm-modules/{5 => 6}/clr/test-rocm-smi.nix | 0 .../rocm-modules/{5 => 6}/composable_kernel/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/half/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/hip-common/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/hipblas/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/hipcc/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/hipcub/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/hipfft/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/hipfort/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/hipify/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/hipsolver/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/hipsparse/default.nix | 0 .../rocm-modules/{5 => 6}/hsa-amd-aqlprofile-bin/default.nix | 0 .../rocm-modules/{5 => 6}/hsa-amd-aqlprofile-bin/update.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/base.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/default.nix | 0 .../rocm-modules/{5 => 6}/llvm/stage-1/clang-unwrapped.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-1/lld.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-1/llvm.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-1/runtimes.nix | 0 .../{5 => 6}/llvm/stage-2/1000-libcxx-failing-tests.list | 0 .../rocm-modules/{5 => 6}/llvm/stage-2/bintools-unwrapped.nix | 0 .../rocm-modules/{5 => 6}/llvm/stage-2/compiler-rt.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/libc.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/libcxx.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/libcxxabi.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/libunwind.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/rstdenv.nix | 0 .../{5 => 6}/llvm/stage-3/0000-mlir-fix-debugtranslation.patch | 0 .../{5 => 6}/llvm/stage-3/1000-openmp-failing-tests.list | 0 .../{5 => 6}/llvm/stage-3/1001-mlir-failing-tests.list | 0 .../rocm-modules/{5 => 6}/llvm/stage-3/clang-tools-extra.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/clang.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/flang.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/libclc.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/lldb.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/mlir.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/openmp.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/polly.nix | 0 pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/pstl.nix | 0 pkgs/development/rocm-modules/{5 => 6}/migraphx/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/miopen/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/miopengemm/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/mivisionx/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rccl/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rdc/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocalution/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocblas/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocdbgapi/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocfft/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocgdb/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocm-cmake/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocm-comgr/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocm-core/default.nix | 0 .../rocm-modules/{5 => 6}/rocm-device-libs/cmake.patch | 0 .../rocm-modules/{5 => 6}/rocm-device-libs/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocm-docs-core/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocm-runtime/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocm-smi/cmake.patch | 0 pkgs/development/rocm-modules/{5 => 6}/rocm-smi/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocm-thunk/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocminfo/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocmlir/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocprim/default.nix | 0 .../{5 => 6}/rocprofiler/0000-dont-install-tests-hsaco.patch | 0 .../{5 => 6}/rocprofiler/0001-fix-shell-scripts.patch | 0 pkgs/development/rocm-modules/{5 => 6}/rocprofiler/default.nix | 0 .../rocm-modules/{5 => 6}/rocr-debug-agent/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocrand/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocsolver/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocsparse/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocsparse/deps.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rocthrust/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/roctracer/default.nix | 0 .../{5 => 6}/rocwmma/0000-dont-fetch-googletest.patch | 0 pkgs/development/rocm-modules/{5 => 6}/rocwmma/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/rpp/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/tensile/default.nix | 0 pkgs/development/rocm-modules/{5 => 6}/update.nix | 0 85 files changed, 0 insertions(+), 0 deletions(-) rename pkgs/development/rocm-modules/{5 => 6}/clang-ocl/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/clr/add-missing-operators.patch (100%) rename pkgs/development/rocm-modules/{5 => 6}/clr/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/clr/static-functions.patch (100%) rename pkgs/development/rocm-modules/{5 => 6}/clr/test-opencl-example.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/clr/test-rocm-smi.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/composable_kernel/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/half/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hip-common/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hipblas/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hipcc/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hipcub/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hipfft/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hipfort/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hipify/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hipsolver/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hipsparse/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hsa-amd-aqlprofile-bin/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/hsa-amd-aqlprofile-bin/update.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/base.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-1/clang-unwrapped.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-1/lld.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-1/llvm.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-1/runtimes.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/1000-libcxx-failing-tests.list (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/bintools-unwrapped.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/compiler-rt.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/libc.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/libcxx.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/libcxxabi.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/libunwind.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-2/rstdenv.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/0000-mlir-fix-debugtranslation.patch (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/1000-openmp-failing-tests.list (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/1001-mlir-failing-tests.list (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/clang-tools-extra.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/clang.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/flang.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/libclc.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/lldb.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/mlir.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/openmp.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/polly.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/llvm/stage-3/pstl.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/migraphx/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/miopen/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/miopengemm/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/mivisionx/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rccl/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rdc/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocalution/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocblas/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocdbgapi/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocfft/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocgdb/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocm-cmake/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocm-comgr/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocm-core/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocm-device-libs/cmake.patch (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocm-device-libs/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocm-docs-core/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocm-runtime/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocm-smi/cmake.patch (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocm-smi/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocm-thunk/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocminfo/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocmlir/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocprim/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocprofiler/0000-dont-install-tests-hsaco.patch (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocprofiler/0001-fix-shell-scripts.patch (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocprofiler/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocr-debug-agent/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocrand/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocsolver/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocsparse/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocsparse/deps.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocthrust/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/roctracer/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocwmma/0000-dont-fetch-googletest.patch (100%) rename pkgs/development/rocm-modules/{5 => 6}/rocwmma/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/rpp/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/tensile/default.nix (100%) rename pkgs/development/rocm-modules/{5 => 6}/update.nix (100%) diff --git a/pkgs/development/rocm-modules/5/clang-ocl/default.nix b/pkgs/development/rocm-modules/6/clang-ocl/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/clang-ocl/default.nix rename to pkgs/development/rocm-modules/6/clang-ocl/default.nix diff --git a/pkgs/development/rocm-modules/5/clr/add-missing-operators.patch b/pkgs/development/rocm-modules/6/clr/add-missing-operators.patch similarity index 100% rename from pkgs/development/rocm-modules/5/clr/add-missing-operators.patch rename to pkgs/development/rocm-modules/6/clr/add-missing-operators.patch diff --git a/pkgs/development/rocm-modules/5/clr/default.nix b/pkgs/development/rocm-modules/6/clr/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/clr/default.nix rename to pkgs/development/rocm-modules/6/clr/default.nix diff --git a/pkgs/development/rocm-modules/5/clr/static-functions.patch b/pkgs/development/rocm-modules/6/clr/static-functions.patch similarity index 100% rename from pkgs/development/rocm-modules/5/clr/static-functions.patch rename to pkgs/development/rocm-modules/6/clr/static-functions.patch diff --git a/pkgs/development/rocm-modules/5/clr/test-opencl-example.nix b/pkgs/development/rocm-modules/6/clr/test-opencl-example.nix similarity index 100% rename from pkgs/development/rocm-modules/5/clr/test-opencl-example.nix rename to pkgs/development/rocm-modules/6/clr/test-opencl-example.nix diff --git a/pkgs/development/rocm-modules/5/clr/test-rocm-smi.nix b/pkgs/development/rocm-modules/6/clr/test-rocm-smi.nix similarity index 100% rename from pkgs/development/rocm-modules/5/clr/test-rocm-smi.nix rename to pkgs/development/rocm-modules/6/clr/test-rocm-smi.nix diff --git a/pkgs/development/rocm-modules/5/composable_kernel/default.nix b/pkgs/development/rocm-modules/6/composable_kernel/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/composable_kernel/default.nix rename to pkgs/development/rocm-modules/6/composable_kernel/default.nix diff --git a/pkgs/development/rocm-modules/5/default.nix b/pkgs/development/rocm-modules/6/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/default.nix rename to pkgs/development/rocm-modules/6/default.nix diff --git a/pkgs/development/rocm-modules/5/half/default.nix b/pkgs/development/rocm-modules/6/half/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/half/default.nix rename to pkgs/development/rocm-modules/6/half/default.nix diff --git a/pkgs/development/rocm-modules/5/hip-common/default.nix b/pkgs/development/rocm-modules/6/hip-common/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hip-common/default.nix rename to pkgs/development/rocm-modules/6/hip-common/default.nix diff --git a/pkgs/development/rocm-modules/5/hipblas/default.nix b/pkgs/development/rocm-modules/6/hipblas/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hipblas/default.nix rename to pkgs/development/rocm-modules/6/hipblas/default.nix diff --git a/pkgs/development/rocm-modules/5/hipcc/default.nix b/pkgs/development/rocm-modules/6/hipcc/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hipcc/default.nix rename to pkgs/development/rocm-modules/6/hipcc/default.nix diff --git a/pkgs/development/rocm-modules/5/hipcub/default.nix b/pkgs/development/rocm-modules/6/hipcub/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hipcub/default.nix rename to pkgs/development/rocm-modules/6/hipcub/default.nix diff --git a/pkgs/development/rocm-modules/5/hipfft/default.nix b/pkgs/development/rocm-modules/6/hipfft/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hipfft/default.nix rename to pkgs/development/rocm-modules/6/hipfft/default.nix diff --git a/pkgs/development/rocm-modules/5/hipfort/default.nix b/pkgs/development/rocm-modules/6/hipfort/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hipfort/default.nix rename to pkgs/development/rocm-modules/6/hipfort/default.nix diff --git a/pkgs/development/rocm-modules/5/hipify/default.nix b/pkgs/development/rocm-modules/6/hipify/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hipify/default.nix rename to pkgs/development/rocm-modules/6/hipify/default.nix diff --git a/pkgs/development/rocm-modules/5/hipsolver/default.nix b/pkgs/development/rocm-modules/6/hipsolver/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hipsolver/default.nix rename to pkgs/development/rocm-modules/6/hipsolver/default.nix diff --git a/pkgs/development/rocm-modules/5/hipsparse/default.nix b/pkgs/development/rocm-modules/6/hipsparse/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hipsparse/default.nix rename to pkgs/development/rocm-modules/6/hipsparse/default.nix diff --git a/pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/default.nix b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/default.nix rename to pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix diff --git a/pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/update.nix b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix similarity index 100% rename from pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/update.nix rename to pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix diff --git a/pkgs/development/rocm-modules/5/llvm/base.nix b/pkgs/development/rocm-modules/6/llvm/base.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/base.nix rename to pkgs/development/rocm-modules/6/llvm/base.nix diff --git a/pkgs/development/rocm-modules/5/llvm/default.nix b/pkgs/development/rocm-modules/6/llvm/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/default.nix rename to pkgs/development/rocm-modules/6/llvm/default.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-1/clang-unwrapped.nix b/pkgs/development/rocm-modules/6/llvm/stage-1/clang-unwrapped.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-1/clang-unwrapped.nix rename to pkgs/development/rocm-modules/6/llvm/stage-1/clang-unwrapped.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-1/lld.nix b/pkgs/development/rocm-modules/6/llvm/stage-1/lld.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-1/lld.nix rename to pkgs/development/rocm-modules/6/llvm/stage-1/lld.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-1/llvm.nix b/pkgs/development/rocm-modules/6/llvm/stage-1/llvm.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-1/llvm.nix rename to pkgs/development/rocm-modules/6/llvm/stage-1/llvm.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-1/runtimes.nix b/pkgs/development/rocm-modules/6/llvm/stage-1/runtimes.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-1/runtimes.nix rename to pkgs/development/rocm-modules/6/llvm/stage-1/runtimes.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/1000-libcxx-failing-tests.list b/pkgs/development/rocm-modules/6/llvm/stage-2/1000-libcxx-failing-tests.list similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-2/1000-libcxx-failing-tests.list rename to pkgs/development/rocm-modules/6/llvm/stage-2/1000-libcxx-failing-tests.list diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/bintools-unwrapped.nix b/pkgs/development/rocm-modules/6/llvm/stage-2/bintools-unwrapped.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-2/bintools-unwrapped.nix rename to pkgs/development/rocm-modules/6/llvm/stage-2/bintools-unwrapped.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/compiler-rt.nix b/pkgs/development/rocm-modules/6/llvm/stage-2/compiler-rt.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-2/compiler-rt.nix rename to pkgs/development/rocm-modules/6/llvm/stage-2/compiler-rt.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/libc.nix b/pkgs/development/rocm-modules/6/llvm/stage-2/libc.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-2/libc.nix rename to pkgs/development/rocm-modules/6/llvm/stage-2/libc.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/libcxx.nix b/pkgs/development/rocm-modules/6/llvm/stage-2/libcxx.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-2/libcxx.nix rename to pkgs/development/rocm-modules/6/llvm/stage-2/libcxx.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/libcxxabi.nix b/pkgs/development/rocm-modules/6/llvm/stage-2/libcxxabi.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-2/libcxxabi.nix rename to pkgs/development/rocm-modules/6/llvm/stage-2/libcxxabi.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/libunwind.nix b/pkgs/development/rocm-modules/6/llvm/stage-2/libunwind.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-2/libunwind.nix rename to pkgs/development/rocm-modules/6/llvm/stage-2/libunwind.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/rstdenv.nix b/pkgs/development/rocm-modules/6/llvm/stage-2/rstdenv.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-2/rstdenv.nix rename to pkgs/development/rocm-modules/6/llvm/stage-2/rstdenv.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/0000-mlir-fix-debugtranslation.patch b/pkgs/development/rocm-modules/6/llvm/stage-3/0000-mlir-fix-debugtranslation.patch similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/0000-mlir-fix-debugtranslation.patch rename to pkgs/development/rocm-modules/6/llvm/stage-3/0000-mlir-fix-debugtranslation.patch diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/1000-openmp-failing-tests.list b/pkgs/development/rocm-modules/6/llvm/stage-3/1000-openmp-failing-tests.list similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/1000-openmp-failing-tests.list rename to pkgs/development/rocm-modules/6/llvm/stage-3/1000-openmp-failing-tests.list diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/1001-mlir-failing-tests.list b/pkgs/development/rocm-modules/6/llvm/stage-3/1001-mlir-failing-tests.list similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/1001-mlir-failing-tests.list rename to pkgs/development/rocm-modules/6/llvm/stage-3/1001-mlir-failing-tests.list diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/clang-tools-extra.nix b/pkgs/development/rocm-modules/6/llvm/stage-3/clang-tools-extra.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/clang-tools-extra.nix rename to pkgs/development/rocm-modules/6/llvm/stage-3/clang-tools-extra.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/clang.nix b/pkgs/development/rocm-modules/6/llvm/stage-3/clang.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/clang.nix rename to pkgs/development/rocm-modules/6/llvm/stage-3/clang.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/flang.nix b/pkgs/development/rocm-modules/6/llvm/stage-3/flang.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/flang.nix rename to pkgs/development/rocm-modules/6/llvm/stage-3/flang.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/libclc.nix b/pkgs/development/rocm-modules/6/llvm/stage-3/libclc.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/libclc.nix rename to pkgs/development/rocm-modules/6/llvm/stage-3/libclc.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/lldb.nix b/pkgs/development/rocm-modules/6/llvm/stage-3/lldb.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/lldb.nix rename to pkgs/development/rocm-modules/6/llvm/stage-3/lldb.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/mlir.nix b/pkgs/development/rocm-modules/6/llvm/stage-3/mlir.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/mlir.nix rename to pkgs/development/rocm-modules/6/llvm/stage-3/mlir.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/openmp.nix b/pkgs/development/rocm-modules/6/llvm/stage-3/openmp.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/openmp.nix rename to pkgs/development/rocm-modules/6/llvm/stage-3/openmp.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/polly.nix b/pkgs/development/rocm-modules/6/llvm/stage-3/polly.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/polly.nix rename to pkgs/development/rocm-modules/6/llvm/stage-3/polly.nix diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/pstl.nix b/pkgs/development/rocm-modules/6/llvm/stage-3/pstl.nix similarity index 100% rename from pkgs/development/rocm-modules/5/llvm/stage-3/pstl.nix rename to pkgs/development/rocm-modules/6/llvm/stage-3/pstl.nix diff --git a/pkgs/development/rocm-modules/5/migraphx/default.nix b/pkgs/development/rocm-modules/6/migraphx/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/migraphx/default.nix rename to pkgs/development/rocm-modules/6/migraphx/default.nix diff --git a/pkgs/development/rocm-modules/5/miopen/default.nix b/pkgs/development/rocm-modules/6/miopen/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/miopen/default.nix rename to pkgs/development/rocm-modules/6/miopen/default.nix diff --git a/pkgs/development/rocm-modules/5/miopengemm/default.nix b/pkgs/development/rocm-modules/6/miopengemm/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/miopengemm/default.nix rename to pkgs/development/rocm-modules/6/miopengemm/default.nix diff --git a/pkgs/development/rocm-modules/5/mivisionx/default.nix b/pkgs/development/rocm-modules/6/mivisionx/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/mivisionx/default.nix rename to pkgs/development/rocm-modules/6/mivisionx/default.nix diff --git a/pkgs/development/rocm-modules/5/rccl/default.nix b/pkgs/development/rocm-modules/6/rccl/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rccl/default.nix rename to pkgs/development/rocm-modules/6/rccl/default.nix diff --git a/pkgs/development/rocm-modules/5/rdc/default.nix b/pkgs/development/rocm-modules/6/rdc/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rdc/default.nix rename to pkgs/development/rocm-modules/6/rdc/default.nix diff --git a/pkgs/development/rocm-modules/5/rocalution/default.nix b/pkgs/development/rocm-modules/6/rocalution/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocalution/default.nix rename to pkgs/development/rocm-modules/6/rocalution/default.nix diff --git a/pkgs/development/rocm-modules/5/rocblas/default.nix b/pkgs/development/rocm-modules/6/rocblas/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocblas/default.nix rename to pkgs/development/rocm-modules/6/rocblas/default.nix diff --git a/pkgs/development/rocm-modules/5/rocdbgapi/default.nix b/pkgs/development/rocm-modules/6/rocdbgapi/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocdbgapi/default.nix rename to pkgs/development/rocm-modules/6/rocdbgapi/default.nix diff --git a/pkgs/development/rocm-modules/5/rocfft/default.nix b/pkgs/development/rocm-modules/6/rocfft/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocfft/default.nix rename to pkgs/development/rocm-modules/6/rocfft/default.nix diff --git a/pkgs/development/rocm-modules/5/rocgdb/default.nix b/pkgs/development/rocm-modules/6/rocgdb/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocgdb/default.nix rename to pkgs/development/rocm-modules/6/rocgdb/default.nix diff --git a/pkgs/development/rocm-modules/5/rocm-cmake/default.nix b/pkgs/development/rocm-modules/6/rocm-cmake/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocm-cmake/default.nix rename to pkgs/development/rocm-modules/6/rocm-cmake/default.nix diff --git a/pkgs/development/rocm-modules/5/rocm-comgr/default.nix b/pkgs/development/rocm-modules/6/rocm-comgr/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocm-comgr/default.nix rename to pkgs/development/rocm-modules/6/rocm-comgr/default.nix diff --git a/pkgs/development/rocm-modules/5/rocm-core/default.nix b/pkgs/development/rocm-modules/6/rocm-core/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocm-core/default.nix rename to pkgs/development/rocm-modules/6/rocm-core/default.nix diff --git a/pkgs/development/rocm-modules/5/rocm-device-libs/cmake.patch b/pkgs/development/rocm-modules/6/rocm-device-libs/cmake.patch similarity index 100% rename from pkgs/development/rocm-modules/5/rocm-device-libs/cmake.patch rename to pkgs/development/rocm-modules/6/rocm-device-libs/cmake.patch diff --git a/pkgs/development/rocm-modules/5/rocm-device-libs/default.nix b/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocm-device-libs/default.nix rename to pkgs/development/rocm-modules/6/rocm-device-libs/default.nix diff --git a/pkgs/development/rocm-modules/5/rocm-docs-core/default.nix b/pkgs/development/rocm-modules/6/rocm-docs-core/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocm-docs-core/default.nix rename to pkgs/development/rocm-modules/6/rocm-docs-core/default.nix diff --git a/pkgs/development/rocm-modules/5/rocm-runtime/default.nix b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocm-runtime/default.nix rename to pkgs/development/rocm-modules/6/rocm-runtime/default.nix diff --git a/pkgs/development/rocm-modules/5/rocm-smi/cmake.patch b/pkgs/development/rocm-modules/6/rocm-smi/cmake.patch similarity index 100% rename from pkgs/development/rocm-modules/5/rocm-smi/cmake.patch rename to pkgs/development/rocm-modules/6/rocm-smi/cmake.patch diff --git a/pkgs/development/rocm-modules/5/rocm-smi/default.nix b/pkgs/development/rocm-modules/6/rocm-smi/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocm-smi/default.nix rename to pkgs/development/rocm-modules/6/rocm-smi/default.nix diff --git a/pkgs/development/rocm-modules/5/rocm-thunk/default.nix b/pkgs/development/rocm-modules/6/rocm-thunk/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocm-thunk/default.nix rename to pkgs/development/rocm-modules/6/rocm-thunk/default.nix diff --git a/pkgs/development/rocm-modules/5/rocminfo/default.nix b/pkgs/development/rocm-modules/6/rocminfo/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocminfo/default.nix rename to pkgs/development/rocm-modules/6/rocminfo/default.nix diff --git a/pkgs/development/rocm-modules/5/rocmlir/default.nix b/pkgs/development/rocm-modules/6/rocmlir/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocmlir/default.nix rename to pkgs/development/rocm-modules/6/rocmlir/default.nix diff --git a/pkgs/development/rocm-modules/5/rocprim/default.nix b/pkgs/development/rocm-modules/6/rocprim/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocprim/default.nix rename to pkgs/development/rocm-modules/6/rocprim/default.nix diff --git a/pkgs/development/rocm-modules/5/rocprofiler/0000-dont-install-tests-hsaco.patch b/pkgs/development/rocm-modules/6/rocprofiler/0000-dont-install-tests-hsaco.patch similarity index 100% rename from pkgs/development/rocm-modules/5/rocprofiler/0000-dont-install-tests-hsaco.patch rename to pkgs/development/rocm-modules/6/rocprofiler/0000-dont-install-tests-hsaco.patch diff --git a/pkgs/development/rocm-modules/5/rocprofiler/0001-fix-shell-scripts.patch b/pkgs/development/rocm-modules/6/rocprofiler/0001-fix-shell-scripts.patch similarity index 100% rename from pkgs/development/rocm-modules/5/rocprofiler/0001-fix-shell-scripts.patch rename to pkgs/development/rocm-modules/6/rocprofiler/0001-fix-shell-scripts.patch diff --git a/pkgs/development/rocm-modules/5/rocprofiler/default.nix b/pkgs/development/rocm-modules/6/rocprofiler/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocprofiler/default.nix rename to pkgs/development/rocm-modules/6/rocprofiler/default.nix diff --git a/pkgs/development/rocm-modules/5/rocr-debug-agent/default.nix b/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocr-debug-agent/default.nix rename to pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix diff --git a/pkgs/development/rocm-modules/5/rocrand/default.nix b/pkgs/development/rocm-modules/6/rocrand/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocrand/default.nix rename to pkgs/development/rocm-modules/6/rocrand/default.nix diff --git a/pkgs/development/rocm-modules/5/rocsolver/default.nix b/pkgs/development/rocm-modules/6/rocsolver/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocsolver/default.nix rename to pkgs/development/rocm-modules/6/rocsolver/default.nix diff --git a/pkgs/development/rocm-modules/5/rocsparse/default.nix b/pkgs/development/rocm-modules/6/rocsparse/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocsparse/default.nix rename to pkgs/development/rocm-modules/6/rocsparse/default.nix diff --git a/pkgs/development/rocm-modules/5/rocsparse/deps.nix b/pkgs/development/rocm-modules/6/rocsparse/deps.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocsparse/deps.nix rename to pkgs/development/rocm-modules/6/rocsparse/deps.nix diff --git a/pkgs/development/rocm-modules/5/rocthrust/default.nix b/pkgs/development/rocm-modules/6/rocthrust/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocthrust/default.nix rename to pkgs/development/rocm-modules/6/rocthrust/default.nix diff --git a/pkgs/development/rocm-modules/5/roctracer/default.nix b/pkgs/development/rocm-modules/6/roctracer/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/roctracer/default.nix rename to pkgs/development/rocm-modules/6/roctracer/default.nix diff --git a/pkgs/development/rocm-modules/5/rocwmma/0000-dont-fetch-googletest.patch b/pkgs/development/rocm-modules/6/rocwmma/0000-dont-fetch-googletest.patch similarity index 100% rename from pkgs/development/rocm-modules/5/rocwmma/0000-dont-fetch-googletest.patch rename to pkgs/development/rocm-modules/6/rocwmma/0000-dont-fetch-googletest.patch diff --git a/pkgs/development/rocm-modules/5/rocwmma/default.nix b/pkgs/development/rocm-modules/6/rocwmma/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rocwmma/default.nix rename to pkgs/development/rocm-modules/6/rocwmma/default.nix diff --git a/pkgs/development/rocm-modules/5/rpp/default.nix b/pkgs/development/rocm-modules/6/rpp/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/rpp/default.nix rename to pkgs/development/rocm-modules/6/rpp/default.nix diff --git a/pkgs/development/rocm-modules/5/tensile/default.nix b/pkgs/development/rocm-modules/6/tensile/default.nix similarity index 100% rename from pkgs/development/rocm-modules/5/tensile/default.nix rename to pkgs/development/rocm-modules/6/tensile/default.nix diff --git a/pkgs/development/rocm-modules/5/update.nix b/pkgs/development/rocm-modules/6/update.nix similarity index 100% rename from pkgs/development/rocm-modules/5/update.nix rename to pkgs/development/rocm-modules/6/update.nix From 81fa81f7d88d744b719826975c19ec04d73bb795 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Thu, 21 Mar 2024 22:00:16 +0100 Subject: [PATCH 02/32] rocmPackages: re-add ROCm 5.7 --- .../rocm-modules/5/clang-ocl/default.nix | 42 + .../5/clr/add-missing-operators.patch | 979 ++++++++++++++++++ .../rocm-modules/5/clr/default.nix | 175 ++++ .../rocm-modules/5/clr/static-functions.patch | 31 + .../5/clr/test-opencl-example.nix | 75 ++ .../rocm-modules/5/clr/test-rocm-smi.nix | 23 + .../5/composable_kernel/default.nix | 88 ++ pkgs/development/rocm-modules/5/default.nix | 529 ++++++++++ .../rocm-modules/5/half/default.nix | 39 + .../rocm-modules/5/hip-common/default.nix | 44 + .../rocm-modules/5/hipblas/default.nix | 99 ++ .../rocm-modules/5/hipcc/default.nix | 46 + .../rocm-modules/5/hipcub/default.nix | 90 ++ .../rocm-modules/5/hipfft/default.nix | 110 ++ .../rocm-modules/5/hipfort/default.nix | 66 ++ .../rocm-modules/5/hipify/default.nix | 50 + .../rocm-modules/5/hipsolver/default.nix | 100 ++ .../rocm-modules/5/hipsparse/default.nix | 136 +++ .../5/hsa-amd-aqlprofile-bin/default.nix | 43 + .../5/hsa-amd-aqlprofile-bin/update.nix | 57 + pkgs/development/rocm-modules/5/llvm/base.nix | 175 ++++ .../rocm-modules/5/llvm/default.nix | 58 ++ .../5/llvm/stage-1/clang-unwrapped.nix | 47 + .../rocm-modules/5/llvm/stage-1/lld.nix | 14 + .../rocm-modules/5/llvm/stage-1/llvm.nix | 10 + .../rocm-modules/5/llvm/stage-1/runtimes.nix | 31 + .../stage-2/1000-libcxx-failing-tests.list | 171 +++ .../5/llvm/stage-2/bintools-unwrapped.nix | 28 + .../5/llvm/stage-2/compiler-rt.nix | 63 ++ .../rocm-modules/5/llvm/stage-2/libc.nix | 26 + .../rocm-modules/5/llvm/stage-2/libcxx.nix | 42 + .../rocm-modules/5/llvm/stage-2/libcxxabi.nix | 37 + .../rocm-modules/5/llvm/stage-2/libunwind.nix | 26 + .../rocm-modules/5/llvm/stage-2/rstdenv.nix | 36 + .../0000-mlir-fix-debugtranslation.patch | 36 + .../stage-3/1000-openmp-failing-tests.list | 122 +++ .../llvm/stage-3/1001-mlir-failing-tests.list | 11 + .../5/llvm/stage-3/clang-tools-extra.nix | 42 + .../rocm-modules/5/llvm/stage-3/clang.nix | 73 ++ .../rocm-modules/5/llvm/stage-3/flang.nix | 31 + .../rocm-modules/5/llvm/stage-3/libclc.nix | 36 + .../rocm-modules/5/llvm/stage-3/lldb.nix | 39 + .../rocm-modules/5/llvm/stage-3/mlir.nix | 57 + .../rocm-modules/5/llvm/stage-3/openmp.nix | 54 + .../rocm-modules/5/llvm/stage-3/polly.nix | 18 + .../rocm-modules/5/llvm/stage-3/pstl.nix | 15 + .../rocm-modules/5/migraphx/default.nix | 171 +++ .../rocm-modules/5/miopen/default.nix | 239 +++++ .../rocm-modules/5/miopengemm/default.nix | 126 +++ .../rocm-modules/5/mivisionx/default.nix | 145 +++ .../rocm-modules/5/rccl/default.nix | 91 ++ .../rocm-modules/5/rdc/default.nix | 125 +++ .../rocm-modules/5/rocalution/default.nix | 115 ++ .../rocm-modules/5/rocblas/default.nix | 209 ++++ .../rocm-modules/5/rocdbgapi/default.nix | 111 ++ .../rocm-modules/5/rocfft/default.nix | 169 +++ .../rocm-modules/5/rocgdb/default.nix | 59 ++ .../rocm-modules/5/rocm-cmake/default.nix | 35 + .../rocm-modules/5/rocm-comgr/default.nix | 55 + .../rocm-modules/5/rocm-core/default.nix | 38 + .../5/rocm-device-libs/cmake.patch | 43 + .../5/rocm-device-libs/default.nix | 50 + .../rocm-modules/5/rocm-docs-core/default.nix | 66 ++ .../rocm-modules/5/rocm-runtime/default.nix | 78 ++ .../rocm-modules/5/rocm-smi/cmake.patch | 89 ++ .../rocm-modules/5/rocm-smi/default.nix | 54 + .../rocm-modules/5/rocm-thunk/default.nix | 54 + .../rocm-modules/5/rocminfo/default.nix | 63 ++ .../rocm-modules/5/rocmlir/default.nix | 130 +++ .../rocm-modules/5/rocprim/default.nix | 86 ++ .../0000-dont-install-tests-hsaco.patch | 15 + .../rocprofiler/0001-fix-shell-scripts.patch | 111 ++ .../rocm-modules/5/rocprofiler/default.nix | 136 +++ .../5/rocr-debug-agent/default.nix | 59 ++ .../rocm-modules/5/rocrand/default.nix | 88 ++ .../rocm-modules/5/rocsolver/default.nix | 100 ++ .../rocm-modules/5/rocsparse/default.nix | 149 +++ .../rocm-modules/5/rocsparse/deps.nix | 222 ++++ .../rocm-modules/5/rocthrust/default.nix | 87 ++ .../rocm-modules/5/roctracer/default.nix | 103 ++ .../rocwmma/0000-dont-fetch-googletest.patch | 35 + .../rocm-modules/5/rocwmma/default.nix | 105 ++ .../rocm-modules/5/rpp/default.nix | 88 ++ .../rocm-modules/5/tensile/default.nix | 65 ++ pkgs/development/rocm-modules/5/update.nix | 37 + 85 files changed, 7921 insertions(+) create mode 100644 pkgs/development/rocm-modules/5/clang-ocl/default.nix create mode 100644 pkgs/development/rocm-modules/5/clr/add-missing-operators.patch create mode 100644 pkgs/development/rocm-modules/5/clr/default.nix create mode 100644 pkgs/development/rocm-modules/5/clr/static-functions.patch create mode 100644 pkgs/development/rocm-modules/5/clr/test-opencl-example.nix create mode 100644 pkgs/development/rocm-modules/5/clr/test-rocm-smi.nix create mode 100644 pkgs/development/rocm-modules/5/composable_kernel/default.nix create mode 100644 pkgs/development/rocm-modules/5/default.nix create mode 100644 pkgs/development/rocm-modules/5/half/default.nix create mode 100644 pkgs/development/rocm-modules/5/hip-common/default.nix create mode 100644 pkgs/development/rocm-modules/5/hipblas/default.nix create mode 100644 pkgs/development/rocm-modules/5/hipcc/default.nix create mode 100644 pkgs/development/rocm-modules/5/hipcub/default.nix create mode 100644 pkgs/development/rocm-modules/5/hipfft/default.nix create mode 100644 pkgs/development/rocm-modules/5/hipfort/default.nix create mode 100644 pkgs/development/rocm-modules/5/hipify/default.nix create mode 100644 pkgs/development/rocm-modules/5/hipsolver/default.nix create mode 100644 pkgs/development/rocm-modules/5/hipsparse/default.nix create mode 100644 pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/default.nix create mode 100644 pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/update.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/base.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/default.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-1/clang-unwrapped.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-1/lld.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-1/llvm.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-1/runtimes.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-2/1000-libcxx-failing-tests.list create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-2/bintools-unwrapped.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-2/compiler-rt.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-2/libc.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-2/libcxx.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-2/libcxxabi.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-2/libunwind.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-2/rstdenv.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/0000-mlir-fix-debugtranslation.patch create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/1000-openmp-failing-tests.list create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/1001-mlir-failing-tests.list create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/clang-tools-extra.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/clang.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/flang.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/libclc.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/lldb.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/mlir.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/openmp.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/polly.nix create mode 100644 pkgs/development/rocm-modules/5/llvm/stage-3/pstl.nix create mode 100644 pkgs/development/rocm-modules/5/migraphx/default.nix create mode 100644 pkgs/development/rocm-modules/5/miopen/default.nix create mode 100644 pkgs/development/rocm-modules/5/miopengemm/default.nix create mode 100644 pkgs/development/rocm-modules/5/mivisionx/default.nix create mode 100644 pkgs/development/rocm-modules/5/rccl/default.nix create mode 100644 pkgs/development/rocm-modules/5/rdc/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocalution/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocblas/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocdbgapi/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocfft/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocgdb/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocm-cmake/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocm-comgr/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocm-core/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocm-device-libs/cmake.patch create mode 100644 pkgs/development/rocm-modules/5/rocm-device-libs/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocm-docs-core/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocm-runtime/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocm-smi/cmake.patch create mode 100644 pkgs/development/rocm-modules/5/rocm-smi/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocm-thunk/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocminfo/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocmlir/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocprim/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocprofiler/0000-dont-install-tests-hsaco.patch create mode 100644 pkgs/development/rocm-modules/5/rocprofiler/0001-fix-shell-scripts.patch create mode 100644 pkgs/development/rocm-modules/5/rocprofiler/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocr-debug-agent/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocrand/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocsolver/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocsparse/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocsparse/deps.nix create mode 100644 pkgs/development/rocm-modules/5/rocthrust/default.nix create mode 100644 pkgs/development/rocm-modules/5/roctracer/default.nix create mode 100644 pkgs/development/rocm-modules/5/rocwmma/0000-dont-fetch-googletest.patch create mode 100644 pkgs/development/rocm-modules/5/rocwmma/default.nix create mode 100644 pkgs/development/rocm-modules/5/rpp/default.nix create mode 100644 pkgs/development/rocm-modules/5/tensile/default.nix create mode 100644 pkgs/development/rocm-modules/5/update.nix diff --git a/pkgs/development/rocm-modules/5/clang-ocl/default.nix b/pkgs/development/rocm-modules/5/clang-ocl/default.nix new file mode 100644 index 000000000000..c29223dd8c7f --- /dev/null +++ b/pkgs/development/rocm-modules/5/clang-ocl/default.nix @@ -0,0 +1,42 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocm-device-libs +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "clang-ocl"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "clang-ocl"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-uMSvcVJj+me2E+7FsXZ4l4hTcK6uKEegXpkHGcuist0="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + ]; + + buildInputs = [ rocm-device-libs ]; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "OpenCL compilation with clang compiler"; + homepage = "https://github.com/ROCm/clang-ocl"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/clr/add-missing-operators.patch b/pkgs/development/rocm-modules/5/clr/add-missing-operators.patch new file mode 100644 index 000000000000..64ac0c081a02 --- /dev/null +++ b/pkgs/development/rocm-modules/5/clr/add-missing-operators.patch @@ -0,0 +1,979 @@ +From 86bd518981b364c138f9901b28a529899d8654f3 Mon Sep 17 00:00:00 2001 +From: Jatin Chaudhary +Date: Wed, 11 Oct 2023 23:19:29 +0100 +Subject: [PATCH] SWDEV-367537 - Add missing operators to __hip_bfloat16 + implementation + +Add __host__ and __device__ to bunch of operator/function matching CUDA +Fix some bugs seen in __hisinf + +Change-Id: I9e67e3e3eb2083b463158f3e250e5221c89b2896 +--- + hipamd/include/hip/amd_detail/amd_hip_bf16.h | 533 ++++++++++++++++--- + 1 file changed, 446 insertions(+), 87 deletions(-) + +diff --git a/hipamd/include/hip/amd_detail/amd_hip_bf16.h b/hipamd/include/hip/amd_detail/amd_hip_bf16.h +index 757cb7ada..b15ea3b65 100644 +--- a/hipamd/include/hip/amd_detail/amd_hip_bf16.h ++++ b/hipamd/include/hip/amd_detail/amd_hip_bf16.h +@@ -96,10 +96,20 @@ + #if defined(__HIPCC_RTC__) + #define __HOST_DEVICE__ __device__ + #else ++#include + #include +-#define __HOST_DEVICE__ __host__ __device__ ++#include ++#define __HOST_DEVICE__ __host__ __device__ inline + #endif + ++#define HIPRT_ONE_BF16 __float2bfloat16(1.0f) ++#define HIPRT_ZERO_BF16 __float2bfloat16(0.0f) ++#define HIPRT_INF_BF16 __ushort_as_bfloat16((unsigned short)0x7F80U) ++#define HIPRT_MAX_NORMAL_BF16 __ushort_as_bfloat16((unsigned short)0x7F7FU) ++#define HIPRT_MIN_DENORM_BF16 __ushort_as_bfloat16((unsigned short)0x0001U) ++#define HIPRT_NAN_BF16 __ushort_as_bfloat16((unsigned short)0x7FFFU) ++#define HIPRT_NEG_ZERO_BF16 __ushort_as_bfloat16((unsigned short)0x8000U) ++ + // Since we are using unsigned short to represent data in bfloat16, it can be of different sizes on + // different machines. These naive checks should prevent some undefined behavior on systems which + // have different sizes for basic types. +@@ -189,7 +199,7 @@ __HOST_DEVICE__ float2 __bfloat1622float2(const __hip_bfloat162 a) { + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Moves bfloat16 value to bfloat162 + */ +-__device__ __hip_bfloat162 __bfloat162bfloat162(const __hip_bfloat16 a) { ++__HOST_DEVICE__ __hip_bfloat162 __bfloat162bfloat162(const __hip_bfloat16 a) { + return __hip_bfloat162{a, a}; + } + +@@ -197,13 +207,13 @@ __device__ __hip_bfloat162 __bfloat162bfloat162(const __hip_bfloat16 a) { + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Reinterprets bits in a __hip_bfloat16 as a signed short integer + */ +-__device__ short int __bfloat16_as_short(const __hip_bfloat16 h) { return (short)h.data; } ++__HOST_DEVICE__ short int __bfloat16_as_short(const __hip_bfloat16 h) { return (short)h.data; } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Reinterprets bits in a __hip_bfloat16 as an unsigned signed short integer + */ +-__device__ unsigned short int __bfloat16_as_ushort(const __hip_bfloat16 h) { return h.data; } ++__HOST_DEVICE__ unsigned short int __bfloat16_as_ushort(const __hip_bfloat16 h) { return h.data; } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV +@@ -225,7 +235,7 @@ __HOST_DEVICE__ __hip_bfloat162 __float22bfloat162_rn(const float2 a) { + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Combine two __hip_bfloat16 to __hip_bfloat162 + */ +-__device__ __hip_bfloat162 __halves2bfloat162(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ __hip_bfloat162 __halves2bfloat162(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __hip_bfloat162{a, b}; + } + +@@ -233,13 +243,13 @@ __device__ __hip_bfloat162 __halves2bfloat162(const __hip_bfloat16 a, const __hi + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Returns high 16 bits of __hip_bfloat162 + */ +-__device__ __hip_bfloat16 __high2bfloat16(const __hip_bfloat162 a) { return a.y; } ++__HOST_DEVICE__ __hip_bfloat16 __high2bfloat16(const __hip_bfloat162 a) { return a.y; } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Returns high 16 bits of __hip_bfloat162 + */ +-__device__ __hip_bfloat162 __high2bfloat162(const __hip_bfloat162 a) { ++__HOST_DEVICE__ __hip_bfloat162 __high2bfloat162(const __hip_bfloat162 a) { + return __hip_bfloat162{a.y, a.y}; + } + +@@ -253,7 +263,8 @@ __HOST_DEVICE__ float __high2float(const __hip_bfloat162 a) { return __bfloat162 + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Extracts high 16 bits from each and combines them + */ +-__device__ __hip_bfloat162 __highs2bfloat162(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ __hip_bfloat162 __highs2bfloat162(const __hip_bfloat162 a, ++ const __hip_bfloat162 b) { + return __hip_bfloat162{a.y, b.y}; + } + +@@ -261,13 +272,13 @@ __device__ __hip_bfloat162 __highs2bfloat162(const __hip_bfloat162 a, const __hi + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Returns low 16 bits of __hip_bfloat162 + */ +-__device__ __hip_bfloat16 __low2bfloat16(const __hip_bfloat162 a) { return a.x; } ++__HOST_DEVICE__ __hip_bfloat16 __low2bfloat16(const __hip_bfloat162 a) { return a.x; } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Returns low 16 bits of __hip_bfloat162 + */ +-__device__ __hip_bfloat162 __low2bfloat162(const __hip_bfloat162 a) { ++__HOST_DEVICE__ __hip_bfloat162 __low2bfloat162(const __hip_bfloat162 a) { + return __hip_bfloat162{a.x, a.x}; + } + +@@ -281,7 +292,7 @@ __HOST_DEVICE__ float __low2float(const __hip_bfloat162 a) { return __bfloat162f + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Swaps both halves + */ +-__device__ __hip_bfloat162 __lowhigh2highlow(const __hip_bfloat162 a) { ++__HOST_DEVICE__ __hip_bfloat162 __lowhigh2highlow(const __hip_bfloat162 a) { + return __hip_bfloat162{a.y, a.x}; + } + +@@ -289,7 +300,7 @@ __device__ __hip_bfloat162 __lowhigh2highlow(const __hip_bfloat162 a) { + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Extracts low 16 bits from each and combines them + */ +-__device__ __hip_bfloat162 __lows2bfloat162(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ __hip_bfloat162 __lows2bfloat162(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hip_bfloat162{a.x, b.x}; + } + +@@ -297,7 +308,7 @@ __device__ __hip_bfloat162 __lows2bfloat162(const __hip_bfloat162 a, const __hip + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Reinterprets short int into a bfloat16 + */ +-__device__ __hip_bfloat16 __short_as_bfloat16(const short int a) { ++__HOST_DEVICE__ __hip_bfloat16 __short_as_bfloat16(const short int a) { + return __hip_bfloat16{(unsigned short)a}; + } + +@@ -305,7 +316,7 @@ __device__ __hip_bfloat16 __short_as_bfloat16(const short int a) { + * \ingroup HIP_INTRINSIC_BFLOAT162_CONV + * \brief Reinterprets unsigned short int into a bfloat16 + */ +-__device__ __hip_bfloat16 __ushort_as_bfloat16(const unsigned short int a) { ++__HOST_DEVICE__ __hip_bfloat16 __ushort_as_bfloat16(const unsigned short int a) { + return __hip_bfloat16{a}; + } + +@@ -314,7 +325,7 @@ __device__ __hip_bfloat16 __ushort_as_bfloat16(const unsigned short int a) { + * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH + * \brief Adds two bfloat16 values + */ +-__device__ __hip_bfloat16 __hadd(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ __hip_bfloat16 __hadd(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __float2bfloat16(__bfloat162float(a) + __bfloat162float(b)); + } + +@@ -322,7 +333,7 @@ __device__ __hip_bfloat16 __hadd(const __hip_bfloat16 a, const __hip_bfloat16 b) + * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH + * \brief Subtracts two bfloat16 values + */ +-__device__ __hip_bfloat16 __hsub(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ __hip_bfloat16 __hsub(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __float2bfloat16(__bfloat162float(a) - __bfloat162float(b)); + } + +@@ -330,7 +341,7 @@ __device__ __hip_bfloat16 __hsub(const __hip_bfloat16 a, const __hip_bfloat16 b) + * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH + * \brief Divides two bfloat16 values + */ +-__device__ __hip_bfloat16 __hdiv(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ __hip_bfloat16 __hdiv(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __float2bfloat16(__bfloat162float(a) / __bfloat162float(b)); + } + +@@ -348,7 +359,7 @@ __device__ __hip_bfloat16 __hfma(const __hip_bfloat16 a, const __hip_bfloat16 b, + * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH + * \brief Multiplies two bfloat16 values + */ +-__device__ __hip_bfloat16 __hmul(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ __hip_bfloat16 __hmul(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __float2bfloat16(__bfloat162float(a) * __bfloat162float(b)); + } + +@@ -356,7 +367,7 @@ __device__ __hip_bfloat16 __hmul(const __hip_bfloat16 a, const __hip_bfloat16 b) + * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH + * \brief Negate a bfloat16 value + */ +-__device__ __hip_bfloat16 __hneg(const __hip_bfloat16 a) { ++__HOST_DEVICE__ __hip_bfloat16 __hneg(const __hip_bfloat16 a) { + auto ret = a; + ret.data ^= 0x8000; + return ret; +@@ -366,7 +377,7 @@ __device__ __hip_bfloat16 __hneg(const __hip_bfloat16 a) { + * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH + * \brief Returns absolute of a bfloat16 + */ +-__device__ __hip_bfloat16 __habs(const __hip_bfloat16 a) { ++__HOST_DEVICE__ __hip_bfloat16 __habs(const __hip_bfloat16 a) { + auto ret = a; + ret.data &= 0x7FFF; + return ret; +@@ -376,7 +387,7 @@ __device__ __hip_bfloat16 __habs(const __hip_bfloat16 a) { + * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH + * \brief Divides bfloat162 values + */ +-__device__ __hip_bfloat162 __h2div(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ __hip_bfloat162 __h2div(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hip_bfloat162{__float2bfloat16(__bfloat162float(a.x) / __bfloat162float(b.x)), + __float2bfloat16(__bfloat162float(a.y) / __bfloat162float(b.y))}; + } +@@ -385,7 +396,7 @@ __device__ __hip_bfloat162 __h2div(const __hip_bfloat162 a, const __hip_bfloat16 + * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH + * \brief Returns absolute of a bfloat162 + */ +-__device__ __hip_bfloat162 __habs2(const __hip_bfloat162 a) { ++__HOST_DEVICE__ __hip_bfloat162 __habs2(const __hip_bfloat162 a) { + return __hip_bfloat162{__habs(a.x), __habs(a.y)}; + } + +@@ -393,7 +404,7 @@ __device__ __hip_bfloat162 __habs2(const __hip_bfloat162 a) { + * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH + * \brief Adds two bfloat162 values + */ +-__device__ __hip_bfloat162 __hadd2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ __hip_bfloat162 __hadd2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hip_bfloat162{__hadd(a.x, b.x), __hadd(a.y, b.y)}; + } + +@@ -410,7 +421,7 @@ __device__ __hip_bfloat162 __hfma2(const __hip_bfloat162 a, const __hip_bfloat16 + * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH + * \brief Multiplies two bfloat162 values + */ +-__device__ __hip_bfloat162 __hmul2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ __hip_bfloat162 __hmul2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hip_bfloat162{__hmul(a.x, b.x), __hmul(a.y, b.y)}; + } + +@@ -418,7 +429,7 @@ __device__ __hip_bfloat162 __hmul2(const __hip_bfloat162 a, const __hip_bfloat16 + * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH + * \brief Converts a bfloat162 into negative + */ +-__device__ __hip_bfloat162 __hneg2(const __hip_bfloat162 a) { ++__HOST_DEVICE__ __hip_bfloat162 __hneg2(const __hip_bfloat162 a) { + return __hip_bfloat162{__hneg(a.x), __hneg(a.y)}; + } + +@@ -426,15 +437,251 @@ __device__ __hip_bfloat162 __hneg2(const __hip_bfloat162 a) { + * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH + * \brief Subtracts two bfloat162 values + */ +-__device__ __hip_bfloat162 __hsub2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ __hip_bfloat162 __hsub2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hip_bfloat162{__hsub(a.x, b.x), __hsub(a.y, b.y)}; + } + ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to multiply two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat16 operator*(const __hip_bfloat16& l, const __hip_bfloat16& r) { ++ return __hmul(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to multiply-assign two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat16 operator*=(__hip_bfloat16& l, const __hip_bfloat16& r) { ++ l = __hmul(l, r); ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to unary+ on a __hip_bfloat16 number ++ */ ++__HOST_DEVICE__ __hip_bfloat16 operator+(const __hip_bfloat16& l) { return l; } ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to add two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat16 operator+(const __hip_bfloat16& l, const __hip_bfloat16& r) { ++ return __hadd(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to negate a __hip_bfloat16 number ++ */ ++__HOST_DEVICE__ __hip_bfloat16 operator-(const __hip_bfloat16& l) { return __hneg(l); } ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to subtract two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat16 operator-(const __hip_bfloat16& l, const __hip_bfloat16& r) { ++ return __hsub(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to post increment a __hip_bfloat16 number ++ */ ++__HOST_DEVICE__ __hip_bfloat16 operator++(__hip_bfloat16& l, const int) { ++ auto ret = l; ++ l = __hadd(l, HIPRT_ONE_BF16); ++ return ret; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to pre increment a __hip_bfloat16 number ++ */ ++__HOST_DEVICE__ __hip_bfloat16& operator++(__hip_bfloat16& l) { ++ l = __hadd(l, HIPRT_ONE_BF16); ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to post decrement a __hip_bfloat16 number ++ */ ++__HOST_DEVICE__ __hip_bfloat16 operator--(__hip_bfloat16& l, const int) { ++ auto ret = l; ++ l = __hsub(l, HIPRT_ONE_BF16); ++ return ret; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to pre decrement a __hip_bfloat16 number ++ */ ++__HOST_DEVICE__ __hip_bfloat16& operator--(__hip_bfloat16& l) { ++ l = __hsub(l, HIPRT_ONE_BF16); ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to add-assign two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat16& operator+=(__hip_bfloat16& l, const __hip_bfloat16& r) { ++ l = l + r; ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to subtract-assign two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat16& operator-=(__hip_bfloat16& l, const __hip_bfloat16& r) { ++ l = l - r; ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to divide two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat16 operator/(const __hip_bfloat16& l, const __hip_bfloat16& r) { ++ return __hdiv(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH ++ * \brief Operator to divide-assign two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat16& operator/=(__hip_bfloat16& l, const __hip_bfloat16& r) { ++ l = l / r; ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to multiply two __hip_bfloat162 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat162 operator*(const __hip_bfloat162& l, const __hip_bfloat162& r) { ++ return __hmul2(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to multiply-assign two __hip_bfloat162 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat162 operator*=(__hip_bfloat162& l, const __hip_bfloat162& r) { ++ l = __hmul2(l, r); ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to unary+ on a __hip_bfloat162 number ++ */ ++__HOST_DEVICE__ __hip_bfloat162 operator+(const __hip_bfloat162& l) { return l; } ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to add two __hip_bfloat162 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat162 operator+(const __hip_bfloat162& l, const __hip_bfloat162& r) { ++ return __hadd2(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to negate a __hip_bfloat162 number ++ */ ++__HOST_DEVICE__ __hip_bfloat162 operator-(const __hip_bfloat162& l) { return __hneg2(l); } ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to subtract two __hip_bfloat162 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat162 operator-(const __hip_bfloat162& l, const __hip_bfloat162& r) { ++ return __hsub2(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to post increment a __hip_bfloat162 number ++ */ ++__HOST_DEVICE__ __hip_bfloat162 operator++(__hip_bfloat162& l, const int) { ++ auto ret = l; ++ l = __hadd2(l, {HIPRT_ONE_BF16, HIPRT_ONE_BF16}); ++ return ret; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to pre increment a __hip_bfloat162 number ++ */ ++__HOST_DEVICE__ __hip_bfloat162& operator++(__hip_bfloat162& l) { ++ l = __hadd2(l, {HIPRT_ONE_BF16, HIPRT_ONE_BF16}); ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to post decrement a __hip_bfloat162 number ++ */ ++__HOST_DEVICE__ __hip_bfloat162 operator--(__hip_bfloat162& l, const int) { ++ auto ret = l; ++ l = __hsub2(l, {HIPRT_ONE_BF16, HIPRT_ONE_BF16}); ++ return ret; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to pre decrement a __hip_bfloat162 number ++ */ ++__HOST_DEVICE__ __hip_bfloat162& operator--(__hip_bfloat162& l) { ++ l = __hsub2(l, {HIPRT_ONE_BF16, HIPRT_ONE_BF16}); ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to add-assign two __hip_bfloat162 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat162& operator+=(__hip_bfloat162& l, const __hip_bfloat162& r) { ++ l = l + r; ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to subtract-assign two __hip_bfloat162 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat162& operator-=(__hip_bfloat162& l, const __hip_bfloat162& r) { ++ l = l - r; ++ return l; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to divide two __hip_bfloat162 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat162 operator/(const __hip_bfloat162& l, const __hip_bfloat162& r) { ++ return __h2div(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH ++ * \brief Operator to divide-assign two __hip_bfloat162 numbers ++ */ ++__HOST_DEVICE__ __hip_bfloat162& operator/=(__hip_bfloat162& l, const __hip_bfloat162& r) { ++ l = l / r; ++ return l; ++} ++ + /** + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values + */ +-__device__ bool __heq(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __heq(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __bfloat162float(a) == __bfloat162float(b); + } + +@@ -442,7 +689,7 @@ __device__ bool __heq(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - unordered equal + */ +-__device__ bool __hequ(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hequ(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return !(__bfloat162float(a) < __bfloat162float(b)) && + !(__bfloat162float(a) > __bfloat162float(b)); + } +@@ -451,7 +698,7 @@ __device__ bool __hequ(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - greater than + */ +-__device__ bool __hgt(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hgt(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __bfloat162float(a) > __bfloat162float(b); + } + +@@ -459,7 +706,7 @@ __device__ bool __hgt(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - unordered greater than + */ +-__device__ bool __hgtu(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hgtu(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return !(__bfloat162float(a) <= __bfloat162float(b)); + } + +@@ -467,7 +714,7 @@ __device__ bool __hgtu(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - greater than equal + */ +-__device__ bool __hge(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hge(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __bfloat162float(a) >= __bfloat162float(b); + } + +@@ -475,7 +722,7 @@ __device__ bool __hge(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - unordered greater than equal + */ +-__device__ bool __hgeu(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hgeu(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return !(__bfloat162float(a) < __bfloat162float(b)); + } + +@@ -483,7 +730,7 @@ __device__ bool __hgeu(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - not equal + */ +-__device__ bool __hne(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hne(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __bfloat162float(a) != __bfloat162float(b); + } + +@@ -491,7 +738,7 @@ __device__ bool __hne(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - unordered not equal + */ +-__device__ bool __hneu(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hneu(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return !(__bfloat162float(a) == __bfloat162float(b)); + } + +@@ -499,23 +746,31 @@ __device__ bool __hneu(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - return max + */ +-__device__ __hip_bfloat16 __hmax(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ __hip_bfloat16 __hmax(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++#if __HIP_DEVICE_COMPILE__ + return __float2bfloat16(__ocml_fmax_f32(__bfloat162float(a), __bfloat162float(b))); ++#else ++ return __float2bfloat16(std::max(__bfloat162float(a), __bfloat162float(b))); ++#endif + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - return min + */ +-__device__ __hip_bfloat16 __hmin(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ __hip_bfloat16 __hmin(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++#if __HIP_DEVICE_COMPILE__ + return __float2bfloat16(__ocml_fmin_f32(__bfloat162float(a), __bfloat162float(b))); ++#else ++ return __float2bfloat16(std::min(__bfloat162float(a), __bfloat162float(b))); ++#endif + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - less than operator + */ +-__device__ bool __hlt(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hlt(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __bfloat162float(a) < __bfloat162float(b); + } + +@@ -523,15 +778,15 @@ __device__ bool __hlt(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - unordered less than + */ +-__device__ bool __hltu(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hltu(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return !(__bfloat162float(a) >= __bfloat162float(b)); + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP +- * \brief Compare two bfloat162 values - less than ++ * \brief Compare two bfloat162 values - less than equal + */ +-__device__ bool __hle(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hle(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return __bfloat162float(a) <= __bfloat162float(b); + } + +@@ -539,7 +794,7 @@ __device__ bool __hle(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Compare two bfloat162 values - unordered less than equal + */ +-__device__ bool __hleu(const __hip_bfloat16 a, const __hip_bfloat16 b) { ++__HOST_DEVICE__ bool __hleu(const __hip_bfloat16 a, const __hip_bfloat16 b) { + return !(__bfloat162float(a) > __bfloat162float(b)); + } + +@@ -547,19 +802,33 @@ __device__ bool __hleu(const __hip_bfloat16 a, const __hip_bfloat16 b) { + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Checks if number is inf + */ +-__device__ int __hisinf(const __hip_bfloat16 a) { return __ocml_isinf_f32(__bfloat162float(a)); } ++__HOST_DEVICE__ int __hisinf(const __hip_bfloat16 a) { ++ unsigned short sign = a.data & 0x8000U; ++#if __HIP_DEVICE_COMPILE__ ++ int res = __ocml_isinf_f32(__bfloat162float(a)); ++#else ++ int res = std::isinf(__bfloat162float(a)) ? 1 : 0; ++#endif ++ return (res == 0) ? res : ((sign != 0U) ? -res : res); ++} + + /** + * \ingroup HIP_INTRINSIC_BFLOAT16_COMP + * \brief Checks if number is nan + */ +-__device__ bool __hisnan(const __hip_bfloat16 a) { return __ocml_isnan_f32(__bfloat162float(a)); } ++__HOST_DEVICE__ bool __hisnan(const __hip_bfloat16 a) { ++#if __HIP_DEVICE_COMPILE__ ++ return __ocml_isnan_f32(__bfloat162float(a)); ++#else ++ return std::isnan(__bfloat162float(a)); ++#endif ++} + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Checks if two numbers are equal + */ +-__device__ bool __hbeq2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hbeq2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __heq(a.x, b.x) && __heq(a.y, b.y); + } + +@@ -567,7 +836,7 @@ __device__ bool __hbeq2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Checks if two numbers are equal - unordered + */ +-__device__ bool __hbequ2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hbequ2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hequ(a.x, b.x) && __hequ(a.y, b.y); + } + +@@ -575,7 +844,7 @@ __device__ bool __hbequ2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a >= b + */ +-__device__ bool __hbge2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hbge2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hge(a.x, b.x) && __hge(a.y, b.y); + } + +@@ -583,7 +852,7 @@ __device__ bool __hbge2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a >= b - unordered + */ +-__device__ bool __hbgeu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hbgeu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hgeu(a.x, b.x) && __hgeu(a.y, b.y); + } + +@@ -591,7 +860,7 @@ __device__ bool __hbgeu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a > b + */ +-__device__ bool __hbgt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hbgt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hgt(a.x, b.x) && __hgt(a.y, b.y); + } + +@@ -599,7 +868,7 @@ __device__ bool __hbgt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a > b - unordered + */ +-__device__ bool __hbgtu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hbgtu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hgtu(a.x, b.x) && __hgtu(a.y, b.y); + } + +@@ -607,7 +876,7 @@ __device__ bool __hbgtu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a <= b + */ +-__device__ bool __hble2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hble2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hle(a.x, b.x) && __hle(a.y, b.y); + } + +@@ -615,7 +884,7 @@ __device__ bool __hble2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a <= b - unordered + */ +-__device__ bool __hbleu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hbleu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hleu(a.x, b.x) && __hleu(a.y, b.y); + } + +@@ -623,7 +892,7 @@ __device__ bool __hbleu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a < b + */ +-__device__ bool __hblt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hblt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hlt(a.x, b.x) && __hlt(a.y, b.y); + } + +@@ -631,7 +900,7 @@ __device__ bool __hblt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a < b - unordered + */ +-__device__ bool __hbltu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hbltu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hltu(a.x, b.x) && __hltu(a.y, b.y); + } + +@@ -639,7 +908,7 @@ __device__ bool __hbltu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a != b + */ +-__device__ bool __hbne2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hbne2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hne(a.x, b.x) && __hne(a.y, b.y); + } + +@@ -647,7 +916,7 @@ __device__ bool __hbne2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a != b + */ +-__device__ bool __hbneu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++__HOST_DEVICE__ bool __hbneu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + return __hneu(a.x, b.x) && __hneu(a.y, b.y); + } + +@@ -655,84 +924,175 @@ __device__ bool __hbneu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a != b, returns 1.0 if equal, otherwise 0.0 + */ +-__device__ __hip_bfloat162 __heq2(const __hip_bfloat162 a, const __hip_bfloat162 b) { +- return __hip_bfloat162{{__heq(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, +- {__heq(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; ++__HOST_DEVICE__ __hip_bfloat162 __heq2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++ return __hip_bfloat162{{__heq(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, ++ {__heq(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}}; + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a >= b, returns 1.0 if greater than equal, otherwise 0.0 + */ +-__device__ __hip_bfloat162 __hge2(const __hip_bfloat162 a, const __hip_bfloat162 b) { +- return __hip_bfloat162{{__hge(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, +- {__hge(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; ++__HOST_DEVICE__ __hip_bfloat162 __hge2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++ return __hip_bfloat162{{__hge(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, ++ {__hge(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}}; + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a > b, returns 1.0 if greater than equal, otherwise 0.0 + */ +-__device__ __hip_bfloat162 __hgt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { +- return __hip_bfloat162{{__hgt(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, +- {__hgt(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; ++__HOST_DEVICE__ __hip_bfloat162 __hgt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++ return __hip_bfloat162{{__hgt(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, ++ {__hgt(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ONE_BF16}}; + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a is NaN, returns 1.0 if NaN, otherwise 0.0 + */ +-__device__ __hip_bfloat162 __hisnan2(const __hip_bfloat162 a) { +- return __hip_bfloat162{ +- {__ocml_isnan_f32(__bfloat162float(a.x)) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, +- {__ocml_isnan_f32(__bfloat162float(a.y)) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; ++__HOST_DEVICE__ __hip_bfloat162 __hisnan2(const __hip_bfloat162 a) { ++ return __hip_bfloat162{{__hisnan(a.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, ++ {__hisnan(a.y) ? HIPRT_ONE_BF16 : HIPRT_ONE_BF16}}; + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a <= b, returns 1.0 if greater than equal, otherwise 0.0 + */ +-__device__ __hip_bfloat162 __hle2(const __hip_bfloat162 a, const __hip_bfloat162 b) { +- return __hip_bfloat162{{__hle(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, +- {__hle(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; ++__HOST_DEVICE__ __hip_bfloat162 __hle2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++ return __hip_bfloat162{{__hle(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, ++ {__hle(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}}; + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Check for a < b, returns 1.0 if greater than equal, otherwise 0.0 + */ +-__device__ __hip_bfloat162 __hlt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { +- return __hip_bfloat162{{__hlt(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, +- {__hlt(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; ++__HOST_DEVICE__ __hip_bfloat162 __hlt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++ return __hip_bfloat162{{__hlt(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, ++ {__hlt(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}}; + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Returns max of two elements + */ +-__device__ __hip_bfloat162 __hmax2(const __hip_bfloat162 a, const __hip_bfloat162 b) { +- return __hip_bfloat162{ +- __float2bfloat16(__ocml_fmax_f32(__bfloat162float(a.x), __bfloat162float(b.x))), +- __float2bfloat16(__ocml_fmax_f32(__bfloat162float(a.y), __bfloat162float(b.y)))}; ++__HOST_DEVICE__ __hip_bfloat162 __hmax2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++ return __hip_bfloat162{__hmax(a.x, b.x), __hmax(a.y, b.y)}; + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Returns min of two elements + */ +-__device__ __hip_bfloat162 __hmin2(const __hip_bfloat162 a, const __hip_bfloat162 b) { +- return __hip_bfloat162{ +- __float2bfloat16(__ocml_fmin_f32(__bfloat162float(a.x), __bfloat162float(b.x))), +- __float2bfloat16(__ocml_fmin_f32(__bfloat162float(a.y), __bfloat162float(b.y)))}; ++__HOST_DEVICE__ __hip_bfloat162 __hmin2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++ return __hip_bfloat162{__hmin(a.x, b.x), __hmin(a.y, b.y)}; + } + + /** + * \ingroup HIP_INTRINSIC_BFLOAT162_COMP + * \brief Checks for not equal to + */ +-__device__ __hip_bfloat162 __hne2(const __hip_bfloat162 a, const __hip_bfloat162 b) { +- return __hip_bfloat162{{__hne(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, +- {__hne(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; ++__HOST_DEVICE__ __hip_bfloat162 __hne2(const __hip_bfloat162 a, const __hip_bfloat162 b) { ++ return __hip_bfloat162{{__hne(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, ++ {__hne(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}}; ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP ++ * \brief Operator to perform an equal compare on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator==(const __hip_bfloat16& l, const __hip_bfloat16& r) { ++ return __heq(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP ++ * \brief Operator to perform a not equal on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator!=(const __hip_bfloat16& l, const __hip_bfloat16& r) { ++ return __hne(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP ++ * \brief Operator to perform a less than on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator<(const __hip_bfloat16& l, const __hip_bfloat16& r) { ++ return __hlt(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP ++ * \brief Operator to perform a less than equal on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator<=(const __hip_bfloat16& l, const __hip_bfloat16& r) { ++ return __hle(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP ++ * \brief Operator to perform a greater than on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator>(const __hip_bfloat16& l, const __hip_bfloat16& r) { ++ return __hgt(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP ++ * \brief Operator to perform a greater than equal on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator>=(const __hip_bfloat16& l, const __hip_bfloat16& r) { ++ return __hge(l, r); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_COMP ++ * \brief Operator to perform an equal compare on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator==(const __hip_bfloat162& l, const __hip_bfloat162& r) { ++ return __heq(l.x, r.x) && __heq(l.y, r.y); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_COMP ++ * \brief Operator to perform a not equal on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator!=(const __hip_bfloat162& l, const __hip_bfloat162& r) { ++ return __hne(l.x, r.x) || __hne(l.y, r.y); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_COMP ++ * \brief Operator to perform a less than on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator<(const __hip_bfloat162& l, const __hip_bfloat162& r) { ++ return __hlt(l.x, r.x) && __hlt(l.y, r.y); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_COMP ++ * \brief Operator to perform a less than equal on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator<=(const __hip_bfloat162& l, const __hip_bfloat162& r) { ++ return __hle(l.x, r.x) && __hle(l.y, r.y); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT162_COMP ++ * \brief Operator to perform a greater than on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator>(const __hip_bfloat162& l, const __hip_bfloat162& r) { ++ return __hgt(l.x, r.x) && __hgt(l.y, r.y); ++} ++ ++/** ++ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP ++ * \brief Operator to perform a greater than equal on two __hip_bfloat16 numbers ++ */ ++__HOST_DEVICE__ bool operator>=(const __hip_bfloat162& l, const __hip_bfloat162& r) { ++ return __hge(l.x, r.x) && __hge(l.y, r.y); + } + + /** +@@ -974,5 +1334,4 @@ __device__ __hip_bfloat162 h2sqrt(const __hip_bfloat162 h) { + __device__ __hip_bfloat162 h2trunc(const __hip_bfloat162 h) { + return __hip_bfloat162{htrunc(h.x), htrunc(h.y)}; + } +- + #endif diff --git a/pkgs/development/rocm-modules/5/clr/default.nix b/pkgs/development/rocm-modules/5/clr/default.nix new file mode 100644 index 000000000000..3fcd551cd423 --- /dev/null +++ b/pkgs/development/rocm-modules/5/clr/default.nix @@ -0,0 +1,175 @@ +{ lib +, stdenv +, callPackage +, fetchFromGitHub +, rocmUpdateScript +, makeWrapper +, cmake +, perl +, clang +, hip-common +, hipcc +, rocm-device-libs +, rocm-comgr +, rocm-runtime +, roctracer +, rocminfo +, rocm-smi +, numactl +, libGL +, libxml2 +, libX11 +, python3Packages +}: + +let + wrapperArgs = [ + "--prefix PATH : $out/bin" + "--prefix LD_LIBRARY_PATH : ${rocm-runtime}" + "--set HIP_PLATFORM amd" + "--set HIP_PATH $out" + "--set HIP_CLANG_PATH ${clang}/bin" + "--set DEVICE_LIB_PATH ${rocm-device-libs}/amdgcn/bitcode" + "--set HSA_PATH ${rocm-runtime}" + "--set ROCM_PATH $out" + ]; +in stdenv.mkDerivation (finalAttrs: { + pname = "clr"; + version = "5.7.1"; + + outputs = [ + "out" + "icd" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "clr"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-1gZJhvBbUFdKH9p/7SRfzEV/fM+gIN2Qvlxf2VbmAIw="; + }; + + nativeBuildInputs = [ + makeWrapper + cmake + perl + python3Packages.python + python3Packages.cppheaderparser + ]; + + buildInputs = [ + numactl + libGL + libxml2 + libX11 + ]; + + propagatedBuildInputs = [ + rocm-device-libs + rocm-comgr + rocm-runtime + rocminfo + ]; + + cmakeFlags = [ + "-DCMAKE_POLICY_DEFAULT_CMP0072=NEW" # Prefer newer OpenGL libraries + "-DCLR_BUILD_HIP=ON" + "-DCLR_BUILD_OCL=ON" + "-DHIP_COMMON_DIR=${hip-common}" + "-DHIPCC_BIN_DIR=${hipcc}/bin" + "-DHIP_PLATFORM=amd" + "-DPROF_API_HEADER_PATH=${roctracer.src}/inc/ext" + "-DROCM_PATH=${rocminfo}" + + # Temporarily set variables to work around upstream CMakeLists issue + # Can be removed once https://github.com/ROCm/rocm-cmake/issues/121 is fixed + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + "-DCMAKE_INSTALL_LIBDIR=lib" + ]; + + patches = [ + ./add-missing-operators.patch + ./static-functions.patch + ]; + + postPatch = '' + patchShebangs hipamd/src + + # We're not on Windows so these are never installed to hipcc... + substituteInPlace hipamd/CMakeLists.txt \ + --replace "install(PROGRAMS \''${HIPCC_BIN_DIR}/hipcc.bat DESTINATION bin)" "" \ + --replace "install(PROGRAMS \''${HIPCC_BIN_DIR}/hipconfig.bat DESTINATION bin)" "" + + substituteInPlace hipamd/src/hip_embed_pch.sh \ + --replace "\''$LLVM_DIR/bin/clang" "${clang}/bin/clang" + ''; + + postInstall = '' + patchShebangs $out/bin + + # hipcc.bin and hipconfig.bin is mysteriously never installed + cp -a ${hipcc}/bin/{hipcc.bin,hipconfig.bin} $out/bin + + wrapProgram $out/bin/hipcc.bin ${lib.concatStringsSep " " wrapperArgs} + wrapProgram $out/bin/hipconfig.bin ${lib.concatStringsSep " " wrapperArgs} + wrapProgram $out/bin/hipcc.pl ${lib.concatStringsSep " " wrapperArgs} + wrapProgram $out/bin/hipconfig.pl ${lib.concatStringsSep " " wrapperArgs} + + # Just link rocminfo, it's easier + ln -s ${rocminfo}/bin/* $out/bin + + # Replace rocm-opencl-icd functionality + mkdir -p $icd/etc/OpenCL/vendors + echo "$out/lib/libamdocl64.so" > $icd/etc/OpenCL/vendors/amdocl64.icd + ''; + + passthru = { + # All known and valid general GPU targets + # We cannot use this for each ROCm library, as each defines their own supported targets + # See: https://github.com/ROCm/ROCm/blob/77cbac4abab13046ee93d8b5bf410684caf91145/README.md#library-target-matrix + gpuTargets = lib.forEach [ + "803" + "900" + "906" + "908" + "90a" + "940" + "941" + "942" + "1010" + "1012" + "1030" + "1100" + "1101" + "1102" + ] (target: "gfx${target}"); + + updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + page = "tags?per_page=1"; + filter = ".[0].name | split(\"-\") | .[1]"; + }; + + impureTests = { + rocm-smi = callPackage ./test-rocm-smi.nix { + inherit rocm-smi; + clr = finalAttrs.finalPackage; + }; + opencl-example = callPackage ./test-opencl-example.nix { + clr = finalAttrs.finalPackage; + }; + }; + }; + + meta = with lib; { + description = "AMD Common Language Runtime for hipamd, opencl, and rocclr"; + homepage = "https://github.com/ROCm/clr"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/clr/static-functions.patch b/pkgs/development/rocm-modules/5/clr/static-functions.patch new file mode 100644 index 000000000000..87d9528691ce --- /dev/null +++ b/pkgs/development/rocm-modules/5/clr/static-functions.patch @@ -0,0 +1,31 @@ +From 77c581a3ebd47b5e2908973b70adea66891159ee Mon Sep 17 00:00:00 2001 +From: Jatin Chaudhary +Date: Mon, 4 Dec 2023 17:21:39 +0000 +Subject: [PATCH] SWDEV-435702 - the functions in bf16 header need to be static + +If the compiler decides not to inline these functions, we might break ODR (one definition rule) due to this file being included in multiple files and being linked together + +Change-Id: Iacbfdabb53f5b4e5db8c690b23f3730ec9af16c0 +--- + hipamd/include/hip/amd_detail/amd_hip_bf16.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/hipamd/include/hip/amd_detail/amd_hip_bf16.h b/hipamd/include/hip/amd_detail/amd_hip_bf16.h +index 836e090eb..204269a84 100644 +--- a/hipamd/include/hip/amd_detail/amd_hip_bf16.h ++++ b/hipamd/include/hip/amd_detail/amd_hip_bf16.h +@@ -94,12 +94,12 @@ + #include "math_fwd.h" // ocml device functions + + #if defined(__HIPCC_RTC__) +-#define __HOST_DEVICE__ __device__ ++#define __HOST_DEVICE__ __device__ static + #else + #include + #include + #include +-#define __HOST_DEVICE__ __host__ __device__ inline ++#define __HOST_DEVICE__ __host__ __device__ static inline + #endif + + #define HIPRT_ONE_BF16 __float2bfloat16(1.0f) diff --git a/pkgs/development/rocm-modules/5/clr/test-opencl-example.nix b/pkgs/development/rocm-modules/5/clr/test-opencl-example.nix new file mode 100644 index 000000000000..d6714c6b7d63 --- /dev/null +++ b/pkgs/development/rocm-modules/5/clr/test-opencl-example.nix @@ -0,0 +1,75 @@ +{ lib +, stdenv +, makeImpureTest +, fetchFromGitHub +, clr +, cmake +, pkg-config +, glew +, freeglut +, opencl-headers +, ocl-icd +}: + +let + + examples = stdenv.mkDerivation { + pname = "amd-app-samples"; + version = "2018-06-10"; + + src = fetchFromGitHub { + owner = "OpenCL"; + repo = "AMD_APP_samples"; + rev = "54da6ca465634e78fc51fc25edf5840467ee2411"; + hash = "sha256-qARQpUiYsamHbko/I1gPZE9pUGJ+3396Vk2n7ERSftA="; + }; + + nativeBuildInputs = [ cmake pkg-config ]; + + buildInputs = [ glew freeglut opencl-headers ocl-icd ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + # Example path is bin/x86_64/Release/cl/Reduction/Reduction + cp -r bin/*/*/*/*/* $out/bin/ + + runHook postInstall + ''; + + cmakeFlags = [ "-DBUILD_CPP_CL=OFF" ]; + + meta = with lib; { + description = "Samples from the AMD APP SDK (with OpenCRun support) "; + homepage = "https://github.com/OpenCL/AMD_APP_samples"; + license = licenses.bsd2; + platforms = platforms.linux; + maintainers = lib.teams.rocm.members; + }; + }; + +in +makeImpureTest { + name = "opencl-example"; + testedPackage = "rocmPackages_5.clr"; + + sandboxPaths = [ "/sys" "/dev/dri" "/dev/kfd" ]; + + nativeBuildInputs = [ examples ]; + + OCL_ICD_VENDORS = "${clr.icd}/etc/OpenCL/vendors"; + + testScript = '' + # Examples load resources from current directory + cd ${examples}/bin + echo OCL_ICD_VENDORS=$OCL_ICD_VENDORS + pwd + + HelloWorld | grep HelloWorld + ''; + + meta = with lib; { + maintainers = teams.rocm.members; + }; +} diff --git a/pkgs/development/rocm-modules/5/clr/test-rocm-smi.nix b/pkgs/development/rocm-modules/5/clr/test-rocm-smi.nix new file mode 100644 index 000000000000..25c0a7e0c32c --- /dev/null +++ b/pkgs/development/rocm-modules/5/clr/test-rocm-smi.nix @@ -0,0 +1,23 @@ +{ lib +, makeImpureTest +, clinfo +, clr +, rocm-smi +}: + +makeImpureTest { + name = "rocm-smi"; + testedPackage = "rocmPackages_5.clr"; + nativeBuildInputs = [ clinfo rocm-smi ]; + OCL_ICD_VENDORS = "${clr.icd}/etc/OpenCL/vendors"; + + testScript = '' + # Test fails if the number of platforms is 0 + clinfo | grep -E 'Number of platforms * [1-9]' + rocm-smi | grep -A1 GPU + ''; + + meta = with lib; { + maintainers = teams.rocm.members; + }; +} diff --git a/pkgs/development/rocm-modules/5/composable_kernel/default.nix b/pkgs/development/rocm-modules/5/composable_kernel/default.nix new file mode 100644 index 000000000000..78416b77a07b --- /dev/null +++ b/pkgs/development/rocm-modules/5/composable_kernel/default.nix @@ -0,0 +1,88 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, clr +, openmp +, clang-tools-extra +, gtest +, buildTests ? false +, buildExamples ? false +, gpuTargets ? [ ] # gpuTargets = [ "gfx803" "gfx900" "gfx1030" ... ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "composable_kernel"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildExamples [ + "example" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "composable_kernel"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-Z9X+S2SijGJ8bhr9ghkkWicBUzLzs9fxPpqZxX6BBM4="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + clang-tools-extra + ]; + + 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 + ]; + + # 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 = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + # Times out otherwise + requiredSystemFeatures = [ "big-parallel" ]; + + meta = with lib; { + description = "Performance portable programming model for machine learning tensor operators"; + homepage = "https://github.com/ROCm/composable_kernel"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/default.nix b/pkgs/development/rocm-modules/5/default.nix new file mode 100644 index 000000000000..aaf000b79f13 --- /dev/null +++ b/pkgs/development/rocm-modules/5/default.nix @@ -0,0 +1,529 @@ +{ gcc12Stdenv # FIXME: Try removing this with a new ROCm release https://github.com/NixOS/nixpkgs/issues/271943 +, callPackage +, recurseIntoAttrs +, symlinkJoin +, fetchFromGitHub +, cudaPackages +, python3Packages +, elfutils +, boost179 +, opencv +, ffmpeg_4 +, libjpeg_turbo +, rapidjson-unstable +}: + +let + rocmUpdateScript = callPackage ./update.nix { }; +in rec { + ## ROCm ## + llvm = recurseIntoAttrs (callPackage ./llvm/default.nix { inherit rocmUpdateScript rocm-device-libs rocm-runtime rocm-thunk clr; }); + + rocm-core = callPackage ./rocm-core { + inherit rocmUpdateScript; + stdenv = llvm.rocmClangStdenv; + }; + + rocm-cmake = callPackage ./rocm-cmake { + inherit rocmUpdateScript; + stdenv = llvm.rocmClangStdenv; + }; + + rocm-thunk = callPackage ./rocm-thunk { + inherit rocmUpdateScript; + stdenv = llvm.rocmClangStdenv; + }; + + rocm-smi = python3Packages.callPackage ./rocm-smi { + inherit rocmUpdateScript; + stdenv = llvm.rocmClangStdenv; + }; + + # Eventually will be in the LLVM repo + rocm-device-libs = callPackage ./rocm-device-libs { + inherit rocmUpdateScript rocm-cmake; + stdenv = llvm.rocmClangStdenv; + }; + + rocm-runtime = callPackage ./rocm-runtime { + inherit rocmUpdateScript rocm-device-libs rocm-thunk; + stdenv = llvm.rocmClangStdenv; + }; + + # Eventually will be in the LLVM repo + rocm-comgr = callPackage ./rocm-comgr { + inherit rocmUpdateScript rocm-cmake rocm-device-libs; + stdenv = llvm.rocmClangStdenv; + }; + + rocminfo = callPackage ./rocminfo { + inherit rocmUpdateScript rocm-cmake rocm-runtime; + stdenv = llvm.rocmClangStdenv; + }; + + clang-ocl = callPackage ./clang-ocl { + inherit rocmUpdateScript rocm-cmake rocm-device-libs; + stdenv = llvm.rocmClangStdenv; + }; + + # Unfree + hsa-amd-aqlprofile-bin = callPackage ./hsa-amd-aqlprofile-bin { + stdenv = llvm.rocmClangStdenv; + }; + + # Broken, too many errors + rdc = callPackage ./rdc { + inherit rocmUpdateScript rocm-smi rocm-runtime; + stdenv = gcc12Stdenv; + # stdenv = llvm.rocmClangStdenv; + }; + + rocm-docs-core = python3Packages.callPackage ./rocm-docs-core { stdenv = gcc12Stdenv; }; + + hip-common = callPackage ./hip-common { + inherit rocmUpdateScript; + stdenv = llvm.rocmClangStdenv; + }; + + # Eventually will be in the LLVM repo + hipcc = callPackage ./hipcc { + inherit rocmUpdateScript; + stdenv = llvm.rocmClangStdenv; + }; + + # Replaces hip, opencl-runtime, and rocclr + clr = callPackage ./clr { + inherit rocmUpdateScript hip-common hipcc rocm-device-libs rocm-comgr rocm-runtime roctracer rocminfo rocm-smi; + inherit (llvm) clang; + stdenv = llvm.rocmClangStdenv; + }; + + hipify = callPackage ./hipify { + inherit rocmUpdateScript; + inherit (llvm) clang; + stdenv = llvm.rocmClangStdenv; + }; + + # Needs GCC + rocprofiler = callPackage ./rocprofiler { + inherit rocmUpdateScript clr rocm-core rocm-thunk rocm-device-libs roctracer rocdbgapi rocm-smi hsa-amd-aqlprofile-bin; + inherit (llvm) clang; + stdenv = gcc12Stdenv; + }; + + # Needs GCC + roctracer = callPackage ./roctracer { + inherit rocmUpdateScript rocm-device-libs rocm-runtime clr; + stdenv = gcc12Stdenv; + }; + + # Needs GCC + rocgdb = callPackage ./rocgdb { + inherit rocmUpdateScript; + elfutils = elfutils.override { enableDebuginfod = true; }; + stdenv = gcc12Stdenv; + }; + + rocdbgapi = callPackage ./rocdbgapi { + inherit rocmUpdateScript rocm-cmake rocm-comgr rocm-runtime; + stdenv = llvm.rocmClangStdenv; + }; + + rocr-debug-agent = callPackage ./rocr-debug-agent { + inherit rocmUpdateScript clr rocdbgapi; + stdenv = llvm.rocmClangStdenv; + }; + + rocprim = callPackage ./rocprim { + inherit rocmUpdateScript rocm-cmake clr; + stdenv = llvm.rocmClangStdenv; + }; + + rocsparse = callPackage ./rocsparse { + inherit rocmUpdateScript rocm-cmake rocprim clr; + stdenv = llvm.rocmClangStdenv; + }; + + rocthrust = callPackage ./rocthrust { + inherit rocmUpdateScript rocm-cmake rocprim clr; + stdenv = llvm.rocmClangStdenv; + }; + + rocrand = callPackage ./rocrand { + inherit rocmUpdateScript rocm-cmake clr; + stdenv = llvm.rocmClangStdenv; + }; + + hiprand = rocrand; # rocrand includes hiprand + + rocfft = callPackage ./rocfft { + inherit rocmUpdateScript rocm-cmake rocrand rocfft clr; + inherit (llvm) openmp; + stdenv = llvm.rocmClangStdenv; + }; + + rccl = callPackage ./rccl { + inherit rocmUpdateScript rocm-cmake rocm-smi clr hipify; + stdenv = llvm.rocmClangStdenv; + }; + + hipcub = callPackage ./hipcub { + inherit rocmUpdateScript rocm-cmake rocprim clr; + stdenv = llvm.rocmClangStdenv; + }; + + hipsparse = callPackage ./hipsparse { + inherit rocmUpdateScript rocm-cmake rocsparse clr; + inherit (llvm) openmp; + stdenv = llvm.rocmClangStdenv; + }; + + hipfort = callPackage ./hipfort { + inherit rocmUpdateScript rocm-cmake; + stdenv = llvm.rocmClangStdenv; + }; + + hipfft = callPackage ./hipfft { + inherit rocmUpdateScript rocm-cmake rocfft clr; + inherit (llvm) openmp; + stdenv = llvm.rocmClangStdenv; + }; + + tensile = python3Packages.callPackage ./tensile { + inherit rocmUpdateScript rocminfo; + stdenv = llvm.rocmClangStdenv; + }; + + rocblas = callPackage ./rocblas { + inherit rocblas rocmUpdateScript rocm-cmake clr tensile; + inherit (llvm) openmp; + stdenv = llvm.rocmClangStdenv; + }; + + rocsolver = callPackage ./rocsolver { + inherit rocmUpdateScript rocm-cmake rocblas rocsparse clr; + stdenv = llvm.rocmClangStdenv; + }; + + rocwmma = callPackage ./rocwmma { + inherit rocmUpdateScript rocm-cmake rocm-smi rocblas clr; + inherit (llvm) openmp; + stdenv = llvm.rocmClangStdenv; + }; + + rocalution = callPackage ./rocalution { + inherit rocmUpdateScript rocm-cmake rocprim rocsparse rocrand rocblas clr; + inherit (llvm) openmp; + stdenv = llvm.rocmClangStdenv; + }; + + rocmlir = callPackage ./rocmlir { + inherit rocmUpdateScript rocm-cmake clr; + stdenv = llvm.rocmClangStdenv; + }; + + rocmlir-rock = rocmlir.override { + buildRockCompiler = true; + }; + + hipsolver = callPackage ./hipsolver { + inherit rocmUpdateScript rocm-cmake rocblas rocsolver clr; + stdenv = llvm.rocmClangStdenv; + }; + + hipblas = callPackage ./hipblas { + inherit rocmUpdateScript rocm-cmake rocblas rocsolver clr; + stdenv = llvm.rocmClangStdenv; + }; + + # hipBlasLt - Very broken with Tensile at the moment, only supports GFX9 + # hipTensor - Only supports GFX9 + + miopengemm = callPackage ./miopengemm { + inherit rocmUpdateScript rocm-cmake clr; + stdenv = llvm.rocmClangStdenv; + }; + + composable_kernel = callPackage ./composable_kernel { + inherit rocmUpdateScript rocm-cmake clr; + inherit (llvm) openmp clang-tools-extra; + stdenv = llvm.rocmClangStdenv; + }; + + half = callPackage ./half { + inherit rocmUpdateScript rocm-cmake; + stdenv = llvm.rocmClangStdenv; + }; + + miopen = callPackage ./miopen { + inherit rocmUpdateScript rocm-cmake rocblas clang-ocl miopengemm composable_kernel rocm-comgr clr rocm-docs-core half; + inherit (llvm) clang-tools-extra; + stdenv = llvm.rocmClangStdenv; + rocmlir = rocmlir-rock; + boost = boost179.override { enableStatic = true; }; + }; + + miopen-hip = miopen.override { + useOpenCL = false; + }; + + miopen-opencl = miopen.override { + useOpenCL = true; + }; + + migraphx = callPackage ./migraphx { + inherit rocmUpdateScript rocm-cmake rocblas composable_kernel miopengemm miopen clr half rocm-device-libs; + inherit (llvm) openmp clang-tools-extra; + stdenv = llvm.rocmClangStdenv; + rocmlir = rocmlir-rock; + }; + + rpp = callPackage ./rpp { + inherit rocmUpdateScript rocm-cmake rocm-docs-core clr half; + inherit (llvm) openmp; + stdenv = llvm.rocmClangStdenv; + }; + + rpp-hip = rpp.override { + useOpenCL = false; + useCPU = false; + }; + + rpp-opencl = rpp.override { + useOpenCL = true; + useCPU = false; + }; + + rpp-cpu = rpp.override { + useOpenCL = false; + useCPU = true; + }; + + mivisionx = callPackage ./mivisionx { + inherit rocmUpdateScript rocm-cmake rocm-device-libs clr rpp rocblas miopengemm miopen migraphx half rocm-docs-core; + inherit (llvm) clang openmp; + opencv = opencv.override { enablePython = true; }; + ffmpeg = ffmpeg_4; + rapidjson = rapidjson-unstable; + stdenv = llvm.rocmClangStdenv; + + # Unfortunately, rocAL needs a custom libjpeg-turbo until further notice + # See: https://github.com/ROCm/MIVisionX/issues/1051 + libjpeg_turbo = libjpeg_turbo.overrideAttrs { + version = "2.0.6.1"; + + src = fetchFromGitHub { + owner = "rrawther"; + repo = "libjpeg-turbo"; + rev = "640d7ee1917fcd3b6a5271aa6cf4576bccc7c5fb"; + sha256 = "sha256-T52whJ7nZi8jerJaZtYInC2YDN0QM+9tUDqiNr6IsNY="; + }; + }; + }; + + mivisionx-hip = mivisionx.override { + rpp = rpp-hip; + useOpenCL = false; + useCPU = false; + }; + + mivisionx-opencl = mivisionx.override { + rpp = rpp-opencl; + miopen = miopen-opencl; + useOpenCL = true; + useCPU = false; + }; + + mivisionx-cpu = mivisionx.override { + rpp = rpp-cpu; + useOpenCL = false; + useCPU = true; + }; + + ## Meta ## + # Emulate common ROCm meta layout + # These are mainly for users. I strongly suggest NOT using these in nixpkgs derivations + # Don't put these into `propagatedBuildInputs` unless you want PATH/PYTHONPATH issues! + # See: https://rocm.docs.amd.com/en/docs-5.7.1/_images/image.004.png + # See: https://rocm.docs.amd.com/en/docs-5.7.1/deploy/linux/os-native/package_manager_integration.html + meta = rec { + rocm-developer-tools = symlinkJoin { + name = "rocm-developer-tools-meta"; + + paths = [ + hsa-amd-aqlprofile-bin + rocm-core + rocr-debug-agent + roctracer + rocdbgapi + rocprofiler + rocgdb + rocm-language-runtime + ]; + }; + + rocm-ml-sdk = symlinkJoin { + name = "rocm-ml-sdk-meta"; + + paths = [ + rocm-core + miopen-hip + rocm-hip-sdk + rocm-ml-libraries + ]; + }; + + rocm-ml-libraries = symlinkJoin { + name = "rocm-ml-libraries-meta"; + + paths = [ + llvm.clang + llvm.mlir + llvm.openmp + rocm-core + miopen-hip + rocm-hip-libraries + ]; + }; + + rocm-hip-sdk = symlinkJoin { + name = "rocm-hip-sdk-meta"; + + paths = [ + rocprim + rocalution + hipfft + rocm-core + hipcub + hipblas + rocrand + rocfft + rocsparse + rccl + rocthrust + rocblas + hipsparse + hipfort + rocwmma + hipsolver + rocsolver + rocm-hip-libraries + rocm-hip-runtime-devel + ]; + }; + + rocm-hip-libraries = symlinkJoin { + name = "rocm-hip-libraries-meta"; + + paths = [ + rocblas + hipfort + rocm-core + rocsolver + rocalution + rocrand + hipblas + rocfft + hipfft + rccl + rocsparse + hipsparse + hipsolver + rocm-hip-runtime + ]; + }; + + rocm-openmp-sdk = symlinkJoin { + name = "rocm-openmp-sdk-meta"; + + paths = [ + rocm-core + llvm.clang + llvm.mlir + llvm.openmp # openmp-extras-devel (https://github.com/ROCm/aomp) + rocm-language-runtime + ]; + }; + + rocm-opencl-sdk = symlinkJoin { + name = "rocm-opencl-sdk-meta"; + + paths = [ + rocm-core + rocm-runtime + clr + clr.icd + rocm-thunk + rocm-opencl-runtime + ]; + }; + + rocm-opencl-runtime = symlinkJoin { + name = "rocm-opencl-runtime-meta"; + + paths = [ + rocm-core + clr + clr.icd + rocm-language-runtime + ]; + }; + + rocm-hip-runtime-devel = symlinkJoin { + name = "rocm-hip-runtime-devel-meta"; + + paths = [ + clr + rocm-core + hipify + rocm-cmake + llvm.clang + llvm.mlir + llvm.openmp + rocm-thunk + rocm-runtime + rocm-hip-runtime + ]; + }; + + rocm-hip-runtime = symlinkJoin { + name = "rocm-hip-runtime-meta"; + + paths = [ + rocm-core + rocminfo + clr + rocm-language-runtime + ]; + }; + + rocm-language-runtime = symlinkJoin { + name = "rocm-language-runtime-meta"; + + paths = [ + rocm-runtime + rocm-core + rocm-comgr + llvm.openmp # openmp-extras-runtime (https://github.com/ROCm/aomp) + ]; + }; + + rocm-all = symlinkJoin { + name = "rocm-all-meta"; + + paths = [ + rocm-developer-tools + rocm-ml-sdk + rocm-ml-libraries + rocm-hip-sdk + rocm-hip-libraries + rocm-openmp-sdk + rocm-opencl-sdk + rocm-opencl-runtime + rocm-hip-runtime-devel + rocm-hip-runtime + rocm-language-runtime + ]; + }; + }; +} diff --git a/pkgs/development/rocm-modules/5/half/default.nix b/pkgs/development/rocm-modules/5/half/default.nix new file mode 100644 index 000000000000..400ab5088598 --- /dev/null +++ b/pkgs/development/rocm-modules/5/half/default.nix @@ -0,0 +1,39 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "half"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "half"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-82It+/wm8+umBdQYn7lz/fS69h+f0mzwPdGxoJNYUq0="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + ]; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "C++ library for half precision floating point arithmetics"; + homepage = "https://github.com/ROCm/half"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.unix; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hip-common/default.nix b/pkgs/development/rocm-modules/5/hip-common/default.nix new file mode 100644 index 000000000000..2687b587dbde --- /dev/null +++ b/pkgs/development/rocm-modules/5/hip-common/default.nix @@ -0,0 +1,44 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "hip-common"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "HIP"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-1Abit9qZCwrCVcnaFT4uMygFB9G6ovRasLmTsOsJ/Fw="; + }; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out + mv * $out + + runHook postInstall + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "C++ Heterogeneous-Compute Interface for Portability"; + homepage = "https://github.com/ROCm/HIP"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hipblas/default.nix b/pkgs/development/rocm-modules/5/hipblas/default.nix new file mode 100644 index 000000000000..a59543d653a4 --- /dev/null +++ b/pkgs/development/rocm-modules/5/hipblas/default.nix @@ -0,0 +1,99 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, clr +, gfortran +, rocblas +, rocsolver +, gtest +, lapack-reference +, buildTests ? false +, buildBenchmarks ? false +, buildSamples ? false +}: + +# Can also use cuBLAS +stdenv.mkDerivation (finalAttrs: { + pname = "hipblas"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ] ++ lib.optionals buildSamples [ + "sample" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "hipBLAS"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-abaEZN82dsoEC5gIF3/6epRDVz5ItUo6CkZsybu/G+g="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + gfortran + ]; + + buildInputs = [ + rocblas + rocsolver + ] ++ lib.optionals buildTests [ + gtest + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + lapack-reference + ]; + + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals buildTests [ + "-DBUILD_CLIENTS_TESTS=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_CLIENTS_BENCHMARKS=ON" + ] ++ lib.optionals buildSamples [ + "-DBUILD_CLIENTS_SAMPLES=ON" + ]; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/hipblas-test $test/bin + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + mv $out/bin/hipblas-bench $benchmark/bin + '' + lib.optionalString buildSamples '' + mkdir -p $sample/bin + mv $out/bin/example-* $sample/bin + '' + lib.optionalString (buildTests || buildBenchmarks || buildSamples) '' + rmdir $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "ROCm BLAS marshalling library"; + homepage = "https://github.com/ROCm/hipBLAS"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hipcc/default.nix b/pkgs/development/rocm-modules/5/hipcc/default.nix new file mode 100644 index 000000000000..63e6e4fb577d --- /dev/null +++ b/pkgs/development/rocm-modules/5/hipcc/default.nix @@ -0,0 +1,46 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, lsb-release +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "hipcc"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "HIPCC"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-lJX6nF1V4YmK5ai7jivXlRnG3doIOf6X9CWLHVdRuVg="; + }; + + nativeBuildInputs = [ cmake ]; + + postPatch = '' + substituteInPlace src/hipBin_amd.h \ + --replace "/usr/bin/lsb_release" "${lsb-release}/bin/lsb_release" + ''; + + postInstall = '' + rm -r $out/hip/bin + ln -s $out/bin $out/hip/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Compiler driver utility that calls clang or nvcc"; + homepage = "https://github.com/ROCm/HIPCC"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hipcub/default.nix b/pkgs/development/rocm-modules/5/hipcub/default.nix new file mode 100644 index 000000000000..ede46ccfbd57 --- /dev/null +++ b/pkgs/development/rocm-modules/5/hipcub/default.nix @@ -0,0 +1,90 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocprim +, clr +, gtest +, gbenchmark +, buildTests ? false +, buildBenchmarks ? false +, gpuTargets ? [ ] +}: + +# CUB can also be used as a backend instead of rocPRIM. +stdenv.mkDerivation (finalAttrs: { + pname = "hipcub"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "hipCUB"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-ygBEA3NuCQ13QrSzGqyWXkx8Dy9WhR3u4syzapRTkFU="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + ]; + + buildInputs = [ + rocprim + ] ++ lib.optionals buildTests [ + gtest + ] ++ lib.optionals buildBenchmarks [ + gbenchmark + ]; + + cmakeFlags = [ + "-DCMAKE_CXX_COMPILER=hipcc" + "-DHIP_ROOT_DIR=${clr}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildTests [ + "-DBUILD_TEST=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_BENCHMARK=ON" + ]; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/test_* $test/bin + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + mv $out/bin/benchmark_* $benchmark/bin + '' + lib.optionalString (buildTests || buildBenchmarks) '' + rmdir $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Thin wrapper library on top of rocPRIM or CUB"; + homepage = "https://github.com/ROCm/hipCUB"; + license = with licenses; [ bsd3 ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hipfft/default.nix b/pkgs/development/rocm-modules/5/hipfft/default.nix new file mode 100644 index 000000000000..44d1475f6877 --- /dev/null +++ b/pkgs/development/rocm-modules/5/hipfft/default.nix @@ -0,0 +1,110 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, clr +, git +, rocfft +, gtest +, boost +, fftw +, fftwFloat +, openmp +, buildTests ? false +, buildBenchmarks ? false +, buildSamples ? false +, gpuTargets ? [ ] +}: + +# Can also use cuFFT +stdenv.mkDerivation (finalAttrs: { + pname = "hipfft"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ] ++ lib.optionals buildSamples [ + "sample" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "hipFFT"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-fuYRKdlTrRMwxr3cgMeT3YniPzs4nuvF8YCzr3LLPFM="; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ + clr + git + cmake + rocm-cmake + ]; + + buildInputs = [ + rocfft + ] ++ lib.optionals (buildTests || buildBenchmarks || buildSamples) [ + gtest + boost + fftw + fftwFloat + openmp + ]; + + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + "-DCMAKE_MODULE_PATH=${clr}/lib/cmake/hip" + "-DHIP_ROOT_DIR=${clr}" + "-DHIP_PATH=${clr}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildTests [ + "-DBUILD_CLIENTS_TESTS=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_CLIENTS_RIDER=ON" + ] ++ lib.optionals buildSamples [ + "-DBUILD_CLIENTS_SAMPLES=ON" + ]; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/hipfft-test $test/bin + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + mv $out/bin/hipfft-rider $benchmark/bin + '' + lib.optionalString buildSamples '' + mkdir -p $sample/bin + mv clients/staging/hipfft_* $sample/bin + patchelf $sample/bin/hipfft_* --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" + '' + lib.optionalString (buildTests || buildBenchmarks) '' + rmdir $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "FFT marshalling library"; + homepage = "https://github.com/ROCm/hipFFT"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hipfort/default.nix b/pkgs/development/rocm-modules/5/hipfort/default.nix new file mode 100644 index 000000000000..092c6e758195 --- /dev/null +++ b/pkgs/development/rocm-modules/5/hipfort/default.nix @@ -0,0 +1,66 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, gfortran +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "hipfort"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "hipfort"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-DRjUWhdinDKP7CZgq2SmU3lGmmodCuXvco9aEeMLSZ4="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + gfortran + ]; + + cmakeFlags = [ + "-DHIPFORT_COMPILER=${gfortran}/bin/gfortran" + "-DHIPFORT_AR=${gfortran.cc}/bin/gcc-ar" + "-DHIPFORT_RANLIB=${gfortran.cc}/bin/gcc-ranlib" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ]; + + postPatch = '' + patchShebangs bin + + substituteInPlace bin/hipfc bin/mymcpu \ + --replace "/bin/cat" "cat" + + substituteInPlace bin/CMakeLists.txt \ + --replace "/bin/mkdir" "mkdir" \ + --replace "/bin/cp" "cp" \ + --replace "/bin/sed" "sed" \ + --replace "/bin/chmod" "chmod" \ + --replace "/bin/ln" "ln" + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Fortran interfaces for ROCm libraries"; + homepage = "https://github.com/ROCm/hipfort"; + license = with licenses; [ mit ]; # mitx11 + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hipify/default.nix b/pkgs/development/rocm-modules/5/hipify/default.nix new file mode 100644 index 000000000000..281ad02d5dfc --- /dev/null +++ b/pkgs/development/rocm-modules/5/hipify/default.nix @@ -0,0 +1,50 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, clang +, libxml2 +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "hipify"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "HIPIFY"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-lCQ2VTUGmFC90Xu70/tvoeDhFaInGqLT3vC2A1UojNI="; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ libxml2 ]; + + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace "\''${LLVM_TOOLS_BINARY_DIR}/clang" "${clang}/bin/clang" + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + # Fixup bad symlinks + postInstall = '' + rm -r $out/hip/bin + ln -s $out/bin $out/hip/bin + patchShebangs $out/bin + ''; + + meta = with lib; { + description = "Convert CUDA to Portable C++ Code"; + homepage = "https://github.com/ROCm/HIPIFY"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hipsolver/default.nix b/pkgs/development/rocm-modules/5/hipsolver/default.nix new file mode 100644 index 000000000000..ab4b60ef2c35 --- /dev/null +++ b/pkgs/development/rocm-modules/5/hipsolver/default.nix @@ -0,0 +1,100 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, clr +, gfortran +, rocblas +, rocsolver +, gtest +, lapack-reference +, buildTests ? false +, buildBenchmarks ? false +, buildSamples ? false +}: + +# Can also use cuSOLVER +stdenv.mkDerivation (finalAttrs: { + pname = "hipsolver"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ] ++ lib.optionals buildSamples [ + "sample" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "hipSOLVER"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-5b6kPj9yvXvP7f7AyHDTYRoM/EhQZvwkVCfDflFJugc="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + gfortran + ]; + + buildInputs = [ + rocblas + rocsolver + ] ++ lib.optionals buildTests [ + gtest + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + lapack-reference + ]; + + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals buildTests [ + "-DBUILD_CLIENTS_TESTS=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_CLIENTS_BENCHMARKS=ON" + ] ++ lib.optionals buildSamples [ + "-DBUILD_CLIENTS_SAMPLES=ON" + ]; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/hipsolver-test $test/bin + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + mv $out/bin/hipsolver-bench $benchmark/bin + '' + lib.optionalString buildSamples '' + mkdir -p $sample/bin + mv clients/staging/example-* $sample/bin + patchelf $sample/bin/example-* --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" + '' + lib.optionalString (buildTests || buildBenchmarks) '' + rmdir $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "ROCm SOLVER marshalling library"; + homepage = "https://github.com/ROCm/hipSOLVER"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hipsparse/default.nix b/pkgs/development/rocm-modules/5/hipsparse/default.nix new file mode 100644 index 000000000000..9e3046223173 --- /dev/null +++ b/pkgs/development/rocm-modules/5/hipsparse/default.nix @@ -0,0 +1,136 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocsparse +, clr +, gfortran +, git +, gtest +, openmp +, buildTests ? false +, buildSamples ? false +, gpuTargets ? [ ] +}: + +# This can also use cuSPARSE as a backend instead of rocSPARSE +stdenv.mkDerivation (finalAttrs: { + pname = "hipsparse"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildSamples [ + "sample" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "hipSPARSE"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-txigaOoZMI/v+EQLgGlj2O0IHfE7EpgjL0cyv49nKzo="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + gfortran + ]; + + buildInputs = [ + rocsparse + git + ] ++ lib.optionals buildTests [ + gtest + ] ++ lib.optionals (buildTests || buildSamples) [ + openmp + ]; + + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + "-DBUILD_CLIENTS_SAMPLES=${if buildSamples then "ON" else "OFF"}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildTests [ + "-DBUILD_CLIENTS_TESTS=ON" + ]; + + # We have to manually generate the matrices + # CMAKE_MATRICES_DIR seems to be reset in clients/tests/CMakeLists.txt + postPatch = lib.optionalString buildTests '' + mkdir -p matrices + + ln -s ${rocsparse.passthru.matrices.matrix-01}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-02}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-03}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-04}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-05}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-06}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-07}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-08}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-09}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-10}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-11}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-12}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-13}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-14}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-15}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-16}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-17}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-18}/*.mtx matrices + ln -s ${rocsparse.passthru.matrices.matrix-19}/*.mtx matrices + + # Not used by the original cmake, causes an error + rm matrices/*_b.mtx + + echo "deps/convert.cpp -> deps/mtx2csr" + hipcc deps/convert.cpp -O3 -o deps/mtx2csr + + for mat in $(ls -1 matrices | cut -d "." -f 1); do + echo "mtx2csr: $mat.mtx -> $mat.bin" + deps/mtx2csr matrices/$mat.mtx matrices/$mat.bin + unlink matrices/$mat.mtx + done + + substituteInPlace clients/tests/CMakeLists.txt \ + --replace "\''${PROJECT_BINARY_DIR}/matrices" "/build/source/matrices" + ''; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/hipsparse-test $test/bin + mv /build/source/matrices $test + rmdir $out/bin + '' + lib.optionalString buildSamples '' + mkdir -p $sample/bin + mv clients/staging/example_* $sample/bin + patchelf --set-rpath $out/lib:${lib.makeLibraryPath ( + finalAttrs.buildInputs ++ [ clr gfortran.cc ])} $sample/bin/example_* + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "ROCm SPARSE marshalling library"; + homepage = "https://github.com/ROCm/hipSPARSE"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/default.nix b/pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/default.nix new file mode 100644 index 000000000000..c007f2c62260 --- /dev/null +++ b/pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/default.nix @@ -0,0 +1,43 @@ +{ lib +, stdenv +, fetchurl +, callPackage +, dpkg +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "hsa-amd-aqlprofile-bin"; + version = "5.7.1"; + + src = fetchurl { + url = "https://repo.radeon.com/rocm/apt/5.7.1/pool/main/h/hsa-amd-aqlprofile/hsa-amd-aqlprofile_1.0.0.50701.50701-98~22.04_amd64.deb"; + hash = "sha256-LWAtZ0paJW8lhE+QAMwq2l8wM+96bxk5rNWyQXTc9Vo="; + }; + + nativeBuildInputs = [ dpkg ]; + dontPatch = true; + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out + cp -a opt/rocm-${finalAttrs.version}/* $out + chmod +x $out/lib/libhsa-amd-aqlprofile64.so.1.* + chmod +x $out/lib/hsa-amd-aqlprofile/librocprofv2_att.so + + runHook postInstall + ''; + + passthru.updateScript = (callPackage ./update.nix { }) { inherit (finalAttrs) version; }; + + meta = with lib; { + description = "AQLPROFILE library for AMD HSA runtime API extension support"; + homepage = "https://rocm.docs.amd.com/en/latest/"; + license = with licenses; [ unfree ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/update.nix b/pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/update.nix new file mode 100644 index 000000000000..bbde07ae9a98 --- /dev/null +++ b/pkgs/development/rocm-modules/5/hsa-amd-aqlprofile-bin/update.nix @@ -0,0 +1,57 @@ +{ lib +, writeScript +}: + +{ version }: + +let + prefix = "hsa-amd-aqlprofile"; + extVersion = lib.strings.concatStrings (lib.strings.intersperse "0" (lib.versions.splitVersion version)); + major = lib.versions.major version; + minor = lib.versions.minor version; + patch = lib.versions.patch version; + + updateScript = writeScript "update.sh" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p curl common-updater-scripts + apt="https://repo.radeon.com/rocm/apt" + pool="pool/main/h/${prefix}/" + url="$apt/latest/$pool" + res="$(curl -sL "$url")" + deb="${prefix}$(echo "$res" | grep -o -P "(?<=href=\"${prefix}).*(?=\">)" | tail -1)" + patch="${patch}" + + # Try up to 10 patch versions + for i in {1..10}; do + ((patch++)) + extVersion="$(echo "$deb" | grep -o -P "(?<=\.....).*(?=\..*-)")" + + if (( ''${#extVersion} == 5 )) && (( $extVersion <= ${extVersion} )); then + url="https://repo.radeon.com/rocm/apt/${major}.${minor}.$patch/pool/main/h/${prefix}/" + res="$(curl -sL "$url")" + deb="${prefix}$(echo "$res" | grep -o -P "(?<=href=\"${prefix}).*(?=\">)" | tail -1)" + else + break + fi + done + + extVersion="$(echo $deb | grep -o -P "(?<=\.....).*(?=\..*-)")" + version="$(echo $extVersion | sed "s/0/./1" | sed "s/0/./1")" + IFS='.' read -a version_arr <<< "$version" + + if (( ''${version_arr[0]} > 5 )); then + echo "'rocmPackages_5.${prefix}-bin' is already at it's maximum allowed version.''\nAny further upgrades should go into 'rocmPackages_X.${prefix}-bin'." 1>&2 + exit 1 + fi + + if (( ''${#extVersion} == 5 )); then + repoVersion="$version" + + if (( ''${version:4:1} == 0 )); then + repoVersion=''${version:0:3} + fi + + update-source-version rocmPackages_5.${prefix}-bin "$version" "" "$apt/$repoVersion/$pool$deb" --ignore-same-hash + fi + ''; +in [ updateScript ] diff --git a/pkgs/development/rocm-modules/5/llvm/base.nix b/pkgs/development/rocm-modules/5/llvm/base.nix new file mode 100644 index 000000000000..796a73e1d2c3 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/base.nix @@ -0,0 +1,175 @@ +{ lib +, stdenv +, gcc12Stdenv +, fetchFromGitHub +, rocmUpdateScript +, pkg-config +, cmake +, ninja +, git +, doxygen +, sphinx +, lit +, libxml2 +, libxcrypt +, libedit +, libffi +, mpfr +, zlib +, ncurses +, python3Packages +, buildDocs ? true +, buildMan ? true +, buildTests ? true +, targetName ? "llvm" +, targetDir ? "llvm" +, targetProjects ? [ ] +, targetRuntimes ? [ ] +, llvmTargetsToBuild ? [ "NATIVE" ] # "NATIVE" resolves into x86 or aarch64 depending on stdenv +, extraPatches ? [ ] +, extraNativeBuildInputs ? [ ] +, extraBuildInputs ? [ ] +, extraCMakeFlags ? [ ] +, extraPostPatch ? "" +, checkTargets ? [( + lib.optionalString buildTests ( + if targetDir == "runtimes" + then "check-runtimes" + else "check-all" + ) +)] +, extraPostInstall ? "" +, hardeningDisable ? [ ] +, requiredSystemFeatures ? [ ] +, extraLicenses ? [ ] +, isBroken ? false +}: + +let stdenv' = stdenv; in +let stdenv = + if stdenv'.cc.cc.isGNU or false && lib.versionAtLeast stdenv'.cc.cc.version "13.0" + then gcc12Stdenv + else stdenv'; +in + +let + llvmNativeTarget = + if stdenv.isx86_64 then "X86" + else if stdenv.isAarch64 then "AArch64" + else throw "Unsupported ROCm LLVM platform"; + inferNativeTarget = t: if t == "NATIVE" then llvmNativeTarget else t; + llvmTargetsToBuild' = [ "AMDGPU" ] ++ builtins.map inferNativeTarget llvmTargetsToBuild; +in stdenv.mkDerivation (finalAttrs: { + pname = "rocm-llvm-${targetName}"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildDocs [ + "doc" + ] ++ lib.optionals buildMan [ + "man" + "info" # Avoid `attribute 'info' missing` when using with wrapCC + ]; + + patches = extraPatches; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "llvm-project"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-0+lJnDiMntxCYbZBCSWvHOcKXexFfEzRfb49QbfOmK8="; + }; + + nativeBuildInputs = [ + pkg-config + cmake + ninja + git + python3Packages.python + ] ++ lib.optionals (buildDocs || buildMan) [ + doxygen + sphinx + python3Packages.recommonmark + ] ++ lib.optionals (buildTests && !finalAttrs.passthru.isLLVM) [ + lit + ] ++ extraNativeBuildInputs; + + buildInputs = [ + libxml2 + libxcrypt + libedit + libffi + mpfr + ] ++ extraBuildInputs; + + propagatedBuildInputs = lib.optionals finalAttrs.passthru.isLLVM [ + zlib + ncurses + ]; + + sourceRoot = "${finalAttrs.src.name}/${targetDir}"; + + cmakeFlags = [ + "-DLLVM_TARGETS_TO_BUILD=${builtins.concatStringsSep ";" llvmTargetsToBuild'}" + ] ++ lib.optionals (finalAttrs.passthru.isLLVM && targetProjects != [ ]) [ + "-DLLVM_ENABLE_PROJECTS=${lib.concatStringsSep ";" targetProjects}" + ] ++ lib.optionals ((finalAttrs.passthru.isLLVM || targetDir == "runtimes") && targetRuntimes != [ ]) [ + "-DLLVM_ENABLE_RUNTIMES=${lib.concatStringsSep ";" targetRuntimes}" + ] ++ lib.optionals finalAttrs.passthru.isLLVM [ + "-DLLVM_INSTALL_UTILS=ON" + "-DLLVM_INSTALL_GTEST=ON" + ] ++ lib.optionals (buildDocs || buildMan) [ + "-DLLVM_INCLUDE_DOCS=ON" + "-DLLVM_BUILD_DOCS=ON" + # "-DLLVM_ENABLE_DOXYGEN=ON" Way too slow, only uses one core + "-DLLVM_ENABLE_SPHINX=ON" + "-DSPHINX_OUTPUT_HTML=ON" + "-DSPHINX_OUTPUT_MAN=ON" + "-DSPHINX_WARNINGS_AS_ERRORS=OFF" + ] ++ lib.optionals buildTests [ + "-DLLVM_INCLUDE_TESTS=ON" + "-DLLVM_BUILD_TESTS=ON" + "-DLLVM_EXTERNAL_LIT=${lit}/bin/.lit-wrapped" + ] ++ extraCMakeFlags; + + postPatch = lib.optionalString finalAttrs.passthru.isLLVM '' + patchShebangs lib/OffloadArch/make_generated_offload_arch_h.sh + '' + lib.optionalString (buildTests && finalAttrs.passthru.isLLVM) '' + # FileSystem permissions tests fail with various special bits + rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test + rm unittests/Support/Path.cpp + + substituteInPlace unittests/Support/CMakeLists.txt \ + --replace "Path.cpp" "" + '' + extraPostPatch; + + doCheck = buildTests; + checkTarget = lib.concatStringsSep " " checkTargets; + + postInstall = lib.optionalString buildMan '' + mkdir -p $info + '' + extraPostInstall; + + passthru = { + isLLVM = targetDir == "llvm"; + isClang = targetDir == "clang" || builtins.elem "clang" targetProjects; + + updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + }; + + inherit hardeningDisable requiredSystemFeatures; + + meta = with lib; { + description = "ROCm fork of the LLVM compiler infrastructure"; + homepage = "https://github.com/ROCm/llvm-project"; + license = with licenses; [ ncsa ] ++ extraLicenses; + maintainers = with maintainers; [ acowley lovesegfault ] ++ teams.rocm.members; + platforms = platforms.linux; + broken = isBroken || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/llvm/default.nix b/pkgs/development/rocm-modules/5/llvm/default.nix new file mode 100644 index 000000000000..9c8919165a51 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/default.nix @@ -0,0 +1,58 @@ +{ # stdenv FIXME: Try changing back to this with a new ROCm release https://github.com/NixOS/nixpkgs/issues/271943 + gcc12Stdenv +, callPackage +, rocmUpdateScript +, wrapBintoolsWith +, overrideCC +, rocm-device-libs +, rocm-runtime +, rocm-thunk +, clr +}: + +let + ## Stage 1 ## + # Projects + llvm = callPackage ./stage-1/llvm.nix { inherit rocmUpdateScript; stdenv = gcc12Stdenv; }; + clang-unwrapped = callPackage ./stage-1/clang-unwrapped.nix { inherit rocmUpdateScript llvm; stdenv = gcc12Stdenv; }; + lld = callPackage ./stage-1/lld.nix { inherit rocmUpdateScript llvm; stdenv = gcc12Stdenv; }; + + # Runtimes + runtimes = callPackage ./stage-1/runtimes.nix { inherit rocmUpdateScript llvm; stdenv = gcc12Stdenv; }; + + ## Stage 2 ## + # Helpers + bintools-unwrapped = callPackage ./stage-2/bintools-unwrapped.nix { inherit llvm lld; }; + bintools = wrapBintoolsWith { bintools = bintools-unwrapped; }; + rStdenv = callPackage ./stage-2/rstdenv.nix { inherit llvm clang-unwrapped lld runtimes bintools; stdenv = gcc12Stdenv; }; +in rec { + inherit + llvm + clang-unwrapped + lld + bintools; + + # Runtimes + libc = callPackage ./stage-2/libc.nix { inherit rocmUpdateScript; stdenv = rStdenv; }; + libunwind = callPackage ./stage-2/libunwind.nix { inherit rocmUpdateScript; stdenv = rStdenv; }; + libcxxabi = callPackage ./stage-2/libcxxabi.nix { inherit rocmUpdateScript; stdenv = rStdenv; }; + libcxx = callPackage ./stage-2/libcxx.nix { inherit rocmUpdateScript; stdenv = rStdenv; }; + compiler-rt = callPackage ./stage-2/compiler-rt.nix { inherit rocmUpdateScript llvm; stdenv = rStdenv; }; + + ## Stage 3 ## + # Helpers + clang = callPackage ./stage-3/clang.nix { inherit llvm lld clang-unwrapped bintools libc libunwind libcxxabi libcxx compiler-rt; stdenv = gcc12Stdenv; }; + rocmClangStdenv = overrideCC gcc12Stdenv clang; + + # Projects + clang-tools-extra = callPackage ./stage-3/clang-tools-extra.nix { inherit rocmUpdateScript llvm clang-unwrapped; stdenv = rocmClangStdenv; }; + libclc = callPackage ./stage-3/libclc.nix { inherit rocmUpdateScript llvm clang; stdenv = rocmClangStdenv; }; + lldb = callPackage ./stage-3/lldb.nix { inherit rocmUpdateScript clang; stdenv = rocmClangStdenv; }; + mlir = callPackage ./stage-3/mlir.nix { inherit rocmUpdateScript clr; stdenv = rocmClangStdenv; }; + polly = callPackage ./stage-3/polly.nix { inherit rocmUpdateScript; stdenv = rocmClangStdenv; }; + flang = callPackage ./stage-3/flang.nix { inherit rocmUpdateScript clang-unwrapped mlir; stdenv = rocmClangStdenv; }; + openmp = callPackage ./stage-3/openmp.nix { inherit rocmUpdateScript llvm clang-unwrapped clang rocm-device-libs rocm-runtime rocm-thunk; stdenv = rocmClangStdenv; }; + + # Runtimes + pstl = callPackage ./stage-3/pstl.nix { inherit rocmUpdateScript; stdenv = rocmClangStdenv; }; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-1/clang-unwrapped.nix b/pkgs/development/rocm-modules/5/llvm/stage-1/clang-unwrapped.nix new file mode 100644 index 000000000000..5a61732ffd2d --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-1/clang-unwrapped.nix @@ -0,0 +1,47 @@ +{ stdenv +, callPackage +, rocmUpdateScript +, llvm +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + targetName = "clang-unwrapped"; + targetDir = "clang"; + extraBuildInputs = [ llvm ]; + + extraCMakeFlags = [ + "-DCLANG_INCLUDE_DOCS=ON" + "-DCLANG_INCLUDE_TESTS=ON" + ]; + + extraPostPatch = '' + # Looks like they forgot to add finding libedit to the standalone build + ln -s ../cmake/Modules/FindLibEdit.cmake cmake/modules + + substituteInPlace CMakeLists.txt \ + --replace "include(CheckIncludeFile)" "include(CheckIncludeFile)''\nfind_package(LibEdit)" + + # `No such file or directory: '/build/source/clang/tools/scan-build/bin/scan-build'` + rm test/Analysis/scan-build/*.test + rm test/Analysis/scan-build/rebuild_index/rebuild_index.test + + # `does not depend on a module exporting 'baz.h'` + rm test/Modules/header-attribs.cpp + + # We do not have HIP or the ROCm stack available yet + rm test/Driver/hip-options.hip + + # ???? `ld: cannot find crti.o: No such file or directory` linker issue? + rm test/Interpreter/dynamic-library.cpp + + # `fatal error: 'stdio.h' file not found` + rm test/OpenMP/amdgcn_emit_llvm.c + ''; + + extraPostInstall = '' + mv bin/clang-tblgen $out/bin + ''; + + requiredSystemFeatures = [ "big-parallel" ]; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-1/lld.nix b/pkgs/development/rocm-modules/5/llvm/stage-1/lld.nix new file mode 100644 index 000000000000..5ca8bca25a33 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-1/lld.nix @@ -0,0 +1,14 @@ +{ stdenv +, callPackage +, rocmUpdateScript +, llvm +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildMan = false; # No man pages to build + targetName = "lld"; + targetDir = targetName; + extraBuildInputs = [ llvm ]; + checkTargets = [ "check-${targetName}" ]; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-1/llvm.nix b/pkgs/development/rocm-modules/5/llvm/stage-1/llvm.nix new file mode 100644 index 000000000000..f601e96f0a35 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-1/llvm.nix @@ -0,0 +1,10 @@ +{ stdenv +, callPackage +, rocmUpdateScript +}: + +callPackage ../base.nix { + inherit stdenv rocmUpdateScript; + requiredSystemFeatures = [ "big-parallel" ]; + isBroken = stdenv.isAarch64; # https://github.com/ROCm/ROCm/issues/1831#issuecomment-1278205344 +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-1/runtimes.nix b/pkgs/development/rocm-modules/5/llvm/stage-1/runtimes.nix new file mode 100644 index 000000000000..0364a02e6e59 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-1/runtimes.nix @@ -0,0 +1,31 @@ +{ lib +, stdenv +, callPackage +, rocmUpdateScript +, llvm +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildDocs = false; + buildMan = false; + buildTests = false; + targetName = "runtimes"; + targetDir = targetName; + + targetRuntimes = [ + "libunwind" + "libcxxabi" + "libcxx" + "compiler-rt" + ]; + + extraBuildInputs = [ llvm ]; + + extraCMakeFlags = [ + "-DLIBCXX_INCLUDE_BENCHMARKS=OFF" + "-DLIBCXX_CXX_ABI=libcxxabi" + ]; + + extraLicenses = [ lib.licenses.mit ]; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/1000-libcxx-failing-tests.list b/pkgs/development/rocm-modules/5/llvm/stage-2/1000-libcxx-failing-tests.list new file mode 100644 index 000000000000..e005d6c928c2 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-2/1000-libcxx-failing-tests.list @@ -0,0 +1,171 @@ +../libcxx/test/libcxx/containers/gnu_cxx/hash_map.pass.cpp +../libcxx/test/libcxx/containers/gnu_cxx/hash_set.pass.cpp +../libcxx/test/libcxx/depr/depr.default.allocator/allocator.members/allocate.cxx2a.pass.cpp +../libcxx/test/libcxx/depr/depr.default.allocator/allocator.members/construct.cxx2a.pass.cpp +../libcxx/test/libcxx/input.output/filesystems/class.directory_entry/directory_entry.mods/last_write_time.pass.cpp +../libcxx/test/libcxx/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp +../libcxx/test/libcxx/language.support/support.dynamic/libcpp_deallocate.sh.cpp +../libcxx/test/libcxx/localization/locales/locale/locale.types/locale.facet/no_allocation.pass.cpp +../libcxx/test/libcxx/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_from_underaligned_buffer.pass.cpp +../libcxx/test/libcxx/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_in_geometric_progression.pass.cpp +../libcxx/test/std/containers/associative/map/map.access/index_key.pass.cpp +../libcxx/test/std/containers/associative/map/map.access/index_rv_key.pass.cpp +../libcxx/test/std/containers/associative/map/map.modifiers/insert_and_emplace_allocator_requirements.pass.cpp +../libcxx/test/std/containers/associative/multimap/multimap.modifiers/insert_allocator_requirements.pass.cpp +../libcxx/test/std/containers/associative/multiset/insert_emplace_allocator_requirements.pass.cpp +../libcxx/test/std/containers/associative/set/insert_and_emplace_allocator_requirements.pass.cpp +../libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_iter_iter.pass.cpp +../libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_size_value.pass.cpp +../libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_value.pass.cpp +../libcxx/test/std/containers/sequences/vector.bool/ctor_exceptions.pass.cpp +../libcxx/test/std/containers/sequences/vector/vector.cons/exceptions.pass.cpp +../libcxx/test/std/containers/unord/unord.map/unord.map.elem/index.pass.cpp +../libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_and_emplace_allocator_requirements.pass.cpp +../libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_allocator_requirements.pass.cpp +../libcxx/test/std/containers/unord/unord.multiset/insert_emplace_allocator_requirements.pass.cpp +../libcxx/test/std/containers/unord/unord.set/insert_and_emplace_allocator_requirements.pass.cpp +../libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp +../libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp +../libcxx/test/std/input.output/file.streams/fstreams/filebuf.virtuals/pbackfail.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy_assign.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/move_assign.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/move.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/assign.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/refresh.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/replace_filename.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/status.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/symlink_status.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy_assign.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/increment.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move_assign.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move.pass.cpp +../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.nonmembers/begin_end.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/move.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.compare.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/move.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.decompose/path.decompose.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_normal.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_relative_and_proximate.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/clear.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/make_preferred.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/remove_filename.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/replace_extension.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/replace_filename.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/swap.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.nonmember/path.factory.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp +../libcxx/test/std/input.output/filesystems/class.path/path.nonmember/swap.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy_assign.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/depth.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/disable_recursion_pending.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move_assign.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/pop.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/recursion_pending.pass.cpp +../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.nonmembers/begin_end.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.canonical/canonical.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file_large.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_symlink/copy_symlink.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy/copy.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directories/create_directories.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory_symlink/create_directory_symlink.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory_with_attributes.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_hard_link/create_hard_link.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_symlink/create_symlink.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.current_path/current_path.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.equivalent/equivalent.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.file_size/file_size.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.hard_lk_ct/hard_link_count.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.permissions/permissions.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.proximate/proximate.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.read_symlink/read_symlink.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.relative/relative.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/toctou.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.rename/rename.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.resize_file/resize_file.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.space/space.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp +../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.weakly_canonical/weakly_canonical.pass.cpp +../libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.dtor/dtor.pass.cpp +../libcxx/test/std/localization/locale.stdcvt/codecvt_utf16.pass.cpp +../libcxx/test/std/localization/locale.stdcvt/codecvt_utf8.pass.cpp +../libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/ctor.pass.cpp +../libcxx/test/std/localization/locales/locale/locale.members/combine.pass.cpp +../libcxx/test/std/strings/basic.string/string.cons/substr_rvalue.pass.cpp +../libcxx/test/std/utilities/any/any.class/any.assign/copy.pass.cpp +../libcxx/test/std/utilities/any/any.class/any.assign/value.pass.cpp +../libcxx/test/std/utilities/any/any.class/any.cons/copy.pass.cpp +../libcxx/test/std/utilities/any/any.class/any.cons/default.pass.cpp +../libcxx/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp +../libcxx/test/std/utilities/any/any.class/any.cons/move.pass.cpp +../libcxx/test/std/utilities/any/any.class/any.cons/value.pass.cpp +../libcxx/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp +../libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp +../libcxx/test/std/utilities/any/any.nonmembers/make_any.pass.cpp +../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp +../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp +../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp +../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp +../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp +../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp +../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp +../libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate_at_least.pass.cpp +../libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.pass.cpp +../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp +../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_throw.pass.cpp +../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_throw.pass.cpp +../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_throw.pass.cpp +../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp +../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.global/new_delete_resource.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.global/null_memory_resource.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.ctor/without_buffer.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_deallocate.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_exception_safety.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_from_initial_buffer.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_from_zero_sized_buffer.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_in_geometric_progression.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_overaligned_request.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_with_initial_size.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.ctor/ctor_does_not_allocate.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/equality.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate_overaligned_request.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate_reuse_blocks.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate_overaligned_request.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate_reuse_blocks.pass.cpp +../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate.pass.cpp diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/bintools-unwrapped.nix b/pkgs/development/rocm-modules/5/llvm/stage-2/bintools-unwrapped.nix new file mode 100644 index 000000000000..ef40dd4d3824 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-2/bintools-unwrapped.nix @@ -0,0 +1,28 @@ +{ runCommand +, llvm +, lld +}: + +runCommand "rocm-llvm-binutils-${llvm.version}" { preferLocalBuild = true; } '' + mkdir -p $out/bin + + for prog in ${lld}/bin/*; do + ln -s $prog $out/bin/$(basename $prog) + done + + for prog in ${llvm}/bin/*; do + ln -sf $prog $out/bin/$(basename $prog) + done + + ln -s ${llvm}/bin/llvm-ar $out/bin/ar + ln -s ${llvm}/bin/llvm-as $out/bin/as + ln -s ${llvm}/bin/llvm-dwp $out/bin/dwp + ln -s ${llvm}/bin/llvm-nm $out/bin/nm + ln -s ${llvm}/bin/llvm-objcopy $out/bin/objcopy + ln -s ${llvm}/bin/llvm-objdump $out/bin/objdump + ln -s ${llvm}/bin/llvm-ranlib $out/bin/ranlib + ln -s ${llvm}/bin/llvm-readelf $out/bin/readelf + ln -s ${llvm}/bin/llvm-size $out/bin/size + ln -s ${llvm}/bin/llvm-strip $out/bin/strip + ln -s ${lld}/bin/lld $out/bin/ld +'' diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/compiler-rt.nix b/pkgs/development/rocm-modules/5/llvm/stage-2/compiler-rt.nix new file mode 100644 index 000000000000..3b8e41705e1a --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-2/compiler-rt.nix @@ -0,0 +1,63 @@ +{ lib +, stdenv +, callPackage +, rocmUpdateScript +, llvm +, glibc +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildDocs = false; # No documentation to build + buildMan = false; # No man pages to build + targetName = "compiler-rt"; + targetDir = "runtimes"; + + targetRuntimes = [ + "libunwind" + "libcxxabi" + "libcxx" + targetName + ]; + + extraCMakeFlags = [ + "-DCOMPILER_RT_INCLUDE_TESTS=ON" + "-DCOMPILER_RT_USE_LLVM_UNWINDER=ON" + "-DCOMPILER_RT_CXX_LIBRARY=libcxx" + "-DCOMPILER_RT_CAN_EXECUTE_TESTS=OFF" # We can't run most of these + + # Workaround having to build combined + "-DLIBUNWIND_INCLUDE_DOCS=OFF" + "-DLIBUNWIND_INCLUDE_TESTS=OFF" + "-DLIBUNWIND_USE_COMPILER_RT=ON" + "-DLIBUNWIND_INSTALL_LIBRARY=OFF" + "-DLIBUNWIND_INSTALL_HEADERS=OFF" + "-DLIBCXXABI_INCLUDE_TESTS=OFF" + "-DLIBCXXABI_USE_LLVM_UNWINDER=ON" + "-DLIBCXXABI_USE_COMPILER_RT=ON" + "-DLIBCXXABI_INSTALL_LIBRARY=OFF" + "-DLIBCXXABI_INSTALL_HEADERS=OFF" + "-DLIBCXX_INCLUDE_DOCS=OFF" + "-DLIBCXX_INCLUDE_TESTS=OFF" + "-DLIBCXX_USE_COMPILER_RT=ON" + "-DLIBCXX_CXX_ABI=libcxxabi" + "-DLIBCXX_INSTALL_LIBRARY=OFF" + "-DLIBCXX_INSTALL_HEADERS=OFF" + ]; + + extraPostPatch = '' + # `No such file or directory: 'ldd'` + substituteInPlace ../compiler-rt/test/lit.common.cfg.py \ + --replace "'ldd'," "'${glibc.bin}/bin/ldd'," + + # We can run these + substituteInPlace ../compiler-rt/test/CMakeLists.txt \ + --replace "endfunction()" "endfunction()''\nadd_subdirectory(builtins)''\nadd_subdirectory(shadowcallstack)" + + # Could not launch llvm-config in /build/source/runtimes/build/bin + mkdir -p build/bin + ln -s ${llvm}/bin/llvm-config build/bin + ''; + + extraLicenses = [ lib.licenses.mit ]; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/libc.nix b/pkgs/development/rocm-modules/5/llvm/stage-2/libc.nix new file mode 100644 index 000000000000..7e7cf9c2a608 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-2/libc.nix @@ -0,0 +1,26 @@ +{ stdenv +, callPackage +, rocmUpdateScript +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildMan = false; # No man pages to build + targetName = "libc"; + targetDir = "runtimes"; + targetRuntimes = [ targetName ]; + + extraPostPatch = '' + # `Failed to match ... against ...` `Match value not within tolerance value of MPFR result:` + # We need a better way, but I don't know enough sed magic and patching `CMakeLists.txt` isn't working... + substituteInPlace ../libc/test/src/math/log10_test.cpp \ + --replace "i < N" "i < 0" \ + --replace "test(mpfr::RoundingMode::Nearest);" "" \ + --replace "test(mpfr::RoundingMode::Downward);" "" \ + --replace "test(mpfr::RoundingMode::Upward);" "" \ + --replace "test(mpfr::RoundingMode::TowardZero);" "" + ''; + + checkTargets = [ "check-${targetName}" ]; + hardeningDisable = [ "fortify" ]; # Prevent `error: "Assumed value of MB_LEN_MAX wrong"` +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/libcxx.nix b/pkgs/development/rocm-modules/5/llvm/stage-2/libcxx.nix new file mode 100644 index 000000000000..473227242765 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-2/libcxx.nix @@ -0,0 +1,42 @@ +{ stdenv +, callPackage +, rocmUpdateScript +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildMan = false; # No man pages to build + targetName = "libcxx"; + targetDir = "runtimes"; + + targetRuntimes = [ + "libunwind" + "libcxxabi" + targetName + ]; + + extraCMakeFlags = [ + "-DLIBCXX_INCLUDE_DOCS=ON" + "-DLIBCXX_INCLUDE_TESTS=ON" + "-DLIBCXX_USE_COMPILER_RT=ON" + "-DLIBCXX_CXX_ABI=libcxxabi" + + # Workaround having to build combined + "-DLIBUNWIND_INCLUDE_DOCS=OFF" + "-DLIBUNWIND_INCLUDE_TESTS=OFF" + "-DLIBUNWIND_USE_COMPILER_RT=ON" + "-DLIBUNWIND_INSTALL_LIBRARY=OFF" + "-DLIBUNWIND_INSTALL_HEADERS=OFF" + "-DLIBCXXABI_INCLUDE_TESTS=OFF" + "-DLIBCXXABI_USE_LLVM_UNWINDER=ON" + "-DLIBCXXABI_USE_COMPILER_RT=ON" + "-DLIBCXXABI_INSTALL_LIBRARY=OFF" + "-DLIBCXXABI_INSTALL_HEADERS=OFF" + ]; + + # Most of these can't find `bash` or `mkdir`, might just be hard-coded paths, or PATH is altered + extraPostPatch = '' + chmod +w -R ../libcxx/test/{libcxx,std} + cat ${./1000-libcxx-failing-tests.list} | xargs -d \\n rm + ''; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/libcxxabi.nix b/pkgs/development/rocm-modules/5/llvm/stage-2/libcxxabi.nix new file mode 100644 index 000000000000..e15ec777ff61 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-2/libcxxabi.nix @@ -0,0 +1,37 @@ +{ stdenv +, callPackage +, rocmUpdateScript +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildDocs = false; # No documentation to build + buildMan = false; # No man pages to build + targetName = "libcxxabi"; + targetDir = "runtimes"; + + targetRuntimes = [ + "libunwind" + targetName + "libcxx" + ]; + + extraCMakeFlags = [ + "-DLIBCXXABI_INCLUDE_TESTS=ON" + "-DLIBCXXABI_USE_LLVM_UNWINDER=ON" + "-DLIBCXXABI_USE_COMPILER_RT=ON" + + # Workaround having to build combined + "-DLIBUNWIND_INCLUDE_DOCS=OFF" + "-DLIBUNWIND_INCLUDE_TESTS=OFF" + "-DLIBUNWIND_USE_COMPILER_RT=ON" + "-DLIBUNWIND_INSTALL_LIBRARY=OFF" + "-DLIBUNWIND_INSTALL_HEADERS=OFF" + "-DLIBCXX_INCLUDE_DOCS=OFF" + "-DLIBCXX_INCLUDE_TESTS=OFF" + "-DLIBCXX_USE_COMPILER_RT=ON" + "-DLIBCXX_CXX_ABI=libcxxabi" + "-DLIBCXX_INSTALL_LIBRARY=OFF" + "-DLIBCXX_INSTALL_HEADERS=OFF" + ]; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/libunwind.nix b/pkgs/development/rocm-modules/5/llvm/stage-2/libunwind.nix new file mode 100644 index 000000000000..3d599e0d4b32 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-2/libunwind.nix @@ -0,0 +1,26 @@ +{ stdenv +, callPackage +, rocmUpdateScript +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildMan = false; # No man pages to build + targetName = "libunwind"; + targetDir = "runtimes"; + targetRuntimes = [ targetName ]; + + extraCMakeFlags = [ + "-DLIBUNWIND_INCLUDE_DOCS=ON" + "-DLIBUNWIND_INCLUDE_TESTS=ON" + "-DLIBUNWIND_USE_COMPILER_RT=ON" + ]; + + extraPostPatch = '' + # `command had no output on stdout or stderr` (Says these unsupported tests) + chmod +w -R ../libunwind/test + rm ../libunwind/test/floatregister.pass.cpp + rm ../libunwind/test/unwind_leaffunction.pass.cpp + rm ../libunwind/test/libunwind_02.pass.cpp + ''; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-2/rstdenv.nix b/pkgs/development/rocm-modules/5/llvm/stage-2/rstdenv.nix new file mode 100644 index 000000000000..3820d45a2b81 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-2/rstdenv.nix @@ -0,0 +1,36 @@ +{ stdenv +, overrideCC +, wrapCCWith +, llvm +, clang-unwrapped +, lld +, runtimes +, bintools +}: + +overrideCC stdenv (wrapCCWith rec { + inherit bintools; + libcxx = runtimes; + cc = clang-unwrapped; + gccForLibs = stdenv.cc.cc; + + extraPackages = [ + llvm + lld + ]; + + nixSupport.cc-cflags = [ + "-resource-dir=$out/resource-root" + "-fuse-ld=lld" + "-rtlib=compiler-rt" + "-unwindlib=libunwind" + "-Wno-unused-command-line-argument" + ]; + + extraBuildCommands = '' + clang_version=`${cc}/bin/clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"` + mkdir -p $out/resource-root + ln -s ${cc}/lib/clang/$clang_version/include $out/resource-root + ln -s ${runtimes}/lib $out/resource-root + ''; +}) diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/0000-mlir-fix-debugtranslation.patch b/pkgs/development/rocm-modules/5/llvm/stage-3/0000-mlir-fix-debugtranslation.patch new file mode 100644 index 000000000000..f4221a088136 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/0000-mlir-fix-debugtranslation.patch @@ -0,0 +1,36 @@ +From f1d1e10ec7e1061bf0b90abbc1e298d9438a5e74 Mon Sep 17 00:00:00 2001 +From: Scott Linder +Date: Mon, 11 Sep 2023 18:37:37 +0000 +Subject: [PATCH] [HeterogeneousDWARF] Update MLIR DI Metadata handling + +Pass a default DW_MSPACE_LLVM_none to satisfy new API + +Change-Id: I50df461f00b5510a715f55f61107122318102d22 +--- + lib/Target/LLVMIR/DebugTranslation.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/lib/Target/LLVMIR/DebugTranslation.cpp b/lib/Target/LLVMIR/DebugTranslation.cpp +index 2053f5bcef06aa6..635ee5d7e5fefdc 100644 +--- a/lib/Target/LLVMIR/DebugTranslation.cpp ++++ b/lib/Target/LLVMIR/DebugTranslation.cpp +@@ -148,7 +148,8 @@ llvm::DIDerivedType *DebugTranslation::translateImpl(DIDerivedTypeAttr attr) { + /*File=*/nullptr, /*Line=*/0, + /*Scope=*/nullptr, translate(attr.getBaseType()), attr.getSizeInBits(), + attr.getAlignInBits(), attr.getOffsetInBits(), +- /*DWARFAddressSpace=*/std::nullopt, /*Flags=*/llvm::DINode::FlagZero); ++ /*DWARFAddressSpace=*/std::nullopt, llvm::dwarf::DW_MSPACE_LLVM_none, ++ /*Flags=*/llvm::DINode::FlagZero); + } + + llvm::DIFile *DebugTranslation::translateImpl(DIFileAttr attr) { +@@ -185,7 +186,8 @@ DebugTranslation::translateImpl(DILocalVariableAttr attr) { + llvmCtx, translate(attr.getScope()), getMDStringOrNull(attr.getName()), + translate(attr.getFile()), attr.getLine(), translate(attr.getType()), + attr.getArg(), +- /*Flags=*/llvm::DINode::FlagZero, attr.getAlignInBits(), ++ /*Flags=*/llvm::DINode::FlagZero, llvm::dwarf::DW_MSPACE_LLVM_none, ++ attr.getAlignInBits(), + /*Annotations=*/nullptr); + } + diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/1000-openmp-failing-tests.list b/pkgs/development/rocm-modules/5/llvm/stage-3/1000-openmp-failing-tests.list new file mode 100644 index 000000000000..e53b21b3c535 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/1000-openmp-failing-tests.list @@ -0,0 +1,122 @@ +runtime/test/tasking/hidden_helper_task/gtid.cpp +runtime/test/ompt/parallel/parallel_if0.c +runtime/test/ompt/parallel/serialized.c +runtime/test/ompt/teams/parallel_team.c +runtime/test/ompt/teams/serial_teams.c +runtime/test/ompt/teams/serialized.c +runtime/test/ompt/teams/team.c +libomptarget/test/api/assert.c +libomptarget/test/api/omp_device_managed_memory.c +libomptarget/test/api/omp_device_memory.c +libomptarget/test/api/omp_get_device_num.c +libomptarget/test/api/omp_host_pinned_memory.c +libomptarget/test/api/omp_host_pinned_memory_alloc.c +libomptarget/test/api/omp_target_memcpy_async1.c +libomptarget/test/api/omp_target_memcpy_async2.c +libomptarget/test/api/omp_target_memcpy_rect_async1.c +libomptarget/test/api/omp_target_memcpy_rect_async2.c +libomptarget/test/mapping/array_section_implicit_capture.c +libomptarget/test/mapping/data_absent_at_exit.c +libomptarget/test/mapping/data_member_ref.cpp +libomptarget/test/mapping/declare_mapper_api.cpp +libomptarget/test/mapping/declare_mapper_target.cpp +libomptarget/test/mapping/declare_mapper_target_data.cpp +libomptarget/test/mapping/declare_mapper_target_data_enter_exit.cpp +libomptarget/test/mapping/firstprivate_aligned.cpp +libomptarget/test/mapping/has_device_addr.cpp +libomptarget/test/mapping/implicit_device_ptr.c +libomptarget/test/mapping/is_device_ptr.cpp +libomptarget/test/mapping/lambda_mapping.cpp +libomptarget/test/mapping/low_alignment.c +libomptarget/test/mapping/map_back_race.cpp +libomptarget/test/mapping/power_of_two_alignment.c +libomptarget/test/mapping/pr38704.c +libomptarget/test/mapping/prelock.cpp +libomptarget/test/mapping/present/target_data_at_exit.c +libomptarget/test/mapping/private_mapping.c +libomptarget/test/mapping/ptr_and_obj_motion.c +libomptarget/test/mapping/reduction_implicit_map.cpp +libomptarget/test/mapping/target_derefence_array_pointrs.cpp +libomptarget/test/mapping/target_map_for_member_data.cpp +libomptarget/test/mapping/target_update_array_extension.c +libomptarget/test/mapping/target_use_device_addr.c +libomptarget/test/offloading/atomic-compare-signedness.c +libomptarget/test/offloading/bug47654.cpp +libomptarget/test/offloading/bug49021.cpp +libomptarget/test/offloading/bug49779.cpp +libomptarget/test/offloading/bug50022.cpp +libomptarget/test/offloading/bug51781.c +libomptarget/test/offloading/bug51982.c +libomptarget/test/offloading/bug53727.cpp +libomptarget/test/offloading/complex_reduction.cpp +libomptarget/test/offloading/cuda_no_devices.c +libomptarget/test/offloading/d2d_memcpy.c +libomptarget/test/offloading/dynamic_module.c +libomptarget/test/offloading/dynamic_module_load.c +libomptarget/test/offloading/global_constructor.cpp +libomptarget/test/offloading/lone_target_exit_data.c +libomptarget/test/offloading/memory_manager.cpp +libomptarget/test/offloading/parallel_offloading_map.cpp +libomptarget/test/offloading/static_linking.c +libomptarget/test/offloading/std_complex_arithmetic.cpp +libomptarget/test/offloading/target-teams-atomic.c +libomptarget/test/offloading/target_constexpr_mapping.cpp +libomptarget/test/offloading/target_critical_region.cpp +libomptarget/test/offloading/target_depend_nowait.cpp +libomptarget/test/offloading/target_nowait_target.cpp +libomptarget/test/offloading/taskloop_offload_nowait.cpp +libomptarget/test/offloading/test_libc.cpp +libomptarget/test/ompt/veccopy.c +libomptarget/test/ompt/veccopy_disallow_both.c +libomptarget/test/ompt/veccopy_emi.c +libomptarget/test/ompt/veccopy_emi_map.c +libomptarget/test/ompt/veccopy_map.c +libomptarget/test/ompt/veccopy_no_device_init.c +libomptarget/test/ompt/veccopy_wrong_return.c +libomptarget/test/api/is_initial_device.c +libomptarget/test/mapping/declare_mapper_nested_default_mappers_array_subscript.cpp +libomptarget/test/mapping/declare_mapper_nested_default_mappers_ptr_subscript.cpp +libomptarget/test/mapping/declare_mapper_nested_default_mappers_var.cpp +libomptarget/test/mapping/target_pointers_members_map.cpp +libomptarget/test/api/omp_dynamic_shared_memory_mixed.c +libomptarget/test/api/omp_env_vars.c +libomptarget/test/api/omp_get_mapped_ptr.c +libomptarget/test/api/omp_get_num_devices.c +libomptarget/test/api/omp_get_num_devices_with_empty_target.c +libomptarget/test/mapping/alloc_fail.c +libomptarget/test/mapping/array_section_use_device_ptr.c +libomptarget/test/mapping/declare_mapper_nested_default_mappers.cpp +libomptarget/test/mapping/declare_mapper_nested_mappers.cpp +libomptarget/test/mapping/declare_mapper_target_update.cpp +libomptarget/test/mapping/delete_inf_refcount.c +libomptarget/test/mapping/lambda_by_value.cpp +libomptarget/test/mapping/ompx_hold/omp_target_disassociate_ptr.c +libomptarget/test/mapping/ompx_hold/struct.c +libomptarget/test/mapping/ompx_hold/target-data.c +libomptarget/test/mapping/ompx_hold/target.c +libomptarget/test/mapping/present/target.c +libomptarget/test/mapping/present/target_array_extension.c +libomptarget/test/mapping/present/target_data.c +libomptarget/test/mapping/present/target_data_array_extension.c +libomptarget/test/mapping/present/target_enter_data.c +libomptarget/test/mapping/present/target_exit_data_delete.c +libomptarget/test/mapping/present/target_exit_data_release.c +libomptarget/test/mapping/present/target_update.c +libomptarget/test/mapping/present/target_update_array_extension.c +libomptarget/test/mapping/present/zero_length_array_section.c +libomptarget/test/mapping/present/zero_length_array_section_exit.c +libomptarget/test/mapping/target_data_array_extension_at_exit.c +libomptarget/test/mapping/target_has_device_addr.c +libomptarget/test/mapping/target_implicit_partial_map.c +libomptarget/test/mapping/target_wrong_use_device_addr.c +libomptarget/test/offloading/host_as_target.c +libomptarget/test/offloading/info.c +libomptarget/test/offloading/offloading_success.c +libomptarget/test/offloading/offloading_success.cpp +libomptarget/test/offloading/wtime.c +libomptarget/test/unified_shared_memory/api.c +libomptarget/test/unified_shared_memory/associate_ptr.c +libomptarget/test/unified_shared_memory/close_enter_exit.c +libomptarget/test/unified_shared_memory/close_manual.c +libomptarget/test/unified_shared_memory/close_member.c +libomptarget/test/unified_shared_memory/close_modifier.c diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/1001-mlir-failing-tests.list b/pkgs/development/rocm-modules/5/llvm/stage-3/1001-mlir-failing-tests.list new file mode 100644 index 000000000000..0b3d2d22592d --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/1001-mlir-failing-tests.list @@ -0,0 +1,11 @@ +./test/Target/LLVMIR/openmp-llvm.mlir +./test/mlir-spirv-cpu-runner/double.mlir +./test/mlir-spirv-cpu-runner/simple_add.mlir +./test/mlir-vulkan-runner/addf.mlir +./test/mlir-vulkan-runner/addi.mlir +./test/mlir-vulkan-runner/addi8.mlir +./test/mlir-vulkan-runner/mulf.mlir +./test/mlir-vulkan-runner/smul_extended.mlir +./test/mlir-vulkan-runner/subf.mlir +./test/mlir-vulkan-runner/time.mlir +./test/mlir-vulkan-runner/umul_extended.mlir diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/clang-tools-extra.nix b/pkgs/development/rocm-modules/5/llvm/stage-3/clang-tools-extra.nix new file mode 100644 index 000000000000..d18673ecb3db --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/clang-tools-extra.nix @@ -0,0 +1,42 @@ +{ stdenv +, callPackage +, rocmUpdateScript +, llvm +, clang-unwrapped +, gtest +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildTests = false; # `invalid operands to binary expression ('std::basic_stringstream' and 'const llvm::StringRef')` + targetName = "clang-tools-extra"; + + targetProjects = [ + "clang" + "clang-tools-extra" + ]; + + extraBuildInputs = [ gtest ]; + + extraCMakeFlags = [ + "-DLLVM_INCLUDE_DOCS=OFF" + "-DLLVM_INCLUDE_TESTS=OFF" + "-DCLANG_INCLUDE_DOCS=OFF" + "-DCLANG_INCLUDE_TESTS=ON" + "-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=ON" + ]; + + extraPostInstall = '' + # Remove LLVM and Clang + for path in `find ${llvm} ${clang-unwrapped}`; do + if [ $path != ${llvm} ] && [ $path != ${clang-unwrapped} ]; then + rm -f $out''${path#${llvm}} $out''${path#${clang-unwrapped}} || true + fi + done + + # Cleanup empty directories + find $out -type d -empty -delete + ''; + + requiredSystemFeatures = [ "big-parallel" ]; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/clang.nix b/pkgs/development/rocm-modules/5/llvm/stage-3/clang.nix new file mode 100644 index 000000000000..91f34265f85f --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/clang.nix @@ -0,0 +1,73 @@ +{ stdenv +, wrapCCWith +, llvm +, lld +, clang-unwrapped +, bintools +, libc +, libunwind +, libcxxabi +, libcxx +, compiler-rt +}: + +wrapCCWith rec { + inherit libcxx bintools; + + # We do this to avoid HIP pathing problems, and mimic a monolithic install + cc = stdenv.mkDerivation (finalAttrs: { + inherit (clang-unwrapped) version; + pname = "rocm-llvm-clang"; + dontUnpack = true; + + installPhase = '' + runHook preInstall + + clang_version=`${clang-unwrapped}/bin/clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"` + mkdir -p $out/{bin,include/c++/v1,lib/{cmake,clang/$clang_version/{include,lib}},libexec,share} + + for path in ${llvm} ${clang-unwrapped} ${lld} ${libc} ${libunwind} ${libcxxabi} ${libcxx} ${compiler-rt}; do + cp -as $path/* $out + chmod +w $out/{*,include/c++/v1,lib/{clang/$clang_version/include,cmake}} + rm -f $out/lib/libc++.so + done + + ln -s $out/lib/* $out/lib/clang/$clang_version/lib + ln -sf $out/include/* $out/lib/clang/$clang_version/include + + runHook postInstall + ''; + + passthru.isClang = true; + }); + + extraPackages = [ + llvm + lld + libc + libunwind + libcxxabi + compiler-rt + ]; + + nixSupport.cc-cflags = [ + "-resource-dir=$out/resource-root" + "-fuse-ld=lld" + "-rtlib=compiler-rt" + "-unwindlib=libunwind" + "-Wno-unused-command-line-argument" + ]; + + extraBuildCommands = '' + clang_version=`${cc}/bin/clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"` + mkdir -p $out/resource-root + ln -s ${cc}/lib/clang/$clang_version/{include,lib} $out/resource-root + + # Not sure why, but hardening seems to make things break + echo "" > $out/nix-support/add-hardening.sh + + # GPU compilation uses builtin `lld` + substituteInPlace $out/bin/{clang,clang++} \ + --replace "-MM) dontLink=1 ;;" "-MM | --cuda-device-only) dontLink=1 ;;''\n--cuda-host-only | --cuda-compile-host-device) dontLink=0 ;;" + ''; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/flang.nix b/pkgs/development/rocm-modules/5/llvm/stage-3/flang.nix new file mode 100644 index 000000000000..421663dcb1b7 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/flang.nix @@ -0,0 +1,31 @@ +{ stdenv +, callPackage +, rocmUpdateScript +, clang-unwrapped +, mlir +, graphviz +, python3Packages +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + targetName = "flang"; + targetDir = targetName; + + extraNativeBuildInputs = [ + graphviz + python3Packages.sphinx-markdown-tables + ]; + + extraBuildInputs = [ mlir ]; + + extraCMakeFlags = [ + "-DCLANG_DIR=${clang-unwrapped}/lib/cmake/clang" + "-DMLIR_TABLEGEN_EXE=${mlir}/bin/mlir-tblgen" + "-DCLANG_TABLEGEN_EXE=${clang-unwrapped}/bin/clang-tblgen" + "-DFLANG_INCLUDE_TESTS=OFF" # `The dependency target "Bye" of target ...` + ]; + + # `flang/lib/Semantics/check-omp-structure.cpp:1905:1: error: no member named 'v' in 'Fortran::parser::OmpClause::OmpxDynCgroupMem'` + isBroken = true; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/libclc.nix b/pkgs/development/rocm-modules/5/llvm/stage-3/libclc.nix new file mode 100644 index 000000000000..1fd72ee67188 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/libclc.nix @@ -0,0 +1,36 @@ +{ stdenv +, callPackage +, rocmUpdateScript +, llvm +, clang +, spirv-llvm-translator +}: + +let + spirv = (spirv-llvm-translator.override { inherit llvm; }); +in callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildDocs = false; # No documentation to build + buildMan = false; # No man pages to build + targetName = "libclc"; + targetDir = targetName; + extraBuildInputs = [ spirv ]; + + # `spirv-mesa3d` isn't compiling with LLVM 15.0.0, it does with LLVM 14.0.0 + # Try removing the `spirv-mesa3d` and `clspv` patches next update + # `clspv` tests fail, unresolved calls + extraPostPatch = '' + substituteInPlace CMakeLists.txt \ + --replace "find_program( LLVM_CLANG clang PATHS \''${LLVM_BINDIR} NO_DEFAULT_PATH )" \ + "find_program( LLVM_CLANG clang PATHS \"${clang}/bin\" NO_DEFAULT_PATH )" \ + --replace "find_program( LLVM_SPIRV llvm-spirv PATHS \''${LLVM_BINDIR} NO_DEFAULT_PATH )" \ + "find_program( LLVM_SPIRV llvm-spirv PATHS \"${spirv}/bin\" NO_DEFAULT_PATH )" \ + --replace " spirv-mesa3d-" "" \ + --replace " spirv64-mesa3d-" "" \ + --replace "NOT \''${t} MATCHES" \ + "NOT \''${ARCH} STREQUAL \"clspv\" AND NOT \''${ARCH} STREQUAL \"clspv64\" AND NOT \''${t} MATCHES" + ''; + + checkTargets = [ ]; + isBroken = true; # ROCm 5.7.0 doesn't have IR/AttributeMask.h yet...? +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/lldb.nix b/pkgs/development/rocm-modules/5/llvm/stage-3/lldb.nix new file mode 100644 index 000000000000..9b7d25e06d9d --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/lldb.nix @@ -0,0 +1,39 @@ +{ stdenv +, callPackage +, rocmUpdateScript +, clang +, xz +, swig +, lua5_3 +, graphviz +, gtest +, python3Packages +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildTests = false; # FIXME: Bad pathing for clang executable in tests, using relative path most likely + targetName = "lldb"; + targetDir = targetName; + extraNativeBuildInputs = [ python3Packages.sphinx-automodapi ]; + + extraBuildInputs = [ + xz + swig + lua5_3 + graphviz + gtest + ]; + + extraCMakeFlags = [ + "-DLLDB_EXTERNAL_CLANG_RESOURCE_DIR=${clang}/resource-root/lib/clang/$clang_version" + "-DLLDB_INCLUDE_TESTS=ON" + "-DLLDB_INCLUDE_UNITTESTS=ON" + ]; + + extraPostPatch = '' + export clang_version=`clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"` + ''; + + checkTargets = [ "check-${targetName}" ]; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/mlir.nix b/pkgs/development/rocm-modules/5/llvm/stage-3/mlir.nix new file mode 100644 index 000000000000..6de685ea2771 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/mlir.nix @@ -0,0 +1,57 @@ +{ stdenv +, callPackage +, rocmUpdateScript +, clr +, vulkan-headers +, vulkan-loader +, glslang +, shaderc +, lit +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildDocs = false; # No decent way to hack this to work + buildMan = false; # No man pages to build + targetName = "mlir"; + targetDir = targetName; + + # Fix `DebugTranslation.cpp:139:10: error: no matching function for call to 'get'` + # We patch at a different source root, so we modify the patch and include it locally + # https://github.com/ROCm/llvm-project/commit/f1d1e10ec7e1061bf0b90abbc1e298d9438a5e74.patch + extraPatches = [ ./0000-mlir-fix-debugtranslation.patch ]; + extraNativeBuildInputs = [ clr ]; + + extraBuildInputs = [ + vulkan-headers + vulkan-loader + glslang + shaderc + ]; + + extraCMakeFlags = [ + "-DMLIR_INCLUDE_DOCS=ON" + "-DMLIR_INCLUDE_TESTS=ON" + "-DMLIR_ENABLE_ROCM_RUNNER=ON" + "-DMLIR_ENABLE_SPIRV_CPU_RUNNER=ON" + "-DMLIR_ENABLE_VULKAN_RUNNER=ON" + "-DROCM_TEST_CHIPSET=gfx000" # CPU runner + ]; + + extraPostPatch = '' + # `add_library cannot create target "llvm_gtest" because an imported target with the same name already exists` + substituteInPlace CMakeLists.txt \ + --replace "EXISTS \''${UNITTEST_DIR}/googletest/include/gtest/gtest.h" "FALSE" + + # Mainly `No such file or directory` + cat ${./1001-mlir-failing-tests.list} | xargs -d \\n rm + ''; + + extraPostInstall = '' + mkdir -p $out/bin + mv bin/mlir-tblgen $out/bin + ''; + + checkTargets = [ "check-${targetName}" ]; + requiredSystemFeatures = [ "big-parallel" ]; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/openmp.nix b/pkgs/development/rocm-modules/5/llvm/stage-3/openmp.nix new file mode 100644 index 000000000000..5fd7b6fd9aa3 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/openmp.nix @@ -0,0 +1,54 @@ +{ lib +, stdenv +, callPackage +, rocmUpdateScript +, llvm +, clang +, clang-unwrapped +, rocm-device-libs +, rocm-runtime +, rocm-thunk +, perl +, elfutils +, libdrm +, numactl +, lit +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + targetName = "openmp"; + targetDir = targetName; + extraNativeBuildInputs = [ perl ]; + + extraBuildInputs = [ + rocm-device-libs + rocm-runtime + rocm-thunk + elfutils + libdrm + numactl + ]; + + extraCMakeFlags = [ + "-DCMAKE_MODULE_PATH=/build/source/llvm/cmake/modules" # For docs + "-DCLANG_TOOL=${clang}/bin/clang" + "-DCLANG_OFFLOAD_BUNDLER_TOOL=${clang-unwrapped}/bin/clang-offload-bundler" + "-DPACKAGER_TOOL=${clang-unwrapped}/bin/clang-offload-packager" + "-DOPENMP_LLVM_TOOLS_DIR=${llvm}/bin" + "-DOPENMP_LLVM_LIT_EXECUTABLE=${lit}/bin/.lit-wrapped" + "-DDEVICELIBS_ROOT=${rocm-device-libs.src}" + ]; + + extraPostPatch = '' + # We can't build this target at the moment + substituteInPlace libomptarget/DeviceRTL/CMakeLists.txt \ + --replace "gfx1010" "" + + # No idea what's going on here... + cat ${./1000-openmp-failing-tests.list} | xargs -d \\n rm + ''; + + checkTargets = [ "check-${targetName}" ]; + extraLicenses = [ lib.licenses.mit ]; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/polly.nix b/pkgs/development/rocm-modules/5/llvm/stage-3/polly.nix new file mode 100644 index 000000000000..e001f33dfd43 --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/polly.nix @@ -0,0 +1,18 @@ +{ stdenv +, callPackage +, rocmUpdateScript +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + targetName = "polly"; + targetDir = targetName; + + extraPostPatch = '' + # `add_library cannot create target "llvm_gtest" because an imported target with the same name already exists` + substituteInPlace CMakeLists.txt \ + --replace "NOT TARGET gtest" "FALSE" + ''; + + checkTargets = [ "check-${targetName}" ]; +} diff --git a/pkgs/development/rocm-modules/5/llvm/stage-3/pstl.nix b/pkgs/development/rocm-modules/5/llvm/stage-3/pstl.nix new file mode 100644 index 000000000000..dc7d7cd6ccbf --- /dev/null +++ b/pkgs/development/rocm-modules/5/llvm/stage-3/pstl.nix @@ -0,0 +1,15 @@ +{ stdenv +, callPackage +, rocmUpdateScript +}: + +callPackage ../base.nix rec { + inherit stdenv rocmUpdateScript; + buildDocs = false; # No documentation to build + buildMan = false; # No man pages to build + buildTests = false; # Too many errors + targetName = "pstl"; + targetDir = "runtimes"; + targetRuntimes = [ targetName ]; + checkTargets = [ "check-${targetName}" ]; +} diff --git a/pkgs/development/rocm-modules/5/migraphx/default.nix b/pkgs/development/rocm-modules/5/migraphx/default.nix new file mode 100644 index 000000000000..006a5ca9990b --- /dev/null +++ b/pkgs/development/rocm-modules/5/migraphx/default.nix @@ -0,0 +1,171 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, pkg-config +, cmake +, rocm-cmake +, clr +, clang-tools-extra +, openmp +, rocblas +, rocmlir +, composable_kernel +, miopengemm +, miopen +, protobuf +, half +, nlohmann_json +, msgpack +, sqlite +, oneDNN_2 +, blaze +, cppcheck +, rocm-device-libs +, texliveSmall +, doxygen +, sphinx +, docutils +, ghostscript +, python3Packages +, buildDocs ? false +, buildTests ? false +}: + +let + latex = lib.optionalAttrs buildDocs (texliveSmall.withPackages (ps: with ps; [ + latexmk + tex-gyre + fncychap + wrapfig + capt-of + framed + needspace + tabulary + varwidth + titlesec + epstopdf + ])); +in stdenv.mkDerivation (finalAttrs: { + pname = "migraphx"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildDocs [ + "doc" + ] ++ lib.optionals buildTests [ + "test" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "AMDMIGraphX"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-lg3pxHBpwqxBvdOQgE44YKLuumhkVF6b3Xx4+cw7jNQ="; + }; + + nativeBuildInputs = [ + pkg-config + cmake + rocm-cmake + clr + clang-tools-extra + python3Packages.python + ] ++ lib.optionals buildDocs [ + latex + doxygen + sphinx + docutils + ghostscript + python3Packages.sphinx-rtd-theme + python3Packages.breathe + ]; + + buildInputs = [ + openmp + rocblas + rocmlir + composable_kernel + miopengemm + miopen + protobuf + half + nlohmann_json + msgpack + sqlite + oneDNN_2 + blaze + cppcheck + python3Packages.pybind11 + python3Packages.onnx + ]; + + cmakeFlags = [ + "-DMIGRAPHX_ENABLE_GPU=ON" + "-DMIGRAPHX_ENABLE_CPU=ON" + "-DMIGRAPHX_ENABLE_FPGA=ON" + "-DMIGRAPHX_ENABLE_MLIR=OFF" # LLVM or rocMLIR mismatch? + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ]; + + postPatch = '' + # We need to not use hipcc and define the CXXFLAGS manually due to `undefined hidden symbol: tensorflow:: ...` + export CXXFLAGS+="--rocm-path=${clr} --rocm-device-lib-path=${rocm-device-libs}/amdgcn/bitcode" + patchShebangs tools + + # `error: '__clang_hip_runtime_wrapper.h' file not found [clang-diagnostic-error]` + substituteInPlace CMakeLists.txt \ + --replace "set(MIGRAPHX_TIDY_ERRORS ALL)" "" + + # JIT library was removed from composable_kernel... + # https://github.com/ROCm/composable_kernel/issues/782 + substituteInPlace src/targets/gpu/CMakeLists.txt \ + --replace " COMPONENTS jit_library" "" \ + --replace " composable_kernel::jit_library" "" \ + --replace "if(WIN32)" "if(TRUE)" + '' + lib.optionalString (!buildDocs) '' + substituteInPlace CMakeLists.txt \ + --replace "add_subdirectory(doc)" "" + '' + lib.optionalString (!buildTests) '' + substituteInPlace CMakeLists.txt \ + --replace "add_subdirectory(test)" "" + ''; + + # Unfortunately, it seems like we have to call make on this manually + preInstall = lib.optionalString buildDocs '' + export HOME=$(mktemp -d) + make -j$NIX_BUILD_CORES doc + cd ../doc/pdf + make -j$NIX_BUILD_CORES + cd - + ''; + + postInstall = lib.optionalString buildDocs '' + mv ../doc/html $out/share/doc/migraphx + mv ../doc/pdf/MIGraphX.pdf $out/share/doc/migraphx + '' + lib.optionalString buildTests '' + mkdir -p $test/bin + mv bin/test_* $test/bin + patchelf $test/bin/test_* --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "AMD's graph optimization engine"; + homepage = "https://github.com/ROCm/AMDMIGraphX"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/miopen/default.nix b/pkgs/development/rocm-modules/5/miopen/default.nix new file mode 100644 index 000000000000..33959efa00eb --- /dev/null +++ b/pkgs/development/rocm-modules/5/miopen/default.nix @@ -0,0 +1,239 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, rocmUpdateScript +, runCommand +, pkg-config +, cmake +, rocm-cmake +, rocblas +, rocmlir +, clr +, clang-tools-extra +, clang-ocl +, miopengemm +, composable_kernel +, frugally-deep +, rocm-docs-core +, half +, boost +, sqlite +, bzip2 +, lbzip2 +, nlohmann_json +, texliveSmall +, doxygen +, sphinx +, zlib +, gtest +, rocm-comgr +, python3Packages +, buildDocs ? false # Needs internet because of rocm-docs-core +, buildTests ? false +, useOpenCL ? false +}: + +let + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "MIOpen"; + rev = "rocm-${version}"; + hash = "sha256-xcKmFI8HcRA9bbh6EQGElKykIQ3RJX/q5f4IxXvM1Is="; + fetchLFS = true; + leaveDotGit = true; + + # If you're reading this, it's gonna take a bit of time. + # fetchSubModules doesn't work with postFetch??? + # fetchLFS isn't actually fetching the LFS files... + postFetch = '' + export HOME=$(mktemp -d) + cd $out + + # We need more history to fetch LFS files + git remote add origin $url + git fetch origin + git clean -fdx + git checkout rocm-${version} + + # We need to do this manually since using leaveDotGit and fetchSubmodules errors + git submodule update --init + + # Fetch the LFS files + git lfs install + git lfs fetch --all + git lfs checkout + + # Remove the defunct .git folder + rm -rf .git + ''; + }; + + latex = lib.optionalAttrs buildDocs (texliveSmall.withPackages (ps: with ps; [ + latexmk + tex-gyre + fncychap + wrapfig + capt-of + framed + needspace + tabulary + varwidth + titlesec + ])); + + gfx900 = runCommand "miopen-gfx900.kdb" { preferLocalBuild = true; } '' + ${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx900.kdb.bz2 > $out + ''; + + gfx906 = runCommand "miopen-gfx906.kdb" { preferLocalBuild = true; } '' + ${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx906.kdb.bz2 > $out + ''; + + gfx908 = runCommand "miopen-gfx908.kdb" { preferLocalBuild = true; } '' + ${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx908.kdb.bz2 > $out + ''; + + gfx90a = runCommand "miopen-gfx90a.kdb" { preferLocalBuild = true; } '' + ${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx90a.kdb.bz2 > $out + ''; + + gfx1030 = runCommand "miopen-gfx1030.kdb" { preferLocalBuild = true; } '' + ${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx1030.kdb.bz2 > $out + ''; +in stdenv.mkDerivation (finalAttrs: { + inherit version src; + pname = "miopen"; + + # Find zstd and add to target. Mainly for torch. + patches = [ + (fetchpatch { + url = "https://github.com/ROCm/MIOpen/commit/e608b4325646afeabb5e52846997b926d2019d19.patch"; + hash = "sha256-oxa3qlIC2bzbwGxrQOZXoY/S7CpLsMrnWRB7Og0tk0M="; + }) + (fetchpatch { + url = "https://github.com/ROCm/MIOpen/commit/3413d2daaeb44b7d6eadcc03033a5954a118491e.patch"; + hash = "sha256-ST4snUcTmmSI1Ogx815KEX9GdMnmubsavDzXCGJkiKs="; + }) + ]; + + outputs = [ + "out" + ] ++ lib.optionals buildDocs [ + "doc" + ] ++ lib.optionals buildTests [ + "test" + ]; + + nativeBuildInputs = [ + pkg-config + cmake + rocm-cmake + clr + clang-tools-extra + ]; + + buildInputs = [ + rocblas + rocmlir + clang-ocl + miopengemm + composable_kernel + half + boost + sqlite + bzip2 + nlohmann_json + frugally-deep + ] ++ lib.optionals buildDocs [ + latex + doxygen + sphinx + rocm-docs-core + python3Packages.sphinx-rtd-theme + python3Packages.breathe + python3Packages.myst-parser + ] ++ lib.optionals buildTests [ + zlib + ]; + + cmakeFlags = [ + "-DCMAKE_CXX_FLAGS=-Wno-#warnings" # -> + "-DMIOPEN_USE_MIOPENGEMM=ON" + "-DUNZIPPER=${bzip2}/bin/bunzip2" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (!useOpenCL) [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + "-DMIOPEN_BACKEND=HIP" + ] ++ lib.optionals useOpenCL [ + "-DMIOPEN_BACKEND=OpenCL" + ] ++ lib.optionals buildTests [ + "-DBUILD_TESTS=ON" + "-DMIOPEN_TEST_ALL=ON" + ]; + + postPatch = '' + patchShebangs test src/composable_kernel fin utils install_deps.cmake + + substituteInPlace CMakeLists.txt \ + --replace "unpack_db(\"\''${CMAKE_SOURCE_DIR}/src/kernels/\''${FILE_NAME}.kdb.bz2\")" "" \ + --replace "MIOPEN_HIP_COMPILER MATCHES \".*clang\\\\+\\\\+$\"" "true" \ + --replace "set(MIOPEN_TIDY_ERRORS ALL)" "" # error: missing required key 'key' + + substituteInPlace test/gtest/CMakeLists.txt \ + --replace "include(googletest)" "" + + ln -sf ${gfx900} src/kernels/gfx900.kdb + ln -sf ${gfx906} src/kernels/gfx906.kdb + ln -sf ${gfx908} src/kernels/gfx908.kdb + ln -sf ${gfx90a} src/kernels/gfx90a.kdb + ln -sf ${gfx1030} src/kernels/gfx1030.kdb + ''; + + # Unfortunately, it seems like we have to call make on these manually + postBuild = lib.optionalString buildDocs '' + python -m sphinx -T -E -b html -d _build/doctrees -D language=en ../docs _build/html + '' + lib.optionalString buildTests '' + make -j$NIX_BUILD_CORES check + ''; + + postInstall = '' + rm $out/bin/install_precompiled_kernels.sh + ln -sf ${gfx900} $out/share/miopen/db/gfx900.kdb + ln -sf ${gfx906} $out/share/miopen/db/gfx906.kdb + ln -sf ${gfx908} $out/share/miopen/db/gfx908.kdb + ln -sf ${gfx90a} $out/share/miopen/db/gfx90a.kdb + ln -sf ${gfx1030} $out/share/miopen/db/gfx1030.kdb + '' + lib.optionalString buildDocs '' + mv ../doc/html $out/share/doc/miopen-${if useOpenCL then "opencl" else "hip"} + '' + lib.optionalString buildTests '' + mkdir -p $test/bin + mv bin/test_* $test/bin + patchelf --set-rpath $out/lib:${lib.makeLibraryPath (finalAttrs.buildInputs ++ + [ clr rocm-comgr ])} $test/bin/* + ''; + + requiredSystemFeatures = [ "big-parallel" ]; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Machine intelligence library for ROCm"; + homepage = "https://github.com/ROCm/MIOpen"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/miopengemm/default.nix b/pkgs/development/rocm-modules/5/miopengemm/default.nix new file mode 100644 index 000000000000..342bd950b1fb --- /dev/null +++ b/pkgs/development/rocm-modules/5/miopengemm/default.nix @@ -0,0 +1,126 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, clr +, clblast +, texliveSmall +, doxygen +, sphinx +, openblas +, python3Packages +, buildDocs ? true +, buildTests ? false +, buildBenchmarks ? false +}: + +let + latex = lib.optionalAttrs buildDocs (texliveSmall.withPackages (ps: with ps; [ + latexmk + tex-gyre + fncychap + wrapfig + capt-of + framed + needspace + tabulary + varwidth + titlesec + ])); +in stdenv.mkDerivation (finalAttrs: { + pname = "miopengemm"; + version = "5.5.0"; + + outputs = [ + "out" + ] ++ lib.optionals buildDocs [ + "doc" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ]; + + # Deprecated? https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/issues/62 + src = fetchFromGitHub { + owner = "ROCmSoftwarePlatform"; + repo = "MIOpenGEMM"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-AiRzOMYRA/0nbQomyq4oOEwNZdkPYWRA2W6QFlctvFc="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + ]; + + buildInputs = lib.optionals buildDocs [ + latex + doxygen + sphinx + python3Packages.sphinx-rtd-theme + python3Packages.breathe + ] ++ lib.optionals buildTests [ + openblas + ] ++ lib.optionals buildBenchmarks [ + clblast + python3Packages.openai-triton + ]; + + cmakeFlags = [ + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals buildTests [ + "-DOPENBLAS=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DAPI_BENCH_MIOGEMM=ON" + "-DAPI_BENCH_CLBLAST=ON" + "-DAPI_BENCH_ISAAC=ON" + ]; + + # Unfortunately, it seems like we have to call make on these manually + postBuild = lib.optionalString buildDocs '' + export HOME=$(mktemp -d) + make doc + '' + lib.optionalString buildTests '' + make check + '' + lib.optionalString buildBenchmarks '' + make examples + ''; + + postInstall = lib.optionalString buildDocs '' + mv ../doc/html $out/share/doc/miopengemm + mv ../doc/pdf/miopengemm.pdf $out/share/doc/miopengemm + '' + lib.optionalString buildTests '' + mkdir -p $test/bin + find tests -executable -type f -exec mv {} $test/bin \; + patchelf --set-rpath ${lib.makeLibraryPath finalAttrs.buildInputs}:$out/lib $test/bin/* + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + find examples -executable -type f -exec mv {} $benchmark/bin \; + patchelf --set-rpath ${lib.makeLibraryPath finalAttrs.buildInputs}:$out/lib $benchmark/bin/* + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "OpenCL general matrix multiplication API for ROCm"; + homepage = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + # They are not making tags or releases, this may break other derivations in the future + # Use version major instead of minor, 6.0 will HOPEFULLY have a release or tag + broken = versions.major finalAttrs.version != versions.major stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/mivisionx/default.nix b/pkgs/development/rocm-modules/5/mivisionx/default.nix new file mode 100644 index 000000000000..39fd4f5b76e3 --- /dev/null +++ b/pkgs/development/rocm-modules/5/mivisionx/default.nix @@ -0,0 +1,145 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocm-device-libs +, clr +, pkg-config +, rpp +, rocblas +, miopengemm +, miopen +, migraphx +, clang +, openmp +, protobuf +, qtcreator +, opencv +, ffmpeg +, boost +, libjpeg_turbo +, half +, lmdb +, rapidjson +, rocm-docs-core +, python3Packages +, useOpenCL ? false +, useCPU ? false +, buildDocs ? false # Needs internet +, gpuTargets ? [ ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "mivisionx-" + ( + if (!useOpenCL && !useCPU) then "hip" + else if (!useOpenCL && !useCPU) then "opencl" + else "cpu" + ); + + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "MIVisionX"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-jmOgwESNALQt7ctmUY9JHgKq47tCwsW1ybynkX9236U="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + pkg-config + ] ++ lib.optionals buildDocs [ + rocm-docs-core + python3Packages.python + ]; + + buildInputs = [ + miopengemm + miopen + migraphx + rpp + rocblas + openmp + half + protobuf + qtcreator + opencv + ffmpeg + boost + libjpeg_turbo + lmdb + rapidjson + python3Packages.pybind11 + python3Packages.numpy + python3Packages.torchWithRocm + ]; + + cmakeFlags = [ + "-DROCM_PATH=${clr}" + "-DAMDRPP_PATH=${rpp}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + "-DCMAKE_INSTALL_PREFIX_PYTHON=lib" + # "-DAMD_FP16_SUPPORT=ON" `error: typedef redefinition with different types ('__half' vs 'half_float::half')` + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals (!useOpenCL && !useCPU) [ + "-DBACKEND=HIP" + ] ++ lib.optionals (useOpenCL && !useCPU) [ + "-DBACKEND=OCL" + ] ++ lib.optionals useCPU [ + "-DBACKEND=CPU" + ]; + + postPatch = '' + # We need to not use hipcc and define the CXXFLAGS manually due to `undefined hidden symbol: tensorflow:: ...` + export CXXFLAGS+="--rocm-path=${clr} --rocm-device-lib-path=${rocm-device-libs}/amdgcn/bitcode" + patchShebangs rocAL/rocAL_pybind/examples + + # Properly find miopengemm and miopen + substituteInPlace amd_openvx_extensions/CMakeLists.txt \ + --replace "miopengemm PATHS \''${ROCM_PATH} QUIET" "miopengemm PATHS ${miopengemm} QUIET" \ + --replace "miopen PATHS \''${ROCM_PATH} QUIET" "miopen PATHS ${miopen} QUIET" \ + --replace "\''${ROCM_PATH}/include/miopen/config.h" "${miopen}/include/miopen/config.h" + + # Properly find turbojpeg + substituteInPlace amd_openvx/cmake/FindTurboJpeg.cmake \ + --replace "\''${TURBO_JPEG_PATH}/include" "${libjpeg_turbo.dev}/include" \ + --replace "\''${TURBO_JPEG_PATH}/lib" "${libjpeg_turbo.out}/lib" + + # Fix bad paths + substituteInPlace rocAL/rocAL/rocAL_hip/CMakeLists.txt amd_openvx_extensions/amd_nn/nn_hip/CMakeLists.txt amd_openvx/openvx/hipvx/CMakeLists.txt \ + --replace "COMPILER_FOR_HIP \''${ROCM_PATH}/llvm/bin/clang++" "COMPILER_FOR_HIP ${clang}/bin/clang++" + ''; + + postBuild = lib.optionalString buildDocs '' + python3 -m sphinx -T -E -b html -d _build/doctrees -D language=en ../docs _build/html + ''; + + postInstall = lib.optionalString (!useOpenCL && !useCPU) '' + patchelf $out/lib/rocal_pybind*.so --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" + chmod +x $out/lib/rocal_pybind*.so + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Set of comprehensive computer vision and machine intelligence libraries, utilities, and applications"; + homepage = "https://github.com/ROCm/MIVisionX"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rccl/default.nix b/pkgs/development/rocm-modules/5/rccl/default.nix new file mode 100644 index 000000000000..b80b96ac403a --- /dev/null +++ b/pkgs/development/rocm-modules/5/rccl/default.nix @@ -0,0 +1,91 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocm-smi +, clr +, perl +, hipify +, gtest +, chrpath +, buildTests ? false +, gpuTargets ? [ ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rccl"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rccl"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-nFkou/kjGBmImorlPOZNTlCrxbfAYpDhgRveyoAufu8="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + perl + hipify + ]; + + buildInputs = [ + rocm-smi + gtest + ] ++ lib.optionals buildTests [ + chrpath + ]; + + cmakeFlags = [ + "-DCMAKE_CXX_COMPILER=hipcc" + "-DBUILD_BFD=OFF" # Can't get it to detect bfd.h + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildTests [ + "-DBUILD_TESTS=ON" + ]; + + postPatch = '' + patchShebangs src tools + + # Really strange behavior, `#!/usr/bin/env perl` should work... + substituteInPlace CMakeLists.txt \ + --replace "\''$ \''${hipify-perl_executable}" "${perl}/bin/perl ${hipify}/bin/hipify-perl" + ''; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/* $test/bin + rmdir $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "ROCm communication collectives library"; + homepage = "https://github.com/ROCm/rccl"; + license = with licenses; [ bsd2 bsd3 ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rdc/default.nix b/pkgs/development/rocm-modules/5/rdc/default.nix new file mode 100644 index 000000000000..3ef5a200ea1a --- /dev/null +++ b/pkgs/development/rocm-modules/5/rdc/default.nix @@ -0,0 +1,125 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-smi +, rocm-runtime +, libcap +, grpc +, protobuf +, openssl +, doxygen +, graphviz +, texliveSmall +, gtest +, buildDocs ? true +, buildTests ? false +}: + +let + latex = lib.optionalAttrs buildDocs (texliveSmall.withPackages (ps: with ps; [ + changepage + latexmk + varwidth + multirow + hanging + adjustbox + collectbox + stackengine + enumitem + alphalph + wasysym + sectsty + tocloft + newunicodechar + etoc + helvetic + wasy + courier + ])); +in stdenv.mkDerivation (finalAttrs: { + pname = "rdc"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildDocs [ + "doc" + ] ++ lib.optionals buildTests [ + "test" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rdc"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-xZD/WI/LfNtKK9j6ZjuU0OTTFZz3G4atyD5mVcSsQ8A="; + }; + + nativeBuildInputs = [ + cmake + protobuf + ] ++ lib.optionals buildDocs [ + doxygen + graphviz + latex + ]; + + buildInputs = [ + rocm-smi + rocm-runtime + libcap + grpc + openssl + ] ++ lib.optionals buildTests [ + gtest + ]; + + cmakeFlags = [ + "-DCMAKE_VERBOSE_MAKEFILE=OFF" + "-DRDC_INSTALL_PREFIX=${placeholder "out"}" + "-DBUILD_ROCRTEST=ON" + "-DRSMI_INC_DIR=${rocm-smi}/include" + "-DRSMI_LIB_DIR=${rocm-smi}/lib" + "-DGRPC_ROOT=${grpc}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + "-DCMAKE_INSTALL_LIBEXECDIR=libexec" + "-DCMAKE_INSTALL_DOCDIR=doc" + ] ++ lib.optionals buildTests [ + "-DBUILD_TESTS=ON" + ]; + + postPatch = '' + substituteInPlace CMakeLists.txt \ + --replace "file(STRINGS /etc/os-release LINUX_DISTRO LIMIT_COUNT 1 REGEX \"NAME=\")" "set(LINUX_DISTRO \"NixOS\")" + ''; + + postInstall = '' + find $out/bin -executable -type f -exec \ + patchelf {} --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" \; + '' + lib.optionalString buildTests '' + mkdir -p $test + mv $out/bin/rdctst_tests $test/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Simplifies administration and addresses infrastructure challenges in cluster and datacenter environments"; + homepage = "https://github.com/ROCm/rdc"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + # broken = versions.minor finalAttrs.version != versions.minor rocm-smi.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = true; # Too many errors, unsure how to fix + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocalution/default.nix b/pkgs/development/rocm-modules/5/rocalution/default.nix new file mode 100644 index 000000000000..11f52ea1318c --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocalution/default.nix @@ -0,0 +1,115 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocblas +, rocsparse +, rocprim +, rocrand +, clr +, git +, openmp +, openmpi +, gtest +, buildTests ? false +, buildBenchmarks ? false +, buildSamples ? false +, gpuTargets ? [ ] # gpuTargets = [ "gfx803" "gfx900:xnack-" "gfx906:xnack-" ... ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocalution"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ] ++ lib.optionals buildSamples [ + "sample" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocALUTION"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-+UGpFuZsC4+kmo8LWZWC2YoFJSdTukjN47e1YqW5Zu4="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + git + ]; + + buildInputs = [ + rocblas + rocsparse + rocprim + rocrand + openmp + openmpi + ] ++ lib.optionals buildTests [ + gtest + ]; + + cmakeFlags = [ + "-DCMAKE_CXX_COMPILER=hipcc" + "-DROCM_PATH=${clr}" + "-DHIP_ROOT_DIR=${clr}" + "-DSUPPORT_HIP=ON" + "-DSUPPORT_OMP=ON" + "-DSUPPORT_MPI=ON" + "-DBUILD_CLIENTS_SAMPLES=${if buildSamples then "ON" else "OFF"}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.strings.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildTests [ + "-DBUILD_CLIENTS_TESTS=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_CLIENTS_BENCHMARKS=ON" + ]; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/rocalution-test $test/bin + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + mv $out/bin/rocalution-bench $benchmark/bin + '' + lib.optionalString buildSamples '' + mkdir -p $sample/bin + mv clients/staging/* $sample/bin + rm $sample/bin/rocalution-test || true + rm $sample/bin/rocalution-bench || true + + patchelf --set-rpath \ + $out/lib:${lib.makeLibraryPath (finalAttrs.buildInputs ++ [ clr ])} \ + $sample/bin/* + '' + lib.optionalString (buildTests || buildBenchmarks) '' + rmdir $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Iterative sparse solvers for ROCm"; + homepage = "https://github.com/ROCm/rocALUTION"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocblas/default.nix b/pkgs/development/rocm-modules/5/rocblas/default.nix new file mode 100644 index 000000000000..bd8a4ed4e35d --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocblas/default.nix @@ -0,0 +1,209 @@ +{ rocblas +, lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, runCommand +, cmake +, rocm-cmake +, clr +, python3 +, tensile +, msgpack +, libxml2 +, gtest +, gfortran +, openmp +, amd-blis +, python3Packages +, buildTensile ? true +, buildTests ? false +, buildBenchmarks ? false +, tensileLogic ? "asm_full" +, tensileCOVersion ? "default" +, tensileSepArch ? true +, tensileLazyLib ? true +, tensileLibFormat ? "msgpack" +, gpuTargets ? [ "all" ] +}: + +let + # NOTE: Update the default GPU targets on every update + gfx80 = (rocblas.override { + gpuTargets = [ + "gfx803" + ]; + }).overrideAttrs { pname = "rocblas-tensile-gfx80"; }; + + gfx90 = (rocblas.override { + gpuTargets = [ + "gfx900" + "gfx906:xnack-" + "gfx908:xnack-" + "gfx90a:xnack+" + "gfx90a:xnack-" + ]; + }).overrideAttrs { pname = "rocblas-tensile-gfx90"; }; + + gfx94 = (rocblas.override { + gpuTargets = [ + "gfx940" + "gfx941" + "gfx942" + ]; + }).overrideAttrs { pname = "rocblas-tensile-gfx94"; }; + + gfx10 = (rocblas.override { + gpuTargets = [ + "gfx1010" + "gfx1012" + "gfx1030" + ]; + }).overrideAttrs { pname = "rocblas-tensile-gfx10"; }; + + gfx11 = (rocblas.override { + gpuTargets = [ + "gfx1100" + "gfx1101" + "gfx1102" + ]; + }).overrideAttrs { pname = "rocblas-tensile-gfx11"; }; + + # Unfortunately, we have to do two full builds, otherwise we get overlapping _fallback.dat files + fallbacks = rocblas.overrideAttrs { pname = "rocblas-tensile-fallbacks"; }; +in stdenv.mkDerivation (finalAttrs: { + pname = "rocblas"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocBLAS"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-3wKnwvAra8u9xqlC05wUD+gSoBILTVJFU2cIV6xv3Lk="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + ]; + + buildInputs = [ + python3 + ] ++ lib.optionals buildTensile [ + msgpack + libxml2 + python3Packages.msgpack + python3Packages.joblib + ] ++ lib.optionals buildTests [ + gtest + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + gfortran + openmp + amd-blis + ] ++ lib.optionals (buildTensile || buildTests || buildBenchmarks) [ + python3Packages.pyyaml + ]; + + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + "-Dpython=python3" + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + "-DBUILD_WITH_TENSILE=${if buildTensile then "ON" else "OFF"}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals buildTensile [ + "-DVIRTUALENV_HOME_DIR=/build/source/tensile" + "-DTensile_TEST_LOCAL_PATH=/build/source/tensile" + "-DTensile_ROOT=/build/source/tensile/${python3.sitePackages}/Tensile" + "-DTensile_LOGIC=${tensileLogic}" + "-DTensile_CODE_OBJECT_VERSION=${tensileCOVersion}" + "-DTensile_SEPARATE_ARCHITECTURES=${if tensileSepArch then "ON" else "OFF"}" + "-DTensile_LAZY_LIBRARY_LOADING=${if tensileLazyLib then "ON" else "OFF"}" + "-DTensile_LIBRARY_FORMAT=${tensileLibFormat}" + ] ++ lib.optionals buildTests [ + "-DBUILD_CLIENTS_TESTS=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_CLIENTS_BENCHMARKS=ON" + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + "-DCMAKE_CXX_FLAGS=-I${amd-blis}/include/blis" + ]; + + postPatch = lib.optionalString (finalAttrs.pname != "rocblas") '' + # Return early and install tensile files manually + substituteInPlace library/src/CMakeLists.txt \ + --replace "set_target_properties( TensileHost PROPERTIES OUTPUT_NAME" "return()''\nset_target_properties( TensileHost PROPERTIES OUTPUT_NAME" + '' + lib.optionalString (buildTensile && finalAttrs.pname == "rocblas") '' + # Link the prebuilt Tensile files + mkdir -p build/Tensile/library + + for path in ${gfx80} ${gfx90} ${gfx94} ${gfx10} ${gfx11} ${fallbacks}; do + ln -s $path/lib/rocblas/library/* build/Tensile/library + done + + unlink build/Tensile/library/TensileManifest.txt + '' + lib.optionalString buildTensile '' + # Tensile REALLY wants to write to the nix directory if we include it normally + cp -a ${tensile} tensile + chmod +w -R tensile + + # Rewrap Tensile + substituteInPlace tensile/bin/{.t*,.T*,*} \ + --replace "${tensile}" "/build/source/tensile" + + substituteInPlace CMakeLists.txt \ + --replace "include(virtualenv)" "" \ + --replace "virtualenv_install(\''${Tensile_TEST_LOCAL_PATH})" "" + ''; + + postInstall = lib.optionalString (finalAttrs.pname == "rocblas") '' + ln -sf ${fallbacks}/lib/rocblas/library/TensileManifest.txt $out/lib/rocblas/library + '' + lib.optionalString (finalAttrs.pname != "rocblas") '' + mkdir -p $out/lib/rocblas/library + rm -rf $out/share + '' + lib.optionalString (finalAttrs.pname != "rocblas" && finalAttrs.pname != "rocblas-tensile-fallbacks") '' + rm Tensile/library/{TensileManifest.txt,*_fallback.dat} + mv Tensile/library/* $out/lib/rocblas/library + '' + lib.optionalString (finalAttrs.pname == "rocblas-tensile-fallbacks") '' + mv Tensile/library/{TensileManifest.txt,*_fallback.dat} $out/lib/rocblas/library + '' + lib.optionalString buildTests '' + mkdir -p $test/bin + cp -a $out/bin/* $test/bin + rm $test/bin/*-bench || true + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + cp -a $out/bin/* $benchmark/bin + rm $benchmark/bin/*-test || true + '' + lib.optionalString (buildTests || buildBenchmarks ) '' + rm -rf $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + requiredSystemFeatures = [ "big-parallel" ]; + + meta = with lib; { + description = "BLAS implementation for ROCm platform"; + homepage = "https://github.com/ROCm/rocBLAS"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocdbgapi/default.nix b/pkgs/development/rocm-modules/5/rocdbgapi/default.nix new file mode 100644 index 000000000000..fd6797d0d43b --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocdbgapi/default.nix @@ -0,0 +1,111 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, git +, rocm-comgr +, rocm-runtime +, hwdata +, texliveSmall +, doxygen +, graphviz +, buildDocs ? true +}: + +let + latex = lib.optionalAttrs buildDocs (texliveSmall.withPackages (ps: with ps; [ + changepage + latexmk + varwidth + multirow + hanging + adjustbox + collectbox + stackengine + enumitem + alphalph + wasysym + sectsty + tocloft + newunicodechar + etoc + helvetic + wasy + courier + ])); +in stdenv.mkDerivation (finalAttrs: { + pname = "rocdbgapi"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildDocs [ + "doc" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "ROCdbgapi"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-qMXvgcS61lgcylz62ErYq8fhpYIR31skQEeKUryuP1w="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + git + ] ++ lib.optionals buildDocs [ + latex + doxygen + graphviz + ]; + + buildInputs = [ + rocm-comgr + rocm-runtime + hwdata + ]; + + cmakeFlags = [ + "-DPCI_IDS_PATH=${hwdata}/share/hwdata" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ]; + + # Unfortunately, it seems like we have to call make on this manually + postBuild = lib.optionalString buildDocs '' + export HOME=$(mktemp -d) + make -j$NIX_BUILD_CORES doc + ''; + + postInstall = '' + substituteInPlace $out/lib/cmake/amd-dbgapi/amd-dbgapi-config.cmake \ + --replace "/build/source/build/" "" + + substituteInPlace $out/lib/cmake/amd-dbgapi/amd-dbgapi-targets.cmake \ + --replace "/build/source/build" "$out" + '' + lib.optionalString buildDocs '' + mv $out/share/html/amd-dbgapi $doc/share/doc/amd-dbgapi/html + rmdir $out/share/html + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Debugger support for control of execution and inspection state"; + homepage = "https://github.com/ROCm/ROCdbgapi"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocfft/default.nix b/pkgs/development/rocm-modules/5/rocfft/default.nix new file mode 100644 index 000000000000..48f3264d157f --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocfft/default.nix @@ -0,0 +1,169 @@ +{ rocfft +, lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, clr +, python3 +, rocm-cmake +, sqlite +, boost +, fftw +, fftwFloat +, gtest +, openmp +, rocrand +, gpuTargets ? [ ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocfft"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocFFT"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-GZSi03geTT+NUztBWhGYyghLqJGsFjUQzVAKQ7d03uA="; + }; + + nativeBuildInputs = [ + cmake + clr + python3 + rocm-cmake + ]; + + buildInputs = [ sqlite ]; + + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + "-DSQLITE_USE_SYSTEM_PACKAGE=ON" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ]; + + passthru = { + test = stdenv.mkDerivation { + pname = "${finalAttrs.pname}-test"; + inherit (finalAttrs) version src; + + sourceRoot = "${finalAttrs.src.name}/clients/tests"; + + nativeBuildInputs = [ + cmake + clr + rocm-cmake + ]; + + buildInputs = [ + boost + fftw + fftwFloat + finalAttrs.finalPackage + gtest + openmp + rocrand + ]; + + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + ]; + + postInstall = '' + rm -r "$out/lib/fftw" + rmdir "$out/lib" + ''; + }; + + benchmark = stdenv.mkDerivation { + pname = "${finalAttrs.pname}-benchmark"; + inherit (finalAttrs) version src; + + sourceRoot = "${finalAttrs.src.name}/clients/rider"; + + nativeBuildInputs = [ + cmake + clr + rocm-cmake + ]; + + buildInputs = [ + boost + finalAttrs.finalPackage + openmp + (python3.withPackages (ps: with ps; [ + pandas + scipy + ])) + rocrand + ]; + + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + ]; + + postInstall = '' + cp -a ../../../scripts/perf "$out/bin" + ''; + }; + + samples = stdenv.mkDerivation { + pname = "${finalAttrs.pname}-samples"; + inherit (finalAttrs) version src; + + sourceRoot = "${finalAttrs.src.name}/clients/samples"; + + nativeBuildInputs = [ + cmake + clr + rocm-cmake + ]; + + buildInputs = [ + boost + finalAttrs.finalPackage + openmp + rocrand + ]; + + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + ]; + + installPhase = '' + runHook preInstall + mkdir "$out" + cp -a bin "$out" + runHook postInstall + ''; + }; + + updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + }; + + requiredSystemFeatures = [ "big-parallel" ]; + + meta = with lib; { + description = "FFT implementation for ROCm"; + homepage = "https://github.com/ROCm/rocFFT"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ kira-bruneau ] ++ teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocgdb/default.nix b/pkgs/development/rocm-modules/5/rocgdb/default.nix new file mode 100644 index 000000000000..a02ad3f9e8f2 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocgdb/default.nix @@ -0,0 +1,59 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, pkg-config +, texinfo +, bison +, flex +, zlib +, elfutils +, gmp +, ncurses +, expat +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocgdb"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "ROCgdb"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-TlT7vvTrVd7P6ilVnWIG5VIrjTleFgDezK/mudBV+xE="; + }; + + nativeBuildInputs = [ + pkg-config + texinfo # For makeinfo + bison + flex + ]; + + buildInputs = [ + zlib + elfutils + gmp + ncurses + expat + ]; + + # `-Wno-format-nonliteral` doesn't work + env.NIX_CFLAGS_COMPILE = "-Wno-error=format-security"; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "ROCm source-level debugger for Linux, based on GDB"; + homepage = "https://github.com/ROCm/ROCgdb"; + license = with licenses; [ gpl2 gpl3 bsd3 ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocm-cmake/default.nix b/pkgs/development/rocm-modules/5/rocm-cmake/default.nix new file mode 100644 index 000000000000..c0d7e48ff59f --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocm-cmake/default.nix @@ -0,0 +1,35 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocm-cmake"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocm-cmake"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-aVjzuJ4BiSfwOdjufFc5CznfnL8di5h992zl+pzD0DU="; + }; + + nativeBuildInputs = [ cmake ]; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "CMake modules for common build tasks for the ROCm stack"; + homepage = "https://github.com/ROCm/rocm-cmake"; + license = licenses.mit; + maintainers = teams.rocm.members; + platforms = platforms.unix; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocm-comgr/default.nix b/pkgs/development/rocm-modules/5/rocm-comgr/default.nix new file mode 100644 index 000000000000..1ef226b338c4 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocm-comgr/default.nix @@ -0,0 +1,55 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocm-device-libs +, libxml2 +}: + +let + llvmNativeTarget = + if stdenv.isx86_64 then "X86" + else if stdenv.isAarch64 then "AArch64" + else throw "Unsupported ROCm LLVM platform"; +in stdenv.mkDerivation (finalAttrs: { + pname = "rocm-comgr"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "ROCm-CompilerSupport"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-QB3G0V92UTW67hD6+zSuExN1+eMT820iYSlMyZeWSFw="; + }; + + sourceRoot = "${finalAttrs.src.name}/lib/comgr"; + + nativeBuildInputs = [ + cmake + rocm-cmake + ]; + + buildInputs = [ + rocm-device-libs + libxml2 + ]; + + cmakeFlags = [ "-DLLVM_TARGETS_TO_BUILD=AMDGPU;X86" ]; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "APIs for compiling and inspecting AMDGPU code objects"; + homepage = "https://github.com/ROCm/ROCm-CompilerSupport/tree/amd-stg-open/lib/comgr"; + license = licenses.ncsa; + maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocm-core/default.nix b/pkgs/development/rocm-modules/5/rocm-core/default.nix new file mode 100644 index 000000000000..c96bfeb0d295 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocm-core/default.nix @@ -0,0 +1,38 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocm-core"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocm-core"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-jFAHLqf/AR27Nbuq8aypWiKqApNcTgG5LWESVjVCKIg="; + }; + + nativeBuildInputs = [ cmake ]; + cmakeFlags = [ "-DROCM_VERSION=${finalAttrs.version}" ]; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + page = "tags?per_page=1"; + filter = ".[0].name | split(\"-\") | .[1]"; + }; + + meta = with lib; { + description = "Utility for getting the ROCm release version"; + homepage = "https://github.com/ROCm/rocm-core"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocm-device-libs/cmake.patch b/pkgs/development/rocm-modules/5/rocm-device-libs/cmake.patch new file mode 100644 index 000000000000..500ff37a9905 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocm-device-libs/cmake.patch @@ -0,0 +1,43 @@ +diff --git a/cmake/Packages.cmake b/cmake/Packages.cmake +index 07c60eb..c736b3e 100644 +--- a/cmake/Packages.cmake ++++ b/cmake/Packages.cmake +@@ -12,24 +12,29 @@ set_target_properties(${target} PROPERTIES + IMPORTED_LOCATION \"${target_path}\")") + endforeach() + configure_file(AMDDeviceLibsConfig.cmake.in +- ${PACKAGE_PREFIX}/AMDDeviceLibsConfig.cmake ++ lib/cmake/AMDDeviceLibs/AMDDeviceLibsConfig.cmake + @ONLY) + + + set(install_path_suffix "amdgcn/bitcode") + + # Generate the install-tree package. +-# We do not know the absolute path to the intall tree until we are installed, +-# so we calculate it dynamically in AMD_DEVICE_LIBS_PREFIX_CODE and use +-# relative paths in the target imports in AMD_DEVICE_LIBS_TARGET_CODE. +-set(AMD_DEVICE_LIBS_PREFIX_CODE " ++if(IS_ABSOLUTE "${CMAKE_INSTALL_PREFIX}") ++ set(AMD_DEVICE_LIBS_PREFIX_CODE "set(AMD_DEVICE_LIBS_PREFIX \"${CMAKE_INSTALL_PREFIX}\")") ++else() ++ # We do not know the absolute path to the install tree until we are installed, ++ # so we calculate it dynamically in AMD_DEVICE_LIBS_PREFIX_CODE and use ++ # relative paths in the target imports in AMD_DEVICE_LIBS_TARGET_CODE. ++ set(AMD_DEVICE_LIBS_PREFIX_CODE " + # Derive absolute install prefix from config file path. + get_filename_component(AMD_DEVICE_LIBS_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)") +-string(REGEX REPLACE "/" ";" count "${PACKAGE_PREFIX}") +-foreach(p ${count}) +- set(AMD_DEVICE_LIBS_PREFIX_CODE "${AMD_DEVICE_LIBS_PREFIX_CODE} ++ string(REGEX REPLACE "/" ";" count "${PACKAGE_PREFIX}") ++ foreach(p ${count}) ++ set(AMD_DEVICE_LIBS_PREFIX_CODE "${AMD_DEVICE_LIBS_PREFIX_CODE} + get_filename_component(AMD_DEVICE_LIBS_PREFIX \"\${AMD_DEVICE_LIBS_PREFIX}\" PATH)") +-endforeach() ++ endforeach() ++endif() ++ + set(AMD_DEVICE_LIBS_TARGET_CODE) + foreach(target ${AMDGCN_LIB_LIST}) + get_target_property(target_name ${target} ARCHIVE_OUTPUT_NAME) diff --git a/pkgs/development/rocm-modules/5/rocm-device-libs/default.nix b/pkgs/development/rocm-modules/5/rocm-device-libs/default.nix new file mode 100644 index 000000000000..28af3e960266 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocm-device-libs/default.nix @@ -0,0 +1,50 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, libxml2 +}: + +let + llvmNativeTarget = + if stdenv.isx86_64 then "X86" + else if stdenv.isAarch64 then "AArch64" + else throw "Unsupported ROCm LLVM platform"; +in stdenv.mkDerivation (finalAttrs: { + pname = "rocm-device-libs"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "ROCm-Device-Libs"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-ARxs/yqyVoIUWliJkINzitumF+64/5u3fbB0tHB5hPU="; + }; + + patches = [ ./cmake.patch ]; + + nativeBuildInputs = [ + cmake + rocm-cmake + ]; + + buildInputs = [ libxml2 ]; + cmakeFlags = [ "-DLLVM_TARGETS_TO_BUILD=AMDGPU;${llvmNativeTarget}" ]; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Set of AMD-specific device-side language runtime libraries"; + homepage = "https://github.com/ROCm/ROCm-Device-Libs"; + license = licenses.ncsa; + maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocm-docs-core/default.nix b/pkgs/development/rocm-modules/5/rocm-docs-core/default.nix new file mode 100644 index 000000000000..e980c9509a08 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocm-docs-core/default.nix @@ -0,0 +1,66 @@ +{ lib +, stdenv +, fetchFromGitHub +, gitUpdater +, buildPythonPackage +, setuptools +, beautifulsoup4 +, gitpython +, pydata-sphinx-theme +, pygithub +, sphinx +, breathe +, myst-parser +, sphinx-book-theme +, sphinx-copybutton +, sphinx-design +, sphinx-external-toc +, sphinx-notfound-page +, pyyaml +, fastjsonschema +}: + +# FIXME: Move to rocmPackages_common +buildPythonPackage rec { + pname = "rocm-docs-core"; + version = "0.26.0"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "RadeonOpenCompute"; + repo = "rocm-docs-core"; + rev = "v${version}"; + hash = "sha256-Mr6/Ne6P+TapoCqN7xkKMNse3fTaIAvvLmMl0kVg7Vs="; + }; + + buildInputs = [ setuptools ]; + + propagatedBuildInputs = [ + beautifulsoup4 + gitpython + pydata-sphinx-theme + pygithub + sphinx + breathe + myst-parser + sphinx-book-theme + sphinx-copybutton + sphinx-design + sphinx-external-toc + sphinx-notfound-page + pyyaml + fastjsonschema + ]; + + pythonImportsCheck = [ "rocm_docs" ]; + + passthru.updateScript = gitUpdater { rev-prefix = "v"; }; + + meta = with lib; { + description = "ROCm Documentation Python package for ReadTheDocs build standardization"; + homepage = "https://github.com/RadeonOpenCompute/rocm-docs-core"; + license = with licenses; [ mit cc-by-40 ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + }; +} diff --git a/pkgs/development/rocm-modules/5/rocm-runtime/default.nix b/pkgs/development/rocm-modules/5/rocm-runtime/default.nix new file mode 100644 index 000000000000..f94f49d00bd4 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocm-runtime/default.nix @@ -0,0 +1,78 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, pkg-config +, cmake +, xxd +, rocm-device-libs +, rocm-thunk +, libelf +, libdrm +, numactl +, valgrind +, libxml2 +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocm-runtime"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "ROCR-Runtime"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-D7Ahan5cxDhqPtV5iDDNys0A4FlxQ9oVRa2EeMoY5Qk="; + }; + + sourceRoot = "${finalAttrs.src.name}/src"; + + nativeBuildInputs = [ + pkg-config + cmake + xxd + ]; + + buildInputs = [ + rocm-thunk + libelf + libdrm + numactl + valgrind + libxml2 + ]; + + postPatch = '' + patchShebangs image/blit_src/create_hsaco_ascii_file.sh + patchShebangs core/runtime/trap_handler/create_trap_handler_header.sh + + substituteInPlace CMakeLists.txt \ + --replace 'hsa/include/hsa' 'include/hsa' + + # We compile clang before rocm-device-libs, so patch it in afterwards + # Replace object version: https://github.com/ROCm/ROCR-Runtime/issues/166 (TODO: Remove on LLVM update?) + substituteInPlace image/blit_src/CMakeLists.txt \ + --replace '-cl-denorms-are-zero' '-cl-denorms-are-zero --rocm-device-lib-path=${rocm-device-libs}/amdgcn/bitcode' \ + --replace '-mcode-object-version=4' '-mcode-object-version=5' + ''; + + fixupPhase = '' + rm -rf $out/hsa/* + ln -s $out/{include,lib} $out/hsa + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Platform runtime for ROCm"; + homepage = "https://github.com/ROCm/ROCR-Runtime"; + license = with licenses; [ ncsa ]; + maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocm-smi/cmake.patch b/pkgs/development/rocm-modules/5/rocm-smi/cmake.patch new file mode 100644 index 000000000000..2634ea46a1f8 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocm-smi/cmake.patch @@ -0,0 +1,89 @@ +diff --git a/rocm_smi-backward-compat.cmake b/rocm_smi-backward-compat.cmake +index aa8fd9c..59afce5 100644 +--- a/rocm_smi-backward-compat.cmake ++++ b/rocm_smi-backward-compat.cmake +@@ -72,7 +72,12 @@ function(generate_wrapper_header) + set(include_guard "${include_guard}COMGR_WRAPPER_INCLUDE_${INC_GAURD_NAME}_H") + #set #include statement + get_filename_component(file_name ${header_file} NAME) +- set(include_statements "${include_statements}#include \"../../../${CMAKE_INSTALL_INCLUDEDIR}/${ROCM_SMI}/${file_name}\"\n") ++ if(IS_ABSOLUTE ${CMAKE_INSTALL_INCLUDEDIR}) ++ set(include_dir "${CMAKE_INSTALL_INCLUDEDIR}") ++ else() ++ set(include_dir "../../../${CMAKE_INSTALL_INCLUDEDIR}") ++ endif() ++ set(include_statements "${include_statements}#include \"${include_dir}/${ROCM_SMI}/${file_name}\"\n") + configure_file(${RSMI_WRAPPER_DIR}/header.hpp.in ${RSMI_WRAPPER_INC_DIR}/${file_name}) + unset(include_guard) + unset(include_statements) +@@ -90,7 +95,12 @@ function(generate_wrapper_header) + set(include_guard "${include_guard}COMGR_WRAPPER_INCLUDE_${INC_GAURD_NAME}_H") + #set #include statement + get_filename_component(file_name ${header_file} NAME) +- set(include_statements "${include_statements}#include \"../../../${CMAKE_INSTALL_INCLUDEDIR}/${OAM_TARGET_NAME}/${file_name}\"\n") ++ if(IS_ABSOLUTE ${CMAKE_INSTALL_INCLUDEDIR}) ++ set(include_dir "${CMAKE_INSTALL_INCLUDEDIR}") ++ else() ++ set(include_dir "../../../${CMAKE_INSTALL_INCLUDEDIR}") ++ endif() ++ set(include_statements "${include_statements}#include \"${include_dir}/${OAM_TARGET_NAME}/${file_name}\"\n") + configure_file(${RSMI_WRAPPER_DIR}/header.hpp.in ${OAM_WRAPPER_INC_DIR}/${file_name}) + unset(include_guard) + unset(include_statements) +@@ -123,11 +133,16 @@ function(create_library_symlink) + set(library_files "${LIB_RSMI}") + endif() + ++ if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBDIR}) ++ set(install_libdir "${CMAKE_INSTALL_LIBDIR}") ++ else() ++ set(install_libdir "../../${CMAKE_INSTALL_LIBDIR}") ++ endif() + foreach(file_name ${library_files}) + add_custom_target(link_${file_name} ALL + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E create_symlink +- ../../${CMAKE_INSTALL_LIBDIR}/${file_name} ${RSMI_WRAPPER_LIB_DIR}/${file_name}) ++ ${install_libdir}/${file_name} ${RSMI_WRAPPER_LIB_DIR}/${file_name}) + endforeach() + + file(MAKE_DIRECTORY ${OAM_WRAPPER_LIB_DIR}) +@@ -151,11 +166,16 @@ function(create_library_symlink) + set(library_files "${LIB_OAM}") + endif() + ++ if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBDIR}) ++ set(install_libdir "${CMAKE_INSTALL_LIBDIR}") ++ else() ++ set(install_libdir "../../${CMAKE_INSTALL_LIBDIR}") ++ endif() + foreach(file_name ${library_files}) + add_custom_target(link_${file_name} ALL + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E create_symlink +- ../../${CMAKE_INSTALL_LIBDIR}/${file_name} ${OAM_WRAPPER_LIB_DIR}/${file_name}) ++ ${install_libdir}/${file_name} ${OAM_WRAPPER_LIB_DIR}/${file_name}) + endforeach() + + endfunction() +diff --git a/rocm_smi/CMakeLists.txt b/rocm_smi/CMakeLists.txt +index c594eeb..d3ed39d 100755 +--- a/rocm_smi/CMakeLists.txt ++++ b/rocm_smi/CMakeLists.txt +@@ -105,10 +105,15 @@ endif () + #file reorganization changes + #rocm_smi.py moved to libexec/rocm_smi. so creating rocm-smi symlink + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) ++if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBEXECDIR}) ++ set(install_libexecdir "${CMAKE_INSTALL_LIBEXECDIR}") ++else() ++ set(install_libexecdir "../${CMAKE_INSTALL_LIBEXECDIR}") ++endif() + add_custom_target(link-rocm-smi ALL + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E create_symlink +- ../${CMAKE_INSTALL_LIBEXECDIR}/${ROCM_SMI}/rocm_smi.py ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi) ++ ${install_libexecdir}/${ROCM_SMI}/rocm_smi.py ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi) + + ## Add the install directives for the runtime library. + install(TARGETS ${ROCM_SMI_TARGET} diff --git a/pkgs/development/rocm-modules/5/rocm-smi/default.nix b/pkgs/development/rocm-modules/5/rocm-smi/default.nix new file mode 100644 index 000000000000..91b730f03b37 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocm-smi/default.nix @@ -0,0 +1,54 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, wrapPython +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocm-smi"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocm_smi_lib"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-NZR4jBgKVfpkRNQFPmav1yCZF872LkcrPBNNcBVTLDU="; + }; + + patches = [ ./cmake.patch ]; + + nativeBuildInputs = [ + cmake + wrapPython + ]; + + cmakeFlags = [ + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ]; + + postInstall = '' + wrapPythonProgramsIn $out + mv $out/libexec/rocm_smi/.rsmiBindings.py-wrapped $out/libexec/rocm_smi/rsmiBindings.py + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "System management interface for AMD GPUs supported by ROCm"; + homepage = "https://github.com/ROCm/rocm_smi_lib"; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; + platforms = [ "x86_64-linux" ]; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocm-thunk/default.nix b/pkgs/development/rocm-modules/5/rocm-thunk/default.nix new file mode 100644 index 000000000000..f610f8a0d53a --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocm-thunk/default.nix @@ -0,0 +1,54 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, pkg-config +, cmake +, libdrm +, numactl +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocm-thunk"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "ROCT-Thunk-Interface"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-jAMBks2/JaXiA45B3qvLHY8fPeFcr1GHT5Jieuduqhw="; + }; + + nativeBuildInputs = [ + pkg-config + cmake + ]; + + buildInputs = [ + libdrm + numactl + ]; + + cmakeFlags = [ + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ]; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Radeon open compute thunk interface"; + homepage = "https://github.com/ROCm/ROCT-Thunk-Interface"; + license = with licenses; [ bsd2 mit ]; + maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocminfo/default.nix b/pkgs/development/rocm-modules/5/rocminfo/default.nix new file mode 100644 index 000000000000..addbad038b94 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocminfo/default.nix @@ -0,0 +1,63 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocm-runtime +, busybox +, python3 +, gnugrep + # rocminfo requires that the calling user have a password and be in + # the video group. If we let rocm_agent_enumerator rely upon + # rocminfo's output, then it, too, has those requirements. Instead, + # we can specify the GPU targets for this system (e.g. "gfx803" for + # Polaris) such that no system call is needed for downstream + # compilers to determine the desired target. +, defaultTargets ? [] +}: + +stdenv.mkDerivation (finalAttrs: { + version = "5.7.1"; + pname = "rocminfo"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocminfo"; + rev = "rocm-${finalAttrs.version}"; + sha256 = "sha256-UzOo2qDT/uM+vdGdBM4pV5e143mfa+/6sZLBExOO26g="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + ]; + + buildInputs = [ rocm-runtime ]; + propagatedBuildInputs = [ python3 ]; + cmakeFlags = [ "-DROCRTST_BLD_TYPE=Release" ]; + + prePatch = '' + patchShebangs rocm_agent_enumerator + sed 's,lsmod | grep ,${busybox}/bin/lsmod | ${gnugrep}/bin/grep ,' -i rocminfo.cc + ''; + + postInstall = lib.optionalString (defaultTargets != [ ]) '' + echo '${lib.concatStringsSep "\n" defaultTargets}' > $out/bin/target.lst + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "ROCm Application for Reporting System Info"; + homepage = "https://github.com/ROCm/rocminfo"; + license = licenses.ncsa; + maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; + platforms = platforms.linux; + broken = stdenv.isAarch64 || versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocmlir/default.nix b/pkgs/development/rocm-modules/5/rocmlir/default.nix new file mode 100644 index 000000000000..73dbbf8f95f8 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocmlir/default.nix @@ -0,0 +1,130 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, ninja +, clr +, git +, libxml2 +, libedit +, zstd +, zlib +, ncurses +, python3Packages +, buildRockCompiler ? false +, buildTests ? false # `argument of type 'NoneType' is not iterable` +}: + +# Theoretically, we could have our MLIR have an output +# with the source and built objects so that we can just +# use it as the external LLVM repo for this +let + suffix = + if buildRockCompiler + then "-rock" + else ""; + + llvmNativeTarget = + if stdenv.isx86_64 then "X86" + else if stdenv.isAarch64 then "AArch64" + else throw "Unsupported ROCm LLVM platform"; +in stdenv.mkDerivation (finalAttrs: { + pname = "rocmlir${suffix}"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals (!buildRockCompiler) [ + "external" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocMLIR"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-vPi4UVljohVAfnwDVQqeOVaJPa6v8aV5uBOtqLddTtc="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + ninja + clr + python3Packages.python + python3Packages.tomli + ]; + + buildInputs = [ + git + libxml2 + libedit + ]; + + propagatedBuildInputs = [ + zstd + zlib + ncurses + ]; + + cmakeFlags = [ + "-DLLVM_TARGETS_TO_BUILD=AMDGPU;${llvmNativeTarget}" + "-DLLVM_ENABLE_ZSTD=ON" + "-DLLVM_ENABLE_ZLIB=ON" + "-DLLVM_ENABLE_TERMINFO=ON" + "-DROCM_PATH=${clr}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals buildRockCompiler [ + "-DBUILD_FAT_LIBROCKCOMPILER=ON" + ] ++ lib.optionals (!buildRockCompiler) [ + "-DROCM_TEST_CHIPSET=gfx000" + ]; + + postPatch = '' + patchShebangs mlir + + substituteInPlace mlir/utils/performance/common/CMakeLists.txt \ + --replace "/opt/rocm" "${clr}" + ''; + + dontBuild = true; + doCheck = true; + + # Certain libs aren't being generated, try enabling tests next update + checkTarget = if buildRockCompiler + then "librockCompiler" + else if buildTests + then "check-rocmlir" + else "check-rocmlir-build-only"; + + postInstall = let + libPath = lib.makeLibraryPath [ zstd zlib ncurses clr stdenv.cc.cc ]; + in lib.optionals (!buildRockCompiler) '' + mkdir -p $external/lib + cp -a external/llvm-project/llvm/lib/{*.a*,*.so*} $external/lib + patchelf --set-rpath $external/lib:$out/lib:${libPath} $external/lib/*.so* + patchelf --set-rpath $out/lib:$external/lib:${libPath} $out/{bin/*,lib/*.so*} + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + page = "tags?per_page=2"; + filter = ".[1].name | split(\"-\") | .[1]"; + }; + + meta = with lib; { + description = "MLIR-based convolution and GEMM kernel generator"; + homepage = "https://github.com/ROCm/rocMLIR"; + license = with licenses; [ asl20 ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocprim/default.nix b/pkgs/development/rocm-modules/5/rocprim/default.nix new file mode 100644 index 000000000000..398d1d5509cf --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocprim/default.nix @@ -0,0 +1,86 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, clr +, gtest +, gbenchmark +, buildTests ? false +, buildBenchmarks ? false +, gpuTargets ? [ ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocprim"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocPRIM"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-+ukFWsWv3RhS+Z6tmR4TRT8QTYEDuAEk12F9Gv1eXGU="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + ]; + + buildInputs = lib.optionals buildTests [ + gtest + ] ++ lib.optionals buildBenchmarks [ + gbenchmark + ]; + + cmakeFlags = [ + "-DCMAKE_CXX_COMPILER=hipcc" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildTests [ + "-DBUILD_TEST=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_BENCHMARK=ON" + ]; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/test_* $test/bin + mv $out/bin/rocprim $test/bin + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + mv $out/bin/benchmark_* $benchmark/bin + '' + lib.optionalString (buildTests || buildBenchmarks) '' + rmdir $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "ROCm parallel primitives"; + homepage = "https://github.com/ROCm/rocPRIM"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocprofiler/0000-dont-install-tests-hsaco.patch b/pkgs/development/rocm-modules/5/rocprofiler/0000-dont-install-tests-hsaco.patch new file mode 100644 index 000000000000..aaa31c4974d5 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocprofiler/0000-dont-install-tests-hsaco.patch @@ -0,0 +1,15 @@ +diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt +index 8473a42..07ea873 100644 +--- a/test/CMakeLists.txt ++++ b/test/CMakeLists.txt +@@ -112,10 +112,6 @@ function(generate_hsaco TARGET_ID INPUT_FILE OUTPUT_FILE) + DEPENDS ${INPUT_FILE} clang + COMMENT "Building ${OUTPUT_FILE}..." + VERBATIM) +- install( +- FILES ${PROJECT_BINARY_DIR}/${OUTPUT_FILE} +- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests-v1 +- COMPONENT tests) + set(HSACO_TARGET_LIST + ${HSACO_TARGET_LIST} ${PROJECT_BINARY_DIR}/${OUTPUT_FILE} + PARENT_SCOPE) diff --git a/pkgs/development/rocm-modules/5/rocprofiler/0001-fix-shell-scripts.patch b/pkgs/development/rocm-modules/5/rocprofiler/0001-fix-shell-scripts.patch new file mode 100644 index 000000000000..aba7709c4edb --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocprofiler/0001-fix-shell-scripts.patch @@ -0,0 +1,111 @@ +diff --git a/bin/rocprofv2 b/bin/rocprofv2 +index 92f7489..8839d4d 100755 +--- a/bin/rocprofv2 ++++ b/bin/rocprofv2 +@@ -2,7 +2,8 @@ + set -eo pipefail + CURRENT_DIR="$(dirname -- "$0")" + ROCPROFV2_DIR=$(dirname -- $(realpath ${BASH_SOURCE[0]})) +-ROCM_DIR=$(dirname -- "$ROCPROFV2_DIR") ++ROCPROFILER_DIR=$(dirname -- "$ROCPROFV2_DIR") ++ROCM_DIR=@rocmtoolkit_merged@ + PLUGIN_LIST=("ctf" "perfetto" "file" "att") + RUN_FROM_BUILD=0 + if [[ $ROCPROFV2_DIR == *"/build"* ]]; then +@@ -10,7 +11,7 @@ if [[ $ROCPROFV2_DIR == *"/build"* ]]; then + ROCM_DIR=$ROCPROFV2_DIR + fi + +-export ROCPROFILER_METRICS_PATH=$ROCM_DIR/libexec/rocprofiler/counters/derived_counters.xml ++export ROCPROFILER_METRICS_PATH=$ROCPROFILER_DIR/libexec/rocprofiler/counters/derived_counters.xml + export LD_LIBRARY_PATH=$ROCM_DIR/lib:$LD_LIBRARY_PATH + + usage() { +@@ -70,8 +71,8 @@ while [ 1 ]; do + exit 1 + fi + elif [[ "$1" = "--list-counters" ]]; then +- export LD_PRELOAD=$LD_PRELOAD:$ROCM_DIR/lib/rocprofiler/librocprofiler_tool.so +- eval $ROCM_DIR/libexec/rocprofiler/ctrl ++ export LD_PRELOAD=$LD_PRELOAD:$ROCPROFILER_DIR/lib/rocprofiler/librocprofiler_tool.so ++ eval $ROCPROFILER_DIR/libexec/rocprofiler/ctrl + exit 1 + elif [[ "$1" = "-i" || "$1" = "--input" ]]; then + if [ $2 ] && [ -n $2 ] && [ -r $2 ]; then +@@ -171,7 +172,7 @@ while [ 1 ]; do + if [ $RUN_FROM_BUILD == 1 ]; then + ATT_PATH=$ROCM_DIR/plugin/att/att/att.py + else +- ATT_PATH=$ROCM_DIR/libexec/rocprofiler/att/att.py ++ ATT_PATH=$ROCPROFILER_DIR/libexec/rocprofiler/att/att.py + export ROCPROFV2_ATT_LIB_PATH=$ROCM_DIR/lib/hsa-amd-aqlprofile/librocprofv2_att.so + fi + ATT_ARGV=$3 +@@ -236,13 +237,13 @@ if [ -n "$PMC_LINES" ] && [ ! -n "$ATT_ARGV" ]; then + export OUTPUT_PATH=$FINAL_PATH + fi + let COUNTER=COUNTER+1 +- LD_PRELOAD=$LD_PRELOAD:$ROCM_DIR/lib/rocprofiler/librocprofiler_tool.so $* ++ LD_PRELOAD=$LD_PRELOAD:$ROCPROFILER_DIR/lib/rocprofiler/librocprofiler_tool.so $* + if [ -n "$OUTPUT_PATH" ]; then + echo -e "\nThe output path for the following counters: $OUTPUT_PATH" + fi + done + else +- LD_PRELOAD=$LD_PRELOAD:$ROCM_DIR/lib/rocprofiler/librocprofiler_tool.so $* ++ LD_PRELOAD=$LD_PRELOAD:$ROCPROFILER_DIR/lib/rocprofiler/librocprofiler_tool.so $* + fi + + get_pmc_results_txt_path() { +diff --git a/bin/rpl_run.sh b/bin/rpl_run.sh +index c1a3daa..bc868a5 100755 +--- a/bin/rpl_run.sh ++++ b/bin/rpl_run.sh +@@ -24,16 +24,17 @@ + + time_stamp=`date +%y%m%d_%H%M%S` + BIN_DIR=$(dirname $(realpath ${BASH_SOURCE[0]})) +-ROOT_DIR=$(dirname $BIN_DIR) ++ROCPROFILER_DIR=$(dirname $BIN_DIR) ++ROOT_DIR=@rocmtoolkit_merged@ + RUN_DIR=`pwd` + TMP_DIR="/tmp" + DATA_DIR="rpl_data_${time_stamp}_$$" + +-RPL_PATH=$ROOT_DIR/lib ++RPL_PATH=$ROCPROFILER_DIR/lib + TLIB_PATH=$RPL_PATH/rocprofiler + TTLIB_PATH=$ROOT_DIR/lib/roctracer + ROCM_LIB_PATH=$ROOT_DIR/lib +-PROF_BIN_DIR=$ROOT_DIR/libexec/rocprofiler ++PROF_BIN_DIR=$ROCPROFILER_DIR/libexec/rocprofiler + + if [ -z "$ROCP_PYTHON_VERSION" ] ; then + ROCP_PYTHON_VERSION=python3 +@@ -73,7 +74,7 @@ export ROCP_METRICS=$TLIB_PATH/metrics.xml + # Disable AQL-profile read API + export AQLPROFILE_READ_API=0 + # ROC Profiler package path +-export ROCP_PACKAGE_DIR=$ROOT_DIR ++export ROCP_PACKAGE_DIR=$ROCPROFILER_DIR + # enabled SPM KFD mode + export ROCP_SPM_KFD_MODE=1 + +@@ -350,7 +351,7 @@ convert_time_val() { + + ################################################################################################ + # main +-echo "RPL: on '$time_stamp' from '$ROOT_DIR' in '$RUN_DIR'" ++echo "RPL: on '$time_stamp' from '$ROCPROFILER_DIR' in '$RUN_DIR'" + # Parsing arguments + if [ -z "$1" ] ; then + usage +@@ -557,7 +558,7 @@ elif [ "$input_type" = "txt" -o "$input_type" = "none" ] ; then + else + echo "" > $RES_DIR/input.xml + fi +- input_list=`/bin/ls $RES_DIR/input*.xml` ++ input_list=`ls $RES_DIR/input*.xml` + export ROCPROFILER_SESS=$RES_DIR + else + fatal "Bad input file type '$INPUT_FILE'" diff --git a/pkgs/development/rocm-modules/5/rocprofiler/default.nix b/pkgs/development/rocm-modules/5/rocprofiler/default.nix new file mode 100644 index 000000000000..c544b3f226bb --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocprofiler/default.nix @@ -0,0 +1,136 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, symlinkJoin +, substituteAll +, cmake +, clang +, clr +, rocm-core +, rocm-thunk +, rocm-device-libs +, roctracer +, rocdbgapi +, rocm-smi +, hsa-amd-aqlprofile-bin +, numactl +, libpciaccess +, libxml2 +, elfutils +, mpi +, systemd +, gtest +, python3Packages +, gpuTargets ? clr.gpuTargets +}: + +let + rocmtoolkit-merged = symlinkJoin { + name = "rocmtoolkit-merged"; + + paths = [ + rocm-core + rocm-thunk + rocm-device-libs + roctracer + rocdbgapi + rocm-smi + hsa-amd-aqlprofile-bin + clr + ]; + + postBuild = '' + rm -rf $out/nix-support + ''; + }; +in stdenv.mkDerivation (finalAttrs: { + pname = "rocprofiler"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocprofiler"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-1s/7C9y+73ADLF/17Vepw0pZNVtYnKoP24GdwKc9X2Y="; + }; + + patches = [ + # These just simply won't build + ./0000-dont-install-tests-hsaco.patch + + # Fix bad paths + (substituteAll { + src = ./0001-fix-shell-scripts.patch; + rocmtoolkit_merged = rocmtoolkit-merged; + }) + ]; + + nativeBuildInputs = [ + cmake + clang + clr + python3Packages.lxml + python3Packages.cppheaderparser + python3Packages.pyyaml + python3Packages.barectf + ]; + + buildInputs = [ + numactl + libpciaccess + libxml2 + elfutils + mpi + systemd + gtest + ]; + + propagatedBuildInputs = [ rocmtoolkit-merged ]; + + cmakeFlags = [ + "-DCMAKE_MODULE_PATH=${clr}/lib/cmake/hip" + "-DHIP_ROOT_DIR=${clr}" + "-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ]; + + postPatch = '' + patchShebangs . + + substituteInPlace tests-v2/featuretests/profiler/CMakeLists.txt \ + --replace "--build-id=sha1" "--build-id=sha1 --rocm-path=${clr} --rocm-device-lib-path=${rocm-device-libs}/amdgcn/bitcode" + + substituteInPlace test/CMakeLists.txt \ + --replace "\''${ROCM_ROOT_DIR}/amdgcn/bitcode" "${rocm-device-libs}/amdgcn/bitcode" + ''; + + postInstall = '' + # Why do these not already have the executable bit set? + chmod +x $out/lib/rocprofiler/librocprof-tool.so + chmod +x $out/share/rocprofiler/tests-v1/test/ocl/SimpleConvolution + + # Why do these have the executable bit set? + chmod -x $out/libexec/rocprofiler/counters/basic_counters.xml + chmod -x $out/libexec/rocprofiler/counters/derived_counters.xml + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Profiling with perf-counters and derived metrics"; + homepage = "https://github.com/ROCm/rocprofiler"; + license = with licenses; [ mit ]; # mitx11 + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor clr.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocr-debug-agent/default.nix b/pkgs/development/rocm-modules/5/rocr-debug-agent/default.nix new file mode 100644 index 000000000000..67da17304b3d --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocr-debug-agent/default.nix @@ -0,0 +1,59 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, clr +, git +, rocdbgapi +, elfutils +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocr-debug-agent"; + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocr_debug_agent"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-AUDbNrFtUQ5Hm+uv5KMovh7P9wXQKLyRNx9gEQFnv6Y="; + }; + + nativeBuildInputs = [ + cmake + clr + git + ]; + + buildInputs = [ + rocdbgapi + elfutils + ]; + + cmakeFlags = [ + "-DCMAKE_MODULE_PATH=${clr}/lib/cmake/hip" + "-DHIP_ROOT_DIR=${clr}" + "-DHIP_PATH=${clr}" + ]; + + # Weird install target + postInstall = '' + rm -rf $out/src + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Library that provides some debugging functionality for ROCr"; + homepage = "https://github.com/ROCm/rocr_debug_agent"; + license = with licenses; [ ncsa ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocrand/default.nix b/pkgs/development/rocm-modules/5/rocrand/default.nix new file mode 100644 index 000000000000..5abdb3fafecb --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocrand/default.nix @@ -0,0 +1,88 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, clr +, gtest +, gbenchmark +, buildTests ? false +, buildBenchmarks ? false +, gpuTargets ? [ ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocrand"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocRAND"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-VrpiHlZZQH+IOoaEDuDOfRgnMiqm1bpRIuNyrPz2SGY="; + fetchSubmodules = true; # For inline hipRAND + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + ]; + + buildInputs = lib.optionals buildTests [ + gtest + ] ++ lib.optionals buildBenchmarks [ + gbenchmark + ]; + + cmakeFlags = [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + "-DHIP_ROOT_DIR=${clr}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildTests [ + "-DBUILD_TEST=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_BENCHMARK=ON" + ]; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/test_* $test/bin + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + mv $out/bin/benchmark_* $benchmark/bin + '' + lib.optionalString (buildTests || buildBenchmarks) '' + rmdir $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Generate pseudo-random and quasi-random numbers"; + homepage = "https://github.com/ROCm/rocRAND"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocsolver/default.nix b/pkgs/development/rocm-modules/5/rocsolver/default.nix new file mode 100644 index 000000000000..518aa798d49b --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocsolver/default.nix @@ -0,0 +1,100 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocblas +, rocsparse +, clr +, fmt +, gtest +, gfortran +, lapack-reference +, buildTests ? false +, buildBenchmarks ? false +, gpuTargets ? [ ] # gpuTargets = [ "gfx803" "gfx900" "gfx906:xnack-" ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocsolver"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocSOLVER"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-qxmjm4tgpCnfJ2SqUXndk6y0MsPJUKHvjv/3Uc0smr4="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + gfortran + ]; + + buildInputs = [ + rocblas + rocsparse + fmt + ] ++ lib.optionals buildTests [ + gtest + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + lapack-reference + ]; + + cmakeFlags = [ + "-DCMAKE_CXX_COMPILER=hipcc" + "-DCMAKE_CXX_FLAGS=-Wno-switch" # Way too many warnings + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildTests [ + "-DBUILD_CLIENTS_TESTS=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_CLIENTS_BENCHMARKS=ON" + ]; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/rocsolver-test $test/bin + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + mv $out/bin/rocsolver-bench $benchmark/bin + '' + lib.optionalString (buildTests || buildBenchmarks) '' + rmdir $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + requiredSystemFeatures = [ "big-parallel" ]; + + meta = with lib; { + description = "ROCm LAPACK implementation"; + homepage = "https://github.com/ROCm/rocSOLVER"; + license = with licenses; [ bsd2 ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + timeout = 14400; # 4 hours + maxSilent = 14400; # 4 hours + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocsparse/default.nix b/pkgs/development/rocm-modules/5/rocsparse/default.nix new file mode 100644 index 000000000000..07e2018b0287 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocsparse/default.nix @@ -0,0 +1,149 @@ +{ lib +, stdenv +, fetchFromGitHub +, fetchzip +, rocmUpdateScript +, cmake +, rocm-cmake +, rocprim +, clr +, gfortran +, git +, gtest +, boost +, python3Packages +, buildTests ? false +, buildBenchmarks ? false # Seems to depend on tests +, gpuTargets ? [ ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocsparse"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocSPARSE"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-30q9bqgZJUaNrkMXTAG+Z34yjsQ5DpJP+WBcCiEmF58="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + gfortran + ]; + + buildInputs = [ + rocprim + git + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + gtest + boost + python3Packages.python + python3Packages.pyyaml + ]; + + cmakeFlags = [ + "-DCMAKE_CXX_COMPILER=hipcc" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + "-DBUILD_CLIENTS_TESTS=ON" + "-DCMAKE_MATRICES_DIR=/build/source/matrices" + "-Dpython=python3" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_CLIENTS_BENCHMARKS=ON" + ]; + + # We have to manually generate the matrices + postPatch = lib.optionalString (buildTests || buildBenchmarks) '' + mkdir -p matrices + + ln -s ${finalAttrs.passthru.matrices.matrix-01}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-02}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-03}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-04}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-05}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-06}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-07}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-08}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-09}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-10}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-11}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-12}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-13}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-14}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-15}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-16}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-17}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-18}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-19}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-20}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-21}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-22}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-23}/*.mtx matrices + ln -s ${finalAttrs.passthru.matrices.matrix-24}/*.mtx matrices + + # Not used by the original cmake, causes an error + rm matrices/*_b.mtx + + echo "deps/convert.cpp -> deps/mtx2csr" + hipcc deps/convert.cpp -O3 -o deps/mtx2csr + + for mat in $(ls -1 matrices | cut -d "." -f 1); do + echo "mtx2csr: $mat.mtx -> $mat.csr" + deps/mtx2csr matrices/$mat.mtx matrices/$mat.csr + unlink matrices/$mat.mtx + done + ''; + + postInstall = lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + cp -a $out/bin/* $benchmark/bin + rm $benchmark/bin/rocsparse-test + '' + lib.optionalString (buildTests || buildBenchmarks) '' + mkdir -p $test/bin + mv $out/bin/* $test/bin + rm $test/bin/rocsparse-bench || true + mv /build/source/matrices $test + rmdir $out/bin + ''; + + passthru = { + matrices = import ./deps.nix { + inherit fetchzip; + mirror1 = "https://sparse.tamu.edu/MM"; + mirror2 = "https://www.cise.ufl.edu/research/sparse/MM"; + }; + + updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + }; + + meta = with lib; { + description = "ROCm SPARSE implementation"; + homepage = "https://github.com/ROCm/rocSPARSE"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocsparse/deps.nix b/pkgs/development/rocm-modules/5/rocsparse/deps.nix new file mode 100644 index 000000000000..cef880ab3232 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocsparse/deps.nix @@ -0,0 +1,222 @@ +{ fetchzip +, mirror1 +, mirror2 +}: + +{ + matrix-01 = fetchzip { + sha256 = "sha256-AHur5ZIDZTFRrO2GV0ieXrffq4KUiGWiZ59pv0fUtEQ="; + + urls = [ + "${mirror1}/SNAP/amazon0312.tar.gz" + "${mirror2}/SNAP/amazon0312.tar.gz" + ]; + }; + + matrix-02 = fetchzip { + sha256 = "sha256-0rSxaN4lQcdaCLsvlgicG70FXUxXeERPiEmQ4MzbRdE="; + + urls = [ + "${mirror1}/Muite/Chebyshev4.tar.gz" + "${mirror2}/Muite/Chebyshev4.tar.gz" + ]; + }; + + matrix-03 = fetchzip { + sha256 = "sha256-hDzDWDUnHEyFedX/tMNq83ZH8uWyM4xtZYUUAD3rizo="; + + urls = [ + "${mirror1}/FEMLAB/sme3Dc.tar.gz" + "${mirror2}/FEMLAB/sme3Dc.tar.gz" + ]; + }; + + matrix-04 = fetchzip { + sha256 = "sha256-GmN2yOt/MoX01rKe05aTyB3ypUP4YbQGOITZ0BqPmC0="; + + urls = [ + "${mirror1}/Williams/webbase-1M.tar.gz" + "${mirror2}/Williams/webbase-1M.tar.gz" + ]; + }; + + matrix-05 = fetchzip { + sha256 = "sha256-gQNjfVyWzNM9RwImJGhkhahRmZz74LzDs1oijL7mI7k="; + + urls = [ + "${mirror1}/Williams/mac_econ_fwd500.tar.gz" + "${mirror2}/Williams/mac_econ_fwd500.tar.gz" + ]; + }; + + matrix-06 = fetchzip { + sha256 = "sha256-87cdZjntNcTuz5BtO59irhcuRbPllWSbhCEX3Td02qc="; + + urls = [ + "${mirror1}/Williams/mc2depi.tar.gz" + "${mirror2}/Williams/mc2depi.tar.gz" + ]; + }; + + matrix-07 = fetchzip { + sha256 = "sha256-WRamuJX3D8Tm+k0q67RjUDG3DeNAxhKiaPkk5afY5eU="; + + urls = [ + "${mirror1}/Bova/rma10.tar.gz" + "${mirror2}/Bova/rma10.tar.gz" + ]; + }; + + matrix-08 = fetchzip { + sha256 = "sha256-5dhkm293Mc3lzakKxHy5W5XIn4Rw+gihVh7gyrjEHXo="; + + urls = [ + "${mirror1}/JGD_BIBD/bibd_22_8.tar.gz" + "${mirror2}/JGD_BIBD/bibd_22_8.tar.gz" + ]; + }; + + matrix-09 = fetchzip { + sha256 = "sha256-czjLWCjXAjZCk5TGYHaEkwSAzQu3TQ3QyB6eNKR4G88="; + + urls = [ + "${mirror1}/Hamm/scircuit.tar.gz" + "${mirror2}/Hamm/scircuit.tar.gz" + ]; + }; + + matrix-10 = fetchzip { + sha256 = "sha256-bYuLnJViAIcIejAkh69/bsNAVIDU4wfTLtD+nmHd6FM="; + + urls = [ + "${mirror1}/Sandia/ASIC_320k.tar.gz" + "${mirror2}/Sandia/ASIC_320k.tar.gz" + ]; + }; + + matrix-11 = fetchzip { + sha256 = "sha256-aDwn8P1khYjo2Agbq5m9ZBInJUxf/knJNvyptt0fak0="; + + urls = [ + "${mirror1}/GHS_psdef/bmwcra_1.tar.gz" + "${mirror2}/GHS_psdef/bmwcra_1.tar.gz" + ]; + }; + + matrix-12 = fetchzip { + sha256 = "sha256-8OJqA/byhlAZd869TPUzZFdsOiwOoRGfKyhM+RMjXoY="; + + urls = [ + "${mirror1}/HB/nos1.tar.gz" + "${mirror2}/HB/nos1.tar.gz" + ]; + }; + + matrix-13 = fetchzip { + sha256 = "sha256-FS0rKqmg+uHwsM/yGfQLBdd7LH/rUrdutkNGBD/Mh1I="; + + urls = [ + "${mirror1}/HB/nos2.tar.gz" + "${mirror2}/HB/nos2.tar.gz" + ]; + }; + + matrix-14 = fetchzip { + sha256 = "sha256-DANnlrNJikrI7Pst9vRedtbuxepyHmCIu2yhltc4Qcs="; + + urls = [ + "${mirror1}/HB/nos3.tar.gz" + "${mirror2}/HB/nos3.tar.gz" + ]; + }; + + matrix-15 = fetchzip { + sha256 = "sha256-21mUgqjWGUfYgiWwSrKh9vH8Vdt3xzcefmqYNYRpxiY="; + + urls = [ + "${mirror1}/HB/nos4.tar.gz" + "${mirror2}/HB/nos4.tar.gz" + ]; + }; + + matrix-16 = fetchzip { + sha256 = "sha256-FOuXvGqBBFNkVS6cexmkluret54hCfCOdK+DOZllE4c="; + + urls = [ + "${mirror1}/HB/nos5.tar.gz" + "${mirror2}/HB/nos5.tar.gz" + ]; + }; + + matrix-17 = fetchzip { + sha256 = "sha256-+7NI1rA/qQxYPpjXKHvAaCZ+LSaAJ4xuJvMRMBEUYxg="; + + urls = [ + "${mirror1}/HB/nos6.tar.gz" + "${mirror2}/HB/nos6.tar.gz" + ]; + }; + + matrix-18 = fetchzip { + sha256 = "sha256-q3NxJjbwGGcFiQ9nhWfUKgZmdVwCfPmgQoqy0AqOsNc="; + + urls = [ + "${mirror1}/HB/nos7.tar.gz" + "${mirror2}/HB/nos7.tar.gz" + ]; + }; + + matrix-19 = fetchzip { + sha256 = "sha256-0GAN6qmVfD+tprIigzuUUUwm5KVhkN9X65wMEvFltDY="; + + urls = [ + "${mirror1}/DNVS/shipsec1.tar.gz" + "${mirror2}/DNVS/shipsec1.tar.gz" + ]; + }; + + matrix-20 = fetchzip { + sha256 = "sha256-f28Du/Urxsiq5NkRmRO10Zz9vvGRjEchquzHzbZpZ7U="; + + urls = [ + "${mirror1}/Cote/mplate.tar.gz" + "${mirror2}/Cote/mplate.tar.gz" + ]; + }; + + matrix-21 = fetchzip { + sha256 = "sha256-O+Wy0NfCU1hVUOfNR1dJpvDHLBwwa301IRJDrQJnhak="; + + urls = [ + "${mirror1}/Bai/qc2534.tar.gz" + "${mirror2}/Bai/qc2534.tar.gz" + ]; + }; + + matrix-22 = fetchzip { + sha256 = "sha256-oxMnt8U5Cf1ILWcBdU6W9jdSMMm+U6bIVl8nm3n3+OA="; + + urls = [ + "${mirror1}/Chevron/Chevron2.tar.gz" + "${mirror2}/Chevron/Chevron2.tar.gz" + ]; + }; + + matrix-23 = fetchzip { + sha256 = "sha256-MFD9BxFI/3IS7yatW121BAI04fbqrXpgYDT5UKjeKcU="; + + urls = [ + "${mirror1}/Chevron/Chevron3.tar.gz" + "${mirror2}/Chevron/Chevron3.tar.gz" + ]; + }; + + matrix-24 = fetchzip { + sha256 = "sha256-ikS8O51pe1nt3BNyhvfvqCbVL0+bg/da9bqGqeBDkTg="; + + urls = [ + "${mirror1}/Chevron/Chevron4.tar.gz" + "${mirror2}/Chevron/Chevron4.tar.gz" + ]; + }; +} diff --git a/pkgs/development/rocm-modules/5/rocthrust/default.nix b/pkgs/development/rocm-modules/5/rocthrust/default.nix new file mode 100644 index 000000000000..bd03cc11d780 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocthrust/default.nix @@ -0,0 +1,87 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocprim +, clr +, gtest +, buildTests ? false +, buildBenchmarks ? false +, gpuTargets ? [ ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocthrust"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildTests [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocThrust"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-+bcHcA87IToTcII7N/hm81C/JiokJKj0M1yAph/x9Qc="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + rocprim + clr + ]; + + buildInputs = lib.optionals buildTests [ + gtest + ]; + + cmakeFlags = [ + "-DCMAKE_CXX_COMPILER=hipcc" + "-DHIP_ROOT_DIR=${clr}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildTests [ + "-DBUILD_TEST=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DBUILD_BENCHMARKS=ON" + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + "-DCMAKE_CXX_FLAGS=-Wno-deprecated-builtins" # Too much spam + ]; + + postInstall = lib.optionalString buildTests '' + mkdir -p $test/bin + mv $out/bin/{test_*,*.hip} $test/bin + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + mv $out/bin/benchmark_* $benchmark/bin + '' + lib.optionalString (buildTests || buildBenchmarks) '' + rm -rf $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "ROCm parallel algorithm library"; + homepage = "https://github.com/ROCm/rocThrust"; + license = with licenses; [ asl20 ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/roctracer/default.nix b/pkgs/development/rocm-modules/5/roctracer/default.nix new file mode 100644 index 000000000000..9270a273dcae --- /dev/null +++ b/pkgs/development/rocm-modules/5/roctracer/default.nix @@ -0,0 +1,103 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, clr +, rocm-device-libs +, libxml2 +, doxygen +, graphviz +, gcc-unwrapped +, libbacktrace +, rocm-runtime +, python3Packages +, buildDocs ? false # Nothing seems to be generated, so not making the output +, buildTests ? false +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "roctracer"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals buildDocs [ + "doc" + ] ++ lib.optionals buildTests [ + "test" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "roctracer"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-P6QYyAjMRwFFWKF8AhbrYGe+mYVJXdbBW1or6vcobYU="; + }; + + nativeBuildInputs = [ + cmake + clr + ] ++ lib.optionals buildDocs [ + doxygen + graphviz + ]; + + buildInputs = [ + libxml2 + libbacktrace + python3Packages.python + python3Packages.cppheaderparser + ]; + + cmakeFlags = [ + "-DCMAKE_MODULE_PATH=${clr}/hip/cmake" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ]; + + env.NIX_CFLAGS_COMPILE = toString [ + # Needed with GCC 12 + "-Wno-error=array-bounds" + ]; + + postPatch = '' + export HIP_DEVICE_LIB_PATH=${rocm-device-libs}/amdgcn/bitcode + '' + lib.optionalString (!buildTests) '' + substituteInPlace CMakeLists.txt \ + --replace "add_subdirectory(test)" "" + ''; + + # Tests always fail, probably need GPU + # doCheck = buildTests; + + postInstall = lib.optionalString buildDocs '' + mkdir -p $doc + '' + lib.optionalString buildTests '' + mkdir -p $test/bin + # Not sure why this is an install target + find $out/test -executable -type f -exec mv {} $test/bin \; + rm $test/bin/{*.sh,*.py} + patchelf --set-rpath $out/lib:${lib.makeLibraryPath ( + finalAttrs.buildInputs ++ [ clr gcc-unwrapped.lib rocm-runtime ])} $test/bin/* + rm -rf $out/test + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Tracer callback/activity library"; + homepage = "https://github.com/ROCm/roctracer"; + license = with licenses; [ mit ]; # mitx11 + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor clr.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rocwmma/0000-dont-fetch-googletest.patch b/pkgs/development/rocm-modules/5/rocwmma/0000-dont-fetch-googletest.patch new file mode 100644 index 000000000000..fa47a3c42249 --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocwmma/0000-dont-fetch-googletest.patch @@ -0,0 +1,35 @@ +diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt +index 0d00883..86ce282 100644 +--- a/test/CMakeLists.txt ++++ b/test/CMakeLists.txt +@@ -30,30 +30,6 @@ cmake_dependent_option( ROCWMMA_BUILD_VALIDATION_TESTS "Build validation tests" + cmake_dependent_option( ROCWMMA_BUILD_BENCHMARK_TESTS "Build benchmarking tests" OFF "ROCWMMA_BUILD_TESTS" OFF ) + cmake_dependent_option( ROCWMMA_BUILD_EXTENDED_TESTS "Build extended test parameter coverage" OFF "ROCWMMA_BUILD_TESTS" OFF ) + +-# Test/benchmark requires additional dependencies +-include( FetchContent ) +- +-FetchContent_Declare( +- googletest +- GIT_REPOSITORY https://github.com/google/googletest.git +- GIT_TAG release-1.12.1 +-) +-FetchContent_GetProperties(googletest) +-if(NOT googletest_POPULATED) +- +- # Fetch the content using default details +- FetchContent_Populate(googletest) +- # Save the shared libs setting, then force to static libs +- set(BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS}) +- set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries" FORCE) +- +- # Add gtest targets as static libs +- add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR}) +- +- # Restore shared libs setting +- set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE INTERNAL "Build SHARED libraries" FORCE) +-endif() +- + set(ROCWMMA_TEST_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}) + set(ROCWMMA_COMMON_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/hip_device.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/rocwmma_gtest_main.cpp) diff --git a/pkgs/development/rocm-modules/5/rocwmma/default.nix b/pkgs/development/rocm-modules/5/rocwmma/default.nix new file mode 100644 index 000000000000..f02859995bcc --- /dev/null +++ b/pkgs/development/rocm-modules/5/rocwmma/default.nix @@ -0,0 +1,105 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocm-smi +, clr +, openmp +, gtest +, rocblas +, buildTests ? false # Will likely fail building because wavefront shifts are not supported for certain archs +, buildExtendedTests ? false +, buildBenchmarks ? false +, buildSamples ? false +, gpuTargets ? [ ] # gpuTargets = [ "gfx908:xnack-" "gfx90a:xnack-" "gfx90a:xnack+" ... ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rocwmma"; + version = "5.7.1"; + + outputs = [ + "out" + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + "test" + ] ++ lib.optionals buildBenchmarks [ + "benchmark" + ] ++ lib.optionals buildSamples [ + "sample" + ]; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rocWMMA"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-0otJxgVYLwvVYIWT/hjrrpuSj5jslP1dbJRt6GUOrDs="; + }; + + patches = lib.optionals (buildTests || buildBenchmarks) [ + ./0000-dont-fetch-googletest.patch + ]; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + ]; + + buildInputs = [ + openmp + ] ++ lib.optionals (buildTests || buildBenchmarks) [ + rocm-smi + gtest + rocblas + ]; + + cmakeFlags = [ + "-DCMAKE_CXX_COMPILER=hipcc" + "-DROCWMMA_BUILD_TESTS=${if buildTests || buildBenchmarks then "ON" else "OFF"}" + "-DROCWMMA_BUILD_SAMPLES=${if buildSamples then "ON" else "OFF"}" + # Manually define CMAKE_INSTALL_ + # See: https://github.com/NixOS/nixpkgs/pull/197838 + "-DCMAKE_INSTALL_BINDIR=bin" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DCMAKE_INSTALL_INCLUDEDIR=include" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals buildExtendedTests [ + "-DROCWMMA_BUILD_EXTENDED_TESTS=ON" + ] ++ lib.optionals buildBenchmarks [ + "-DROCWMMA_BUILD_BENCHMARK_TESTS=ON" + "-DROCWMMA_BENCHMARK_WITH_ROCBLAS=ON" + ]; + + postInstall = lib.optionalString (buildTests || buildBenchmarks) '' + mkdir -p $test/bin + mv $out/bin/{*_test,*-validate} $test/bin + '' + lib.optionalString buildBenchmarks '' + mkdir -p $benchmark/bin + mv $out/bin/*-bench $benchmark/bin + '' + lib.optionalString buildSamples '' + mkdir -p $sample/bin + mv $out/bin/sgemmv $sample/bin + mv $out/bin/simple_gemm $sample/bin + mv $out/bin/simple_dlrm $sample/bin + '' + lib.optionalString (buildTests || buildBenchmarks || buildSamples) '' + rm -rf $out/bin + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Mixed precision matrix multiplication and accumulation"; + homepage = "https://github.com/ROCm/rocWMMA"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/rpp/default.nix b/pkgs/development/rocm-modules/5/rpp/default.nix new file mode 100644 index 000000000000..45079c6d62cc --- /dev/null +++ b/pkgs/development/rocm-modules/5/rpp/default.nix @@ -0,0 +1,88 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, cmake +, rocm-cmake +, rocm-docs-core +, half +, clr +, openmp +, boost +, python3Packages +, buildDocs ? false # Needs internet +, useOpenCL ? false +, useCPU ? false +, gpuTargets ? [ ] +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "rpp-" + ( + if (!useOpenCL && !useCPU) then "hip" + else if (!useOpenCL && !useCPU) then "opencl" + else "cpu" + ); + + version = "5.7.1"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "rpp"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-s6ODmxPBLpR5f8VALaW6F0p0rZSxSd2LH2+60SEfLCk="; + }; + + nativeBuildInputs = [ + cmake + rocm-cmake + clr + ] ++ lib.optionals buildDocs [ + rocm-docs-core + python3Packages.python + ]; + + buildInputs = [ + half + openmp + boost + ]; + + cmakeFlags = [ + "-DROCM_PATH=${clr}" + ] ++ lib.optionals (gpuTargets != [ ]) [ + "-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" + ] ++ lib.optionals (!useOpenCL && !useCPU) [ + "-DCMAKE_C_COMPILER=hipcc" + "-DCMAKE_CXX_COMPILER=hipcc" + "-DBACKEND=HIP" + ] ++ lib.optionals (useOpenCL && !useCPU) [ + "-DBACKEND=OCL" + ] ++ lib.optionals useCPU [ + "-DBACKEND=CPU" + ]; + + postPatch = lib.optionalString (!useOpenCL && !useCPU) '' + # Bad path + substituteInPlace CMakeLists.txt \ + --replace "COMPILER_FOR_HIP \''${ROCM_PATH}/llvm/bin/clang++" "COMPILER_FOR_HIP ${clr}/bin/hipcc" + ''; + + postBuild = lib.optionalString buildDocs '' + python3 -m sphinx -T -E -b html -d _build/doctrees -D language=en ../docs _build/html + ''; + + passthru.updateScript = rocmUpdateScript { + name = finalAttrs.pname; + owner = finalAttrs.src.owner; + repo = finalAttrs.src.repo; + }; + + meta = with lib; { + description = "Comprehensive high-performance computer vision library for AMD processors"; + homepage = "https://github.com/ROCm/rpp"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + }; +}) diff --git a/pkgs/development/rocm-modules/5/tensile/default.nix b/pkgs/development/rocm-modules/5/tensile/default.nix new file mode 100644 index 000000000000..7f1e64422668 --- /dev/null +++ b/pkgs/development/rocm-modules/5/tensile/default.nix @@ -0,0 +1,65 @@ +{ lib +, stdenv +, fetchFromGitHub +, rocmUpdateScript +, buildPythonPackage +, pytestCheckHook +, setuptools +, pyyaml +, msgpack +, pandas +, joblib +, filelock +, rocminfo +}: + +buildPythonPackage rec { + pname = "tensile"; + version = "5.7.1"; + format = "pyproject"; + + src = fetchFromGitHub { + owner = "ROCm"; + repo = "Tensile"; + rev = "rocm-${version}"; + hash = "sha256-CyPGiM/53duJc/oNtOsl6JSsl9uOOYm5R7O6YXaVOm4="; + }; + + buildInputs = [ setuptools ]; + + propagatedBuildInputs = [ + pyyaml + msgpack + pandas + joblib + ]; + + doCheck = false; # Too many errors, not sure how to set this up properly + + nativeCheckInputs = [ + pytestCheckHook + filelock + rocminfo + ]; + + preCheck = '' + export ROCM_PATH=${rocminfo} + ''; + + pythonImportsCheck = [ "Tensile" ]; + + passthru.updateScript = rocmUpdateScript { + name = pname; + owner = src.owner; + repo = src.repo; + }; + + meta = with lib; { + description = "GEMMs and tensor contractions"; + homepage = "https://github.com/ROCm/Tensile"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor version != versions.minor stdenv.cc.version || versionAtLeast version "6.0.0"; + }; +} diff --git a/pkgs/development/rocm-modules/5/update.nix b/pkgs/development/rocm-modules/5/update.nix new file mode 100644 index 000000000000..ebf21b8f15a7 --- /dev/null +++ b/pkgs/development/rocm-modules/5/update.nix @@ -0,0 +1,37 @@ +{ lib +, writeScript +}: + +{ name ? "" +, owner ? "" +, repo ? "" +, page ? "releases/latest" +, filter ? ".tag_name | split(\"-\") | .[1]" +}: + +let + pname = + if lib.hasPrefix "rocm-llvm-" name + then "llvm.${lib.removePrefix "rocm-llvm-" name}" + else name; + + updateScript = writeScript "update.sh" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p curl jq common-updater-scripts + version="$(curl ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \ + -sL "https://api.github.com/repos/${owner}/${repo}/${page}" | jq '${filter}' --raw-output)" + + IFS='.' read -a version_arr <<< "$version" + + if (( ''${version_arr[0]} > 5 )); then + echo "'rocmPackages_5.${pname}' is already at it's maximum allowed version.''\nAny further upgrades should go into 'rocmPackages_X.${pname}'." 1>&2 + exit 1 + fi + + if [ "''${#version_arr[*]}" == 2 ]; then + version="''${version}.0" + fi + + update-source-version rocmPackages_5.${pname} "$version" --ignore-same-hash + ''; +in [ updateScript ] From 9fe4830c7d51533621e2c2f69cf6ecb4e052d938 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 10 Feb 2024 18:57:07 +0100 Subject: [PATCH 03/32] rocmPackages: introduce separate package sets for version 5 and 6 I am not sure for how long we should keep this, but maybe keeping it for a bit helps if version 6 breaks stuff, even outside of nixpkgs, and then get rid of it again. --- pkgs/top-level/all-packages.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 3a906641326c..392d69997da5 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7699,8 +7699,9 @@ with pkgs; rar2fs = callPackage ../tools/filesystems/rar2fs { }; - rocmPackages = rocmPackages_5; + rocmPackages = rocmPackages_6; rocmPackages_5 = recurseIntoAttrs (callPackage ../development/rocm-modules/5 { }); + rocmPackages_6 = recurseIntoAttrs (callPackage ../development/rocm-modules/6 { }); rune = callPackage ../development/interpreters/rune { }; From e68d1f513b1c3e86e1d759bdd8caed87d512f29b Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 10 Feb 2024 00:30:24 +0100 Subject: [PATCH 04/32] rocmPackages: remove version checks from update scripts The update script for hsa-amd-aqlprofile-bin did not work. It fails to update the source URL and hash. --- .../rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix | 5 ----- pkgs/development/rocm-modules/6/update.nix | 5 ----- 2 files changed, 10 deletions(-) diff --git a/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix index bbde07ae9a98..881f3706b946 100644 --- a/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix +++ b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix @@ -39,11 +39,6 @@ let version="$(echo $extVersion | sed "s/0/./1" | sed "s/0/./1")" IFS='.' read -a version_arr <<< "$version" - if (( ''${version_arr[0]} > 5 )); then - echo "'rocmPackages_5.${prefix}-bin' is already at it's maximum allowed version.''\nAny further upgrades should go into 'rocmPackages_X.${prefix}-bin'." 1>&2 - exit 1 - fi - if (( ''${#extVersion} == 5 )); then repoVersion="$version" diff --git a/pkgs/development/rocm-modules/6/update.nix b/pkgs/development/rocm-modules/6/update.nix index ebf21b8f15a7..e20697675c11 100644 --- a/pkgs/development/rocm-modules/6/update.nix +++ b/pkgs/development/rocm-modules/6/update.nix @@ -23,11 +23,6 @@ let IFS='.' read -a version_arr <<< "$version" - if (( ''${version_arr[0]} > 5 )); then - echo "'rocmPackages_5.${pname}' is already at it's maximum allowed version.''\nAny further upgrades should go into 'rocmPackages_X.${pname}'." 1>&2 - exit 1 - fi - if [ "''${#version_arr[*]}" == 2 ]; then version="''${version}.0" fi From 96359faa58c401cc2b639582a666f9b3e536c843 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 10 Feb 2024 18:59:55 +0100 Subject: [PATCH 05/32] rocmPackages: auto-update using nix-update Some package updates needed manual fixing, because they would prepend 'rocm-' to their version string. --- pkgs/development/rocm-modules/6/clr/default.nix | 4 ++-- pkgs/development/rocm-modules/6/composable_kernel/default.nix | 4 ++-- pkgs/development/rocm-modules/6/half/default.nix | 4 ++-- pkgs/development/rocm-modules/6/hip-common/default.nix | 4 ++-- pkgs/development/rocm-modules/6/hipblas/default.nix | 4 ++-- pkgs/development/rocm-modules/6/hipcc/default.nix | 4 ++-- pkgs/development/rocm-modules/6/hipcub/default.nix | 4 ++-- pkgs/development/rocm-modules/6/hipfft/default.nix | 4 ++-- pkgs/development/rocm-modules/6/hipfort/default.nix | 4 ++-- pkgs/development/rocm-modules/6/hipify/default.nix | 4 ++-- pkgs/development/rocm-modules/6/hipsolver/default.nix | 4 ++-- pkgs/development/rocm-modules/6/hipsparse/default.nix | 4 ++-- pkgs/development/rocm-modules/6/migraphx/default.nix | 4 ++-- pkgs/development/rocm-modules/6/mivisionx/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rccl/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rdc/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocalution/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocblas/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocdbgapi/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocfft/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocgdb/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocm-cmake/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocm-comgr/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocm-core/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocm-device-libs/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocm-runtime/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocm-smi/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocm-thunk/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocminfo/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocmlir/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocprim/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocprofiler/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocrand/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocsolver/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocsparse/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocthrust/default.nix | 4 ++-- pkgs/development/rocm-modules/6/roctracer/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rocwmma/default.nix | 4 ++-- pkgs/development/rocm-modules/6/rpp/default.nix | 4 ++-- pkgs/development/rocm-modules/6/tensile/default.nix | 4 ++-- 41 files changed, 82 insertions(+), 82 deletions(-) diff --git a/pkgs/development/rocm-modules/6/clr/default.nix b/pkgs/development/rocm-modules/6/clr/default.nix index 3fcd551cd423..5357c6c2ef75 100644 --- a/pkgs/development/rocm-modules/6/clr/default.nix +++ b/pkgs/development/rocm-modules/6/clr/default.nix @@ -35,7 +35,7 @@ let ]; in stdenv.mkDerivation (finalAttrs: { pname = "clr"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -46,7 +46,7 @@ in stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "clr"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-1gZJhvBbUFdKH9p/7SRfzEV/fM+gIN2Qvlxf2VbmAIw="; + hash = "sha256-ZMpA7vCW2CcpGdBLZfPimMHcgjhN1PHuewJiYwZMgGY="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/composable_kernel/default.nix b/pkgs/development/rocm-modules/6/composable_kernel/default.nix index 78416b77a07b..6034c1f782df 100644 --- a/pkgs/development/rocm-modules/6/composable_kernel/default.nix +++ b/pkgs/development/rocm-modules/6/composable_kernel/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "composable_kernel"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -29,7 +29,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "composable_kernel"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-Z9X+S2SijGJ8bhr9ghkkWicBUzLzs9fxPpqZxX6BBM4="; + hash = "sha256-NCqMganmNyQfz3X+KQOrfrimnrgd3HbAGK5DeC4+J+o="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/half/default.nix b/pkgs/development/rocm-modules/6/half/default.nix index 400ab5088598..be73ddcc472c 100644 --- a/pkgs/development/rocm-modules/6/half/default.nix +++ b/pkgs/development/rocm-modules/6/half/default.nix @@ -8,13 +8,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "half"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "half"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-82It+/wm8+umBdQYn7lz/fS69h+f0mzwPdGxoJNYUq0="; + hash = "sha256-wvl8ny7pbY9hUGGtJ70R7/4YIsahgI7qcVzUnxmUfZM="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/hip-common/default.nix b/pkgs/development/rocm-modules/6/hip-common/default.nix index 2687b587dbde..2d6a0452fe0e 100644 --- a/pkgs/development/rocm-modules/6/hip-common/default.nix +++ b/pkgs/development/rocm-modules/6/hip-common/default.nix @@ -6,13 +6,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "hip-common"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "HIP"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-1Abit9qZCwrCVcnaFT4uMygFB9G6ovRasLmTsOsJ/Fw="; + hash = "sha256-51u3By0R4LKoWiklNacFP6HILL845jxpN6FD7rQB+zQ="; }; dontConfigure = true; diff --git a/pkgs/development/rocm-modules/6/hipblas/default.nix b/pkgs/development/rocm-modules/6/hipblas/default.nix index a59543d653a4..c90f643f90b0 100644 --- a/pkgs/development/rocm-modules/6/hipblas/default.nix +++ b/pkgs/development/rocm-modules/6/hipblas/default.nix @@ -18,7 +18,7 @@ # Can also use cuBLAS stdenv.mkDerivation (finalAttrs: { pname = "hipblas"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -34,7 +34,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "hipBLAS"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-abaEZN82dsoEC5gIF3/6epRDVz5ItUo6CkZsybu/G+g="; + hash = "sha256-Fq7o2sMmHlHIv9UKJw+u/h9K/ZhKVJWwosYTdYIsscA="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/hipcc/default.nix b/pkgs/development/rocm-modules/6/hipcc/default.nix index 63e6e4fb577d..62452239fc4e 100644 --- a/pkgs/development/rocm-modules/6/hipcc/default.nix +++ b/pkgs/development/rocm-modules/6/hipcc/default.nix @@ -8,13 +8,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "hipcc"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "HIPCC"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-lJX6nF1V4YmK5ai7jivXlRnG3doIOf6X9CWLHVdRuVg="; + hash = "sha256-/LRQN+RSMBPk2jS/tdp3psUL/B0RJZQhRri7e67KsG4="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/rocm-modules/6/hipcub/default.nix b/pkgs/development/rocm-modules/6/hipcub/default.nix index ede46ccfbd57..b14205d37ad9 100644 --- a/pkgs/development/rocm-modules/6/hipcub/default.nix +++ b/pkgs/development/rocm-modules/6/hipcub/default.nix @@ -16,7 +16,7 @@ # CUB can also be used as a backend instead of rocPRIM. stdenv.mkDerivation (finalAttrs: { pname = "hipcub"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -30,7 +30,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "hipCUB"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-ygBEA3NuCQ13QrSzGqyWXkx8Dy9WhR3u4syzapRTkFU="; + hash = "sha256-8QzVgj0JSb86zEG3sj5AAt9pG3frw+xrjEOTo7xCIrc="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/hipfft/default.nix b/pkgs/development/rocm-modules/6/hipfft/default.nix index 44d1475f6877..3da9c559f326 100644 --- a/pkgs/development/rocm-modules/6/hipfft/default.nix +++ b/pkgs/development/rocm-modules/6/hipfft/default.nix @@ -21,7 +21,7 @@ # Can also use cuFFT stdenv.mkDerivation (finalAttrs: { pname = "hipfft"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -37,7 +37,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "hipFFT"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-fuYRKdlTrRMwxr3cgMeT3YniPzs4nuvF8YCzr3LLPFM="; + hash = "sha256-DjjNQryJdl7RmaMQRQPWkleweEWMIwH/xXU84GGjoC0="; fetchSubmodules = true; }; diff --git a/pkgs/development/rocm-modules/6/hipfort/default.nix b/pkgs/development/rocm-modules/6/hipfort/default.nix index 092c6e758195..776ac3938a49 100644 --- a/pkgs/development/rocm-modules/6/hipfort/default.nix +++ b/pkgs/development/rocm-modules/6/hipfort/default.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "hipfort"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "hipfort"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-DRjUWhdinDKP7CZgq2SmU3lGmmodCuXvco9aEeMLSZ4="; + hash = "sha256-3PIqSDyDlY0oVSEx20EPlKGYNkc9xPZtIG3Sbw69esE="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/hipify/default.nix b/pkgs/development/rocm-modules/6/hipify/default.nix index 281ad02d5dfc..36328a643fe9 100644 --- a/pkgs/development/rocm-modules/6/hipify/default.nix +++ b/pkgs/development/rocm-modules/6/hipify/default.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "hipify"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "HIPIFY"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-lCQ2VTUGmFC90Xu70/tvoeDhFaInGqLT3vC2A1UojNI="; + hash = "sha256-nNyWrPPhUwT7FyASzc3kf5NCTzeqvHybVOc+6hBzkA4="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/rocm-modules/6/hipsolver/default.nix b/pkgs/development/rocm-modules/6/hipsolver/default.nix index ab4b60ef2c35..77fa7f178ffa 100644 --- a/pkgs/development/rocm-modules/6/hipsolver/default.nix +++ b/pkgs/development/rocm-modules/6/hipsolver/default.nix @@ -18,7 +18,7 @@ # Can also use cuSOLVER stdenv.mkDerivation (finalAttrs: { pname = "hipsolver"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -34,7 +34,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "hipSOLVER"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-5b6kPj9yvXvP7f7AyHDTYRoM/EhQZvwkVCfDflFJugc="; + hash = "sha256-iMfaOv4TdTkmaRHCZOuqUfjO081J6on71+s8nIwwV00="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/hipsparse/default.nix b/pkgs/development/rocm-modules/6/hipsparse/default.nix index 9e3046223173..cf0cc94ba82a 100644 --- a/pkgs/development/rocm-modules/6/hipsparse/default.nix +++ b/pkgs/development/rocm-modules/6/hipsparse/default.nix @@ -18,7 +18,7 @@ # This can also use cuSPARSE as a backend instead of rocSPARSE stdenv.mkDerivation (finalAttrs: { pname = "hipsparse"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -32,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "hipSPARSE"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-txigaOoZMI/v+EQLgGlj2O0IHfE7EpgjL0cyv49nKzo="; + hash = "sha256-fi5b0IF++OiezpM3JuUkhwpmW2apeFH4r5g6CcFseNY="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/migraphx/default.nix b/pkgs/development/rocm-modules/6/migraphx/default.nix index 006a5ca9990b..8c1f836ba4bf 100644 --- a/pkgs/development/rocm-modules/6/migraphx/default.nix +++ b/pkgs/development/rocm-modules/6/migraphx/default.nix @@ -48,7 +48,7 @@ let ])); in stdenv.mkDerivation (finalAttrs: { pname = "migraphx"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -62,7 +62,7 @@ in stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "AMDMIGraphX"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-lg3pxHBpwqxBvdOQgE44YKLuumhkVF6b3Xx4+cw7jNQ="; + hash = "sha256-VDYUSpWYAdJ63SKVCO26DVAC3RtZM7otqN0sYUA6DBQ="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/mivisionx/default.nix b/pkgs/development/rocm-modules/6/mivisionx/default.nix index 39fd4f5b76e3..98e1f0e1e72f 100644 --- a/pkgs/development/rocm-modules/6/mivisionx/default.nix +++ b/pkgs/development/rocm-modules/6/mivisionx/default.nix @@ -38,13 +38,13 @@ stdenv.mkDerivation (finalAttrs: { else "cpu" ); - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "MIVisionX"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-jmOgwESNALQt7ctmUY9JHgKq47tCwsW1ybynkX9236U="; + hash = "sha256-d32lcJq24MXeIWbNbo6putWaol5kF2io6cz4ZuL+DbE="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rccl/default.nix b/pkgs/development/rocm-modules/6/rccl/default.nix index b80b96ac403a..77b3233c96c8 100644 --- a/pkgs/development/rocm-modules/6/rccl/default.nix +++ b/pkgs/development/rocm-modules/6/rccl/default.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "rccl"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rccl"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-nFkou/kjGBmImorlPOZNTlCrxbfAYpDhgRveyoAufu8="; + hash = "sha256-Oyml47yGEB7fALxBcDjqFngS38cnI39sDj94/JV7wE0="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rdc/default.nix b/pkgs/development/rocm-modules/6/rdc/default.nix index 3ef5a200ea1a..914ed87e7ce6 100644 --- a/pkgs/development/rocm-modules/6/rdc/default.nix +++ b/pkgs/development/rocm-modules/6/rdc/default.nix @@ -40,7 +40,7 @@ let ])); in stdenv.mkDerivation (finalAttrs: { pname = "rdc"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -54,7 +54,7 @@ in stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rdc"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-xZD/WI/LfNtKK9j6ZjuU0OTTFZz3G4atyD5mVcSsQ8A="; + hash = "sha256-QugcajxILmDeQiWG5uAUO41Wut45irg2Ynufgn1bmps="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocalution/default.nix b/pkgs/development/rocm-modules/6/rocalution/default.nix index 11f52ea1318c..4ba656f47b74 100644 --- a/pkgs/development/rocm-modules/6/rocalution/default.nix +++ b/pkgs/development/rocm-modules/6/rocalution/default.nix @@ -21,7 +21,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocalution"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -37,7 +37,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rocALUTION"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-+UGpFuZsC4+kmo8LWZWC2YoFJSdTukjN47e1YqW5Zu4="; + hash = "sha256-mrN+CI2mqaMi8oKxui7HAIE2qSn50aNaFipkWwYMtbc="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocblas/default.nix b/pkgs/development/rocm-modules/6/rocblas/default.nix index bd8a4ed4e35d..af21f5acd5d5 100644 --- a/pkgs/development/rocm-modules/6/rocblas/default.nix +++ b/pkgs/development/rocm-modules/6/rocblas/default.nix @@ -73,7 +73,7 @@ let fallbacks = rocblas.overrideAttrs { pname = "rocblas-tensile-fallbacks"; }; in stdenv.mkDerivation (finalAttrs: { pname = "rocblas"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -87,7 +87,7 @@ in stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rocBLAS"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-3wKnwvAra8u9xqlC05wUD+gSoBILTVJFU2cIV6xv3Lk="; + hash = "sha256-G68d/gvBbTdNx8xR3xY+OkBm5Yxq1NFjxby9BbpOcUk="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocdbgapi/default.nix b/pkgs/development/rocm-modules/6/rocdbgapi/default.nix index fd6797d0d43b..d8ad372683c0 100644 --- a/pkgs/development/rocm-modules/6/rocdbgapi/default.nix +++ b/pkgs/development/rocm-modules/6/rocdbgapi/default.nix @@ -37,7 +37,7 @@ let ])); in stdenv.mkDerivation (finalAttrs: { pname = "rocdbgapi"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -49,7 +49,7 @@ in stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "ROCdbgapi"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-qMXvgcS61lgcylz62ErYq8fhpYIR31skQEeKUryuP1w="; + hash = "sha256-+CxaTmxRt/RicqQddqIEHs8vvAPCMKXkWg7kbZvnUsQ="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocfft/default.nix b/pkgs/development/rocm-modules/6/rocfft/default.nix index 48f3264d157f..8302d7f856ac 100644 --- a/pkgs/development/rocm-modules/6/rocfft/default.nix +++ b/pkgs/development/rocm-modules/6/rocfft/default.nix @@ -19,13 +19,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocfft"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "rocFFT"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-GZSi03geTT+NUztBWhGYyghLqJGsFjUQzVAKQ7d03uA="; + hash = "sha256-6Gjsy14GeR08VqnNmFhu8EyYDnQ+VZRlg+u9MAAWfHc="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocgdb/default.nix b/pkgs/development/rocm-modules/6/rocgdb/default.nix index a02ad3f9e8f2..456c47cb5dbb 100644 --- a/pkgs/development/rocm-modules/6/rocgdb/default.nix +++ b/pkgs/development/rocm-modules/6/rocgdb/default.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocgdb"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "ROCgdb"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-TlT7vvTrVd7P6ilVnWIG5VIrjTleFgDezK/mudBV+xE="; + hash = "sha256-XeX/k8gfo9HgcUSIjs35C7IqCmFhvBOqQJSOoPF6HK4="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocm-cmake/default.nix b/pkgs/development/rocm-modules/6/rocm-cmake/default.nix index c0d7e48ff59f..128ad882ccac 100644 --- a/pkgs/development/rocm-modules/6/rocm-cmake/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-cmake/default.nix @@ -7,13 +7,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocm-cmake"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "rocm-cmake"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-aVjzuJ4BiSfwOdjufFc5CznfnL8di5h992zl+pzD0DU="; + hash = "sha256-qSjWT0KOQ5oDV06tfnKN+H/JzdoOnR9KY0c+SjvDepM="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/rocm-modules/6/rocm-comgr/default.nix b/pkgs/development/rocm-modules/6/rocm-comgr/default.nix index 1ef226b338c4..86a3c7da65d6 100644 --- a/pkgs/development/rocm-modules/6/rocm-comgr/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-comgr/default.nix @@ -15,13 +15,13 @@ let else throw "Unsupported ROCm LLVM platform"; in stdenv.mkDerivation (finalAttrs: { pname = "rocm-comgr"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "ROCm-CompilerSupport"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-QB3G0V92UTW67hD6+zSuExN1+eMT820iYSlMyZeWSFw="; + hash = "sha256-9HuNU/k+kPJMlzqOTM20gm6SAOWJe9tpAZXEj4erdmI="; }; sourceRoot = "${finalAttrs.src.name}/lib/comgr"; diff --git a/pkgs/development/rocm-modules/6/rocm-core/default.nix b/pkgs/development/rocm-modules/6/rocm-core/default.nix index c96bfeb0d295..401cda62c720 100644 --- a/pkgs/development/rocm-modules/6/rocm-core/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-core/default.nix @@ -7,13 +7,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocm-core"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "rocm-core"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-jFAHLqf/AR27Nbuq8aypWiKqApNcTgG5LWESVjVCKIg="; + hash = "sha256-sgL1UMt3o01zA8v41dyCG1fAsK/PkTRsHQJOvlNatZ4="; }; nativeBuildInputs = [ cmake ]; diff --git a/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix b/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix index 28af3e960266..aa1139ff8d9e 100644 --- a/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix @@ -14,13 +14,13 @@ let else throw "Unsupported ROCm LLVM platform"; in stdenv.mkDerivation (finalAttrs: { pname = "rocm-device-libs"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "ROCm-Device-Libs"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-ARxs/yqyVoIUWliJkINzitumF+64/5u3fbB0tHB5hPU="; + hash = "sha256-7XG7oSkJ3EPWTYGea0I50eB1/DPMD5agmjctxZYTbLQ="; }; patches = [ ./cmake.patch ]; diff --git a/pkgs/development/rocm-modules/6/rocm-runtime/default.nix b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix index f94f49d00bd4..aa9b147c61d1 100644 --- a/pkgs/development/rocm-modules/6/rocm-runtime/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocm-runtime"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "ROCR-Runtime"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-D7Ahan5cxDhqPtV5iDDNys0A4FlxQ9oVRa2EeMoY5Qk="; + hash = "sha256-xNMG954HI9SOfvYYB/62fhmm9mmR4I10uHP2nqn9EgI="; }; sourceRoot = "${finalAttrs.src.name}/src"; diff --git a/pkgs/development/rocm-modules/6/rocm-smi/default.nix b/pkgs/development/rocm-modules/6/rocm-smi/default.nix index 91b730f03b37..f2d276534e11 100644 --- a/pkgs/development/rocm-modules/6/rocm-smi/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-smi/default.nix @@ -8,13 +8,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocm-smi"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "rocm_smi_lib"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-NZR4jBgKVfpkRNQFPmav1yCZF872LkcrPBNNcBVTLDU="; + hash = "sha256-fS52hpTv1WEycwkGZLXjz383WJWzyk8RvJRshEQSG/A="; }; patches = [ ./cmake.patch ]; diff --git a/pkgs/development/rocm-modules/6/rocm-thunk/default.nix b/pkgs/development/rocm-modules/6/rocm-thunk/default.nix index f610f8a0d53a..f1f8d8dc8806 100644 --- a/pkgs/development/rocm-modules/6/rocm-thunk/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-thunk/default.nix @@ -10,13 +10,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocm-thunk"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "ROCT-Thunk-Interface"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-jAMBks2/JaXiA45B3qvLHY8fPeFcr1GHT5Jieuduqhw="; + hash = "sha256-F6Qi+A9DuSx2e4WSfp4cnniKr0CkCZcZqsKwQmmZHhk="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocminfo/default.nix b/pkgs/development/rocm-modules/6/rocminfo/default.nix index addbad038b94..2299021ddacb 100644 --- a/pkgs/development/rocm-modules/6/rocminfo/default.nix +++ b/pkgs/development/rocm-modules/6/rocminfo/default.nix @@ -18,14 +18,14 @@ }: stdenv.mkDerivation (finalAttrs: { - version = "5.7.1"; + version = "6.0.2"; pname = "rocminfo"; src = fetchFromGitHub { owner = "ROCm"; repo = "rocminfo"; rev = "rocm-${finalAttrs.version}"; - sha256 = "sha256-UzOo2qDT/uM+vdGdBM4pV5e143mfa+/6sZLBExOO26g="; + sha256 = "sha256-k0QeCyQcarGbAh4ft8Y7JBK6l2nWxDUc20XoYmtrMMs="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocmlir/default.nix b/pkgs/development/rocm-modules/6/rocmlir/default.nix index 73dbbf8f95f8..4c85e21090f1 100644 --- a/pkgs/development/rocm-modules/6/rocmlir/default.nix +++ b/pkgs/development/rocm-modules/6/rocmlir/default.nix @@ -32,7 +32,7 @@ let else throw "Unsupported ROCm LLVM platform"; in stdenv.mkDerivation (finalAttrs: { pname = "rocmlir${suffix}"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -44,7 +44,7 @@ in stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rocMLIR"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-vPi4UVljohVAfnwDVQqeOVaJPa6v8aV5uBOtqLddTtc="; + hash = "sha256-AypY0vL8Ij1zLycwpG2EPWWl4utp4ejXpAK0Jj/UvrA="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocprim/default.nix b/pkgs/development/rocm-modules/6/rocprim/default.nix index 398d1d5509cf..e9e00dd5ef57 100644 --- a/pkgs/development/rocm-modules/6/rocprim/default.nix +++ b/pkgs/development/rocm-modules/6/rocprim/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocprim"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rocPRIM"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-+ukFWsWv3RhS+Z6tmR4TRT8QTYEDuAEk12F9Gv1eXGU="; + hash = "sha256-nWvq26qRPZ6Au1rc5cR74TKArcdUFg7O9djFi8SvMeM="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocprofiler/default.nix b/pkgs/development/rocm-modules/6/rocprofiler/default.nix index c544b3f226bb..ceb0a54912df 100644 --- a/pkgs/development/rocm-modules/6/rocprofiler/default.nix +++ b/pkgs/development/rocm-modules/6/rocprofiler/default.nix @@ -46,13 +46,13 @@ let }; in stdenv.mkDerivation (finalAttrs: { pname = "rocprofiler"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "rocprofiler"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-1s/7C9y+73ADLF/17Vepw0pZNVtYnKoP24GdwKc9X2Y="; + hash = "sha256-yzgw9g5cHAZpdbU44+1ScZyUcZ2I4GGfjbm9GSqCClk="; }; patches = [ diff --git a/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix b/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix index 67da17304b3d..fdb84c2d8add 100644 --- a/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix +++ b/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocr-debug-agent"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "rocr_debug_agent"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-AUDbNrFtUQ5Hm+uv5KMovh7P9wXQKLyRNx9gEQFnv6Y="; + hash = "sha256-8Q800T7mwBy8/rujVNyCQ0ZpZ9uPKKk+Sv9ibpWou/8="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocrand/default.nix b/pkgs/development/rocm-modules/6/rocrand/default.nix index 5abdb3fafecb..7f497d9c4f6f 100644 --- a/pkgs/development/rocm-modules/6/rocrand/default.nix +++ b/pkgs/development/rocm-modules/6/rocrand/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocrand"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rocRAND"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-VrpiHlZZQH+IOoaEDuDOfRgnMiqm1bpRIuNyrPz2SGY="; + hash = "sha256-BBkcYOP+zh3OQTxuSkeiJizwnE9Gr5Jbhx0e8SU/mmU="; fetchSubmodules = true; # For inline hipRAND }; diff --git a/pkgs/development/rocm-modules/6/rocsolver/default.nix b/pkgs/development/rocm-modules/6/rocsolver/default.nix index 518aa798d49b..b94f1dbf8031 100644 --- a/pkgs/development/rocm-modules/6/rocsolver/default.nix +++ b/pkgs/development/rocm-modules/6/rocsolver/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocsolver"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -32,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rocSOLVER"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-qxmjm4tgpCnfJ2SqUXndk6y0MsPJUKHvjv/3Uc0smr4="; + hash = "sha256-tglQpwCSFABRuEDiJrzQVFIdx9p85E2MiUYN0aoTAXo="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocsparse/default.nix b/pkgs/development/rocm-modules/6/rocsparse/default.nix index 07e2018b0287..2dc3fb7ad01d 100644 --- a/pkgs/development/rocm-modules/6/rocsparse/default.nix +++ b/pkgs/development/rocm-modules/6/rocsparse/default.nix @@ -19,7 +19,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocsparse"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -33,7 +33,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rocSPARSE"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-30q9bqgZJUaNrkMXTAG+Z34yjsQ5DpJP+WBcCiEmF58="; + hash = "sha256-nTYnEHkTtq0jBeMj4HXpqkJu8LQc+Z6mpjhMP7tJAHQ="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocthrust/default.nix b/pkgs/development/rocm-modules/6/rocthrust/default.nix index bd03cc11d780..4ecc40eb19b8 100644 --- a/pkgs/development/rocm-modules/6/rocthrust/default.nix +++ b/pkgs/development/rocm-modules/6/rocthrust/default.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocthrust"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rocThrust"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-+bcHcA87IToTcII7N/hm81C/JiokJKj0M1yAph/x9Qc="; + hash = "sha256-Zk7FxcedaDUbx9RCX8aWN0xZO/B5cOs/l5MDqZKQpJo="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/roctracer/default.nix b/pkgs/development/rocm-modules/6/roctracer/default.nix index 9270a273dcae..b2cbe7ffb2d5 100644 --- a/pkgs/development/rocm-modules/6/roctracer/default.nix +++ b/pkgs/development/rocm-modules/6/roctracer/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "roctracer"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -32,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "roctracer"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-P6QYyAjMRwFFWKF8AhbrYGe+mYVJXdbBW1or6vcobYU="; + hash = "sha256-a6/N6W3JXVI0VZRGxlS3cVENC3VTP1w9UFnd0+EWAuo="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/rocwmma/default.nix b/pkgs/development/rocm-modules/6/rocwmma/default.nix index f02859995bcc..e7795cefd0db 100644 --- a/pkgs/development/rocm-modules/6/rocwmma/default.nix +++ b/pkgs/development/rocm-modules/6/rocwmma/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "rocwmma"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -34,7 +34,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "rocWMMA"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-0otJxgVYLwvVYIWT/hjrrpuSj5jslP1dbJRt6GUOrDs="; + hash = "sha256-vbC4OuCmEpD38lVq0uXNw86iS4KkL6isOVq6vmlu1oM="; }; patches = lib.optionals (buildTests || buildBenchmarks) [ diff --git a/pkgs/development/rocm-modules/6/rpp/default.nix b/pkgs/development/rocm-modules/6/rpp/default.nix index 45079c6d62cc..0727adb9ac7d 100644 --- a/pkgs/development/rocm-modules/6/rpp/default.nix +++ b/pkgs/development/rocm-modules/6/rpp/default.nix @@ -23,13 +23,13 @@ stdenv.mkDerivation (finalAttrs: { else "cpu" ); - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "rpp"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-s6ODmxPBLpR5f8VALaW6F0p0rZSxSd2LH2+60SEfLCk="; + hash = "sha256-AquAVoEqlsBVxd41hG2sVo9UoSS+255eCQzIfGkC/Tk="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/tensile/default.nix b/pkgs/development/rocm-modules/6/tensile/default.nix index 7f1e64422668..76a73db49e4d 100644 --- a/pkgs/development/rocm-modules/6/tensile/default.nix +++ b/pkgs/development/rocm-modules/6/tensile/default.nix @@ -15,14 +15,14 @@ buildPythonPackage rec { pname = "tensile"; - version = "5.7.1"; + version = "6.0.2"; format = "pyproject"; src = fetchFromGitHub { owner = "ROCm"; repo = "Tensile"; rev = "rocm-${version}"; - hash = "sha256-CyPGiM/53duJc/oNtOsl6JSsl9uOOYm5R7O6YXaVOm4="; + hash = "sha256-B9/2Iw1chwDL6it1CKC8W8v4Qac/J2z9nwlpwjnllDc="; }; buildInputs = [ setuptools ]; From c0682d3b6905ccc962f2715231689a484dc554e9 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 10 Feb 2024 19:00:34 +0100 Subject: [PATCH 06/32] rocmPackages: deprecate miopengemm There have not been updates avaialble for this package for some time. I'm assuming it makes sense to drop it. --- pkgs/development/rocm-modules/6/default.nix | 11 +- .../rocm-modules/6/migraphx/default.nix | 2 - .../rocm-modules/6/miopen/default.nix | 3 - .../rocm-modules/6/miopengemm/default.nix | 126 ------------------ .../rocm-modules/6/mivisionx/default.nix | 5 +- 5 files changed, 5 insertions(+), 142 deletions(-) delete mode 100644 pkgs/development/rocm-modules/6/miopengemm/default.nix diff --git a/pkgs/development/rocm-modules/6/default.nix b/pkgs/development/rocm-modules/6/default.nix index aaf000b79f13..6d4b9b3e71f1 100644 --- a/pkgs/development/rocm-modules/6/default.nix +++ b/pkgs/development/rocm-modules/6/default.nix @@ -239,10 +239,7 @@ in rec { # hipBlasLt - Very broken with Tensile at the moment, only supports GFX9 # hipTensor - Only supports GFX9 - miopengemm = callPackage ./miopengemm { - inherit rocmUpdateScript rocm-cmake clr; - stdenv = llvm.rocmClangStdenv; - }; + miopengemm = throw "'miopengemm' has been deprecated"; # Added 2024-2-10; composable_kernel = callPackage ./composable_kernel { inherit rocmUpdateScript rocm-cmake clr; @@ -256,7 +253,7 @@ in rec { }; miopen = callPackage ./miopen { - inherit rocmUpdateScript rocm-cmake rocblas clang-ocl miopengemm composable_kernel rocm-comgr clr rocm-docs-core half; + inherit rocmUpdateScript rocm-cmake rocblas clang-ocl composable_kernel rocm-comgr clr rocm-docs-core half; inherit (llvm) clang-tools-extra; stdenv = llvm.rocmClangStdenv; rocmlir = rocmlir-rock; @@ -272,7 +269,7 @@ in rec { }; migraphx = callPackage ./migraphx { - inherit rocmUpdateScript rocm-cmake rocblas composable_kernel miopengemm miopen clr half rocm-device-libs; + inherit rocmUpdateScript rocm-cmake rocblas composable_kernel miopen clr half rocm-device-libs; inherit (llvm) openmp clang-tools-extra; stdenv = llvm.rocmClangStdenv; rocmlir = rocmlir-rock; @@ -300,7 +297,7 @@ in rec { }; mivisionx = callPackage ./mivisionx { - inherit rocmUpdateScript rocm-cmake rocm-device-libs clr rpp rocblas miopengemm miopen migraphx half rocm-docs-core; + inherit rocmUpdateScript rocm-cmake rocm-device-libs clr rpp rocblas miopen migraphx half rocm-docs-core; inherit (llvm) clang openmp; opencv = opencv.override { enablePython = true; }; ffmpeg = ffmpeg_4; diff --git a/pkgs/development/rocm-modules/6/migraphx/default.nix b/pkgs/development/rocm-modules/6/migraphx/default.nix index 8c1f836ba4bf..04e88a627609 100644 --- a/pkgs/development/rocm-modules/6/migraphx/default.nix +++ b/pkgs/development/rocm-modules/6/migraphx/default.nix @@ -11,7 +11,6 @@ , rocblas , rocmlir , composable_kernel -, miopengemm , miopen , protobuf , half @@ -87,7 +86,6 @@ in stdenv.mkDerivation (finalAttrs: { rocblas rocmlir composable_kernel - miopengemm miopen protobuf half diff --git a/pkgs/development/rocm-modules/6/miopen/default.nix b/pkgs/development/rocm-modules/6/miopen/default.nix index 33959efa00eb..b6d8f88ce37d 100644 --- a/pkgs/development/rocm-modules/6/miopen/default.nix +++ b/pkgs/development/rocm-modules/6/miopen/default.nix @@ -12,7 +12,6 @@ , clr , clang-tools-extra , clang-ocl -, miopengemm , composable_kernel , frugally-deep , rocm-docs-core @@ -139,7 +138,6 @@ in stdenv.mkDerivation (finalAttrs: { rocblas rocmlir clang-ocl - miopengemm composable_kernel half boost @@ -161,7 +159,6 @@ in stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-Wno-#warnings" # -> - "-DMIOPEN_USE_MIOPENGEMM=ON" "-DUNZIPPER=${bzip2}/bin/bunzip2" # Manually define CMAKE_INSTALL_ # See: https://github.com/NixOS/nixpkgs/pull/197838 diff --git a/pkgs/development/rocm-modules/6/miopengemm/default.nix b/pkgs/development/rocm-modules/6/miopengemm/default.nix deleted file mode 100644 index 342bd950b1fb..000000000000 --- a/pkgs/development/rocm-modules/6/miopengemm/default.nix +++ /dev/null @@ -1,126 +0,0 @@ -{ lib -, stdenv -, fetchFromGitHub -, rocmUpdateScript -, cmake -, rocm-cmake -, clr -, clblast -, texliveSmall -, doxygen -, sphinx -, openblas -, python3Packages -, buildDocs ? true -, buildTests ? false -, buildBenchmarks ? false -}: - -let - latex = lib.optionalAttrs buildDocs (texliveSmall.withPackages (ps: with ps; [ - latexmk - tex-gyre - fncychap - wrapfig - capt-of - framed - needspace - tabulary - varwidth - titlesec - ])); -in stdenv.mkDerivation (finalAttrs: { - pname = "miopengemm"; - version = "5.5.0"; - - outputs = [ - "out" - ] ++ lib.optionals buildDocs [ - "doc" - ] ++ lib.optionals buildTests [ - "test" - ] ++ lib.optionals buildBenchmarks [ - "benchmark" - ]; - - # Deprecated? https://github.com/ROCmSoftwarePlatform/MIOpenGEMM/issues/62 - src = fetchFromGitHub { - owner = "ROCmSoftwarePlatform"; - repo = "MIOpenGEMM"; - rev = "rocm-${finalAttrs.version}"; - hash = "sha256-AiRzOMYRA/0nbQomyq4oOEwNZdkPYWRA2W6QFlctvFc="; - }; - - nativeBuildInputs = [ - cmake - rocm-cmake - clr - ]; - - buildInputs = lib.optionals buildDocs [ - latex - doxygen - sphinx - python3Packages.sphinx-rtd-theme - python3Packages.breathe - ] ++ lib.optionals buildTests [ - openblas - ] ++ lib.optionals buildBenchmarks [ - clblast - python3Packages.openai-triton - ]; - - cmakeFlags = [ - # Manually define CMAKE_INSTALL_ - # See: https://github.com/NixOS/nixpkgs/pull/197838 - "-DCMAKE_INSTALL_BINDIR=bin" - "-DCMAKE_INSTALL_LIBDIR=lib" - "-DCMAKE_INSTALL_INCLUDEDIR=include" - ] ++ lib.optionals buildTests [ - "-DOPENBLAS=ON" - ] ++ lib.optionals buildBenchmarks [ - "-DAPI_BENCH_MIOGEMM=ON" - "-DAPI_BENCH_CLBLAST=ON" - "-DAPI_BENCH_ISAAC=ON" - ]; - - # Unfortunately, it seems like we have to call make on these manually - postBuild = lib.optionalString buildDocs '' - export HOME=$(mktemp -d) - make doc - '' + lib.optionalString buildTests '' - make check - '' + lib.optionalString buildBenchmarks '' - make examples - ''; - - postInstall = lib.optionalString buildDocs '' - mv ../doc/html $out/share/doc/miopengemm - mv ../doc/pdf/miopengemm.pdf $out/share/doc/miopengemm - '' + lib.optionalString buildTests '' - mkdir -p $test/bin - find tests -executable -type f -exec mv {} $test/bin \; - patchelf --set-rpath ${lib.makeLibraryPath finalAttrs.buildInputs}:$out/lib $test/bin/* - '' + lib.optionalString buildBenchmarks '' - mkdir -p $benchmark/bin - find examples -executable -type f -exec mv {} $benchmark/bin \; - patchelf --set-rpath ${lib.makeLibraryPath finalAttrs.buildInputs}:$out/lib $benchmark/bin/* - ''; - - passthru.updateScript = rocmUpdateScript { - name = finalAttrs.pname; - owner = finalAttrs.src.owner; - repo = finalAttrs.src.repo; - }; - - meta = with lib; { - description = "OpenCL general matrix multiplication API for ROCm"; - homepage = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM"; - license = with licenses; [ mit ]; - maintainers = teams.rocm.members; - platforms = platforms.linux; - # They are not making tags or releases, this may break other derivations in the future - # Use version major instead of minor, 6.0 will HOPEFULLY have a release or tag - broken = versions.major finalAttrs.version != versions.major stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; - }; -}) diff --git a/pkgs/development/rocm-modules/6/mivisionx/default.nix b/pkgs/development/rocm-modules/6/mivisionx/default.nix index 98e1f0e1e72f..7600b60cde3d 100644 --- a/pkgs/development/rocm-modules/6/mivisionx/default.nix +++ b/pkgs/development/rocm-modules/6/mivisionx/default.nix @@ -9,7 +9,6 @@ , pkg-config , rpp , rocblas -, miopengemm , miopen , migraphx , clang @@ -58,7 +57,6 @@ stdenv.mkDerivation (finalAttrs: { ]; buildInputs = [ - miopengemm miopen migraphx rpp @@ -103,9 +101,8 @@ stdenv.mkDerivation (finalAttrs: { export CXXFLAGS+="--rocm-path=${clr} --rocm-device-lib-path=${rocm-device-libs}/amdgcn/bitcode" patchShebangs rocAL/rocAL_pybind/examples - # Properly find miopengemm and miopen + # Properly find miopen substituteInPlace amd_openvx_extensions/CMakeLists.txt \ - --replace "miopengemm PATHS \''${ROCM_PATH} QUIET" "miopengemm PATHS ${miopengemm} QUIET" \ --replace "miopen PATHS \''${ROCM_PATH} QUIET" "miopen PATHS ${miopen} QUIET" \ --replace "\''${ROCM_PATH}/include/miopen/config.h" "${miopen}/include/miopen/config.h" From f8239b2b90d2cdf1323c715d6ac4b4b4aae43111 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 10 Feb 2024 19:05:13 +0100 Subject: [PATCH 07/32] rocmPackages: update source for rocm-docs-core --- .../development/rocm-modules/6/rocm-docs-core/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/rocm-modules/6/rocm-docs-core/default.nix b/pkgs/development/rocm-modules/6/rocm-docs-core/default.nix index e980c9509a08..2462ac62110e 100644 --- a/pkgs/development/rocm-modules/6/rocm-docs-core/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-docs-core/default.nix @@ -23,14 +23,14 @@ # FIXME: Move to rocmPackages_common buildPythonPackage rec { pname = "rocm-docs-core"; - version = "0.26.0"; + version = "0.34.0"; format = "pyproject"; src = fetchFromGitHub { - owner = "RadeonOpenCompute"; + owner = "ROCm"; repo = "rocm-docs-core"; rev = "v${version}"; - hash = "sha256-Mr6/Ne6P+TapoCqN7xkKMNse3fTaIAvvLmMl0kVg7Vs="; + hash = "sha256-p75g68Dn0RrjX9vYY+AWNu0qOKTLsBCnOZekMO0Usho="; }; buildInputs = [ setuptools ]; @@ -58,7 +58,7 @@ buildPythonPackage rec { meta = with lib; { description = "ROCm Documentation Python package for ReadTheDocs build standardization"; - homepage = "https://github.com/RadeonOpenCompute/rocm-docs-core"; + homepage = "https://github.com/ROCm/rocm-docs-core"; license = with licenses; [ mit cc-by-40 ]; maintainers = teams.rocm.members; platforms = platforms.linux; From bc5f473a4fedb736aa129374fcb0ccac81b5752b Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Fri, 9 Feb 2024 23:04:30 +0100 Subject: [PATCH 08/32] rocmPackages: stop marking versions larger than 6.0.0 as broken --- pkgs/development/rocm-modules/6/clang-ocl/default.nix | 2 +- pkgs/development/rocm-modules/6/clr/default.nix | 2 +- pkgs/development/rocm-modules/6/composable_kernel/default.nix | 2 +- pkgs/development/rocm-modules/6/half/default.nix | 2 +- pkgs/development/rocm-modules/6/hip-common/default.nix | 2 +- pkgs/development/rocm-modules/6/hipblas/default.nix | 2 +- pkgs/development/rocm-modules/6/hipcc/default.nix | 2 +- pkgs/development/rocm-modules/6/hipcub/default.nix | 2 +- pkgs/development/rocm-modules/6/hipfft/default.nix | 2 +- pkgs/development/rocm-modules/6/hipfort/default.nix | 2 +- pkgs/development/rocm-modules/6/hipify/default.nix | 2 +- pkgs/development/rocm-modules/6/hipsolver/default.nix | 2 +- pkgs/development/rocm-modules/6/hipsparse/default.nix | 2 +- .../rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix | 2 +- pkgs/development/rocm-modules/6/llvm/base.nix | 2 +- pkgs/development/rocm-modules/6/migraphx/default.nix | 2 +- pkgs/development/rocm-modules/6/miopen/default.nix | 2 +- pkgs/development/rocm-modules/6/mivisionx/default.nix | 2 +- pkgs/development/rocm-modules/6/rccl/default.nix | 2 +- pkgs/development/rocm-modules/6/rdc/default.nix | 2 +- pkgs/development/rocm-modules/6/rocalution/default.nix | 2 +- pkgs/development/rocm-modules/6/rocblas/default.nix | 2 +- pkgs/development/rocm-modules/6/rocdbgapi/default.nix | 2 +- pkgs/development/rocm-modules/6/rocfft/default.nix | 2 +- pkgs/development/rocm-modules/6/rocgdb/default.nix | 1 - pkgs/development/rocm-modules/6/rocm-cmake/default.nix | 2 +- pkgs/development/rocm-modules/6/rocm-comgr/default.nix | 2 +- pkgs/development/rocm-modules/6/rocm-core/default.nix | 2 +- pkgs/development/rocm-modules/6/rocm-device-libs/default.nix | 2 +- pkgs/development/rocm-modules/6/rocm-runtime/default.nix | 2 +- pkgs/development/rocm-modules/6/rocm-smi/default.nix | 2 +- pkgs/development/rocm-modules/6/rocm-thunk/default.nix | 2 +- pkgs/development/rocm-modules/6/rocminfo/default.nix | 2 +- pkgs/development/rocm-modules/6/rocmlir/default.nix | 2 +- pkgs/development/rocm-modules/6/rocprim/default.nix | 2 +- pkgs/development/rocm-modules/6/rocprofiler/default.nix | 2 +- pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix | 2 +- pkgs/development/rocm-modules/6/rocrand/default.nix | 2 +- pkgs/development/rocm-modules/6/rocsolver/default.nix | 2 +- pkgs/development/rocm-modules/6/rocsparse/default.nix | 2 +- pkgs/development/rocm-modules/6/rocthrust/default.nix | 2 +- pkgs/development/rocm-modules/6/roctracer/default.nix | 2 +- pkgs/development/rocm-modules/6/rocwmma/default.nix | 2 +- pkgs/development/rocm-modules/6/rpp/default.nix | 2 +- pkgs/development/rocm-modules/6/tensile/default.nix | 2 +- 45 files changed, 44 insertions(+), 45 deletions(-) diff --git a/pkgs/development/rocm-modules/6/clang-ocl/default.nix b/pkgs/development/rocm-modules/6/clang-ocl/default.nix index c29223dd8c7f..670cd1b187ab 100644 --- a/pkgs/development/rocm-modules/6/clang-ocl/default.nix +++ b/pkgs/development/rocm-modules/6/clang-ocl/default.nix @@ -37,6 +37,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/clr/default.nix b/pkgs/development/rocm-modules/6/clr/default.nix index 5357c6c2ef75..108bb9e220ac 100644 --- a/pkgs/development/rocm-modules/6/clr/default.nix +++ b/pkgs/development/rocm-modules/6/clr/default.nix @@ -170,6 +170,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/composable_kernel/default.nix b/pkgs/development/rocm-modules/6/composable_kernel/default.nix index 6034c1f782df..58bd94f2955d 100644 --- a/pkgs/development/rocm-modules/6/composable_kernel/default.nix +++ b/pkgs/development/rocm-modules/6/composable_kernel/default.nix @@ -83,6 +83,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/half/default.nix b/pkgs/development/rocm-modules/6/half/default.nix index be73ddcc472c..887814b60e5b 100644 --- a/pkgs/development/rocm-modules/6/half/default.nix +++ b/pkgs/development/rocm-modules/6/half/default.nix @@ -34,6 +34,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.unix; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/hip-common/default.nix b/pkgs/development/rocm-modules/6/hip-common/default.nix index 2d6a0452fe0e..b8bc48db707c 100644 --- a/pkgs/development/rocm-modules/6/hip-common/default.nix +++ b/pkgs/development/rocm-modules/6/hip-common/default.nix @@ -39,6 +39,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/hipblas/default.nix b/pkgs/development/rocm-modules/6/hipblas/default.nix index c90f643f90b0..f43947b6645f 100644 --- a/pkgs/development/rocm-modules/6/hipblas/default.nix +++ b/pkgs/development/rocm-modules/6/hipblas/default.nix @@ -94,6 +94,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/hipcc/default.nix b/pkgs/development/rocm-modules/6/hipcc/default.nix index 62452239fc4e..cc1d8525aa1f 100644 --- a/pkgs/development/rocm-modules/6/hipcc/default.nix +++ b/pkgs/development/rocm-modules/6/hipcc/default.nix @@ -41,6 +41,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/hipcub/default.nix b/pkgs/development/rocm-modules/6/hipcub/default.nix index b14205d37ad9..c7e0244fdf19 100644 --- a/pkgs/development/rocm-modules/6/hipcub/default.nix +++ b/pkgs/development/rocm-modules/6/hipcub/default.nix @@ -85,6 +85,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ bsd3 ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/hipfft/default.nix b/pkgs/development/rocm-modules/6/hipfft/default.nix index 3da9c559f326..d2a7912f4b91 100644 --- a/pkgs/development/rocm-modules/6/hipfft/default.nix +++ b/pkgs/development/rocm-modules/6/hipfft/default.nix @@ -105,6 +105,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/hipfort/default.nix b/pkgs/development/rocm-modules/6/hipfort/default.nix index 776ac3938a49..c8b00aa95044 100644 --- a/pkgs/development/rocm-modules/6/hipfort/default.nix +++ b/pkgs/development/rocm-modules/6/hipfort/default.nix @@ -61,6 +61,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; # mitx11 maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/hipify/default.nix b/pkgs/development/rocm-modules/6/hipify/default.nix index 36328a643fe9..eb41e6c4c0d4 100644 --- a/pkgs/development/rocm-modules/6/hipify/default.nix +++ b/pkgs/development/rocm-modules/6/hipify/default.nix @@ -45,6 +45,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/hipsolver/default.nix b/pkgs/development/rocm-modules/6/hipsolver/default.nix index 77fa7f178ffa..73a89c53239b 100644 --- a/pkgs/development/rocm-modules/6/hipsolver/default.nix +++ b/pkgs/development/rocm-modules/6/hipsolver/default.nix @@ -95,6 +95,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/hipsparse/default.nix b/pkgs/development/rocm-modules/6/hipsparse/default.nix index cf0cc94ba82a..3e77ecb2d03c 100644 --- a/pkgs/development/rocm-modules/6/hipsparse/default.nix +++ b/pkgs/development/rocm-modules/6/hipsparse/default.nix @@ -131,6 +131,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix index c007f2c62260..8bd479c5c245 100644 --- a/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix +++ b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix @@ -38,6 +38,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ unfree ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/llvm/base.nix b/pkgs/development/rocm-modules/6/llvm/base.nix index 796a73e1d2c3..0a0ac65460fb 100644 --- a/pkgs/development/rocm-modules/6/llvm/base.nix +++ b/pkgs/development/rocm-modules/6/llvm/base.nix @@ -170,6 +170,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ ncsa ] ++ extraLicenses; maintainers = with maintainers; [ acowley lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = isBroken || versionAtLeast finalAttrs.version "6.0.0"; + broken = isBroken; }; }) diff --git a/pkgs/development/rocm-modules/6/migraphx/default.nix b/pkgs/development/rocm-modules/6/migraphx/default.nix index 04e88a627609..1aea9cd4ec86 100644 --- a/pkgs/development/rocm-modules/6/migraphx/default.nix +++ b/pkgs/development/rocm-modules/6/migraphx/default.nix @@ -164,6 +164,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/miopen/default.nix b/pkgs/development/rocm-modules/6/miopen/default.nix index b6d8f88ce37d..3b8ac3f0f2fc 100644 --- a/pkgs/development/rocm-modules/6/miopen/default.nix +++ b/pkgs/development/rocm-modules/6/miopen/default.nix @@ -231,6 +231,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/mivisionx/default.nix b/pkgs/development/rocm-modules/6/mivisionx/default.nix index 7600b60cde3d..a7f565ca0355 100644 --- a/pkgs/development/rocm-modules/6/mivisionx/default.nix +++ b/pkgs/development/rocm-modules/6/mivisionx/default.nix @@ -137,6 +137,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rccl/default.nix b/pkgs/development/rocm-modules/6/rccl/default.nix index 77b3233c96c8..c20de315746e 100644 --- a/pkgs/development/rocm-modules/6/rccl/default.nix +++ b/pkgs/development/rocm-modules/6/rccl/default.nix @@ -86,6 +86,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ bsd2 bsd3 ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rdc/default.nix b/pkgs/development/rocm-modules/6/rdc/default.nix index 914ed87e7ce6..ec6cc95f0648 100644 --- a/pkgs/development/rocm-modules/6/rdc/default.nix +++ b/pkgs/development/rocm-modules/6/rdc/default.nix @@ -119,7 +119,7 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - # broken = versions.minor finalAttrs.version != versions.minor rocm-smi.version || versionAtLeast finalAttrs.version "6.0.0"; + # broken = versions.minor finalAttrs.version != versions.minor rocm-smi.version; broken = true; # Too many errors, unsure how to fix }; }) diff --git a/pkgs/development/rocm-modules/6/rocalution/default.nix b/pkgs/development/rocm-modules/6/rocalution/default.nix index 4ba656f47b74..1872d3608e61 100644 --- a/pkgs/development/rocm-modules/6/rocalution/default.nix +++ b/pkgs/development/rocm-modules/6/rocalution/default.nix @@ -110,6 +110,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocblas/default.nix b/pkgs/development/rocm-modules/6/rocblas/default.nix index af21f5acd5d5..e7a34733c851 100644 --- a/pkgs/development/rocm-modules/6/rocblas/default.nix +++ b/pkgs/development/rocm-modules/6/rocblas/default.nix @@ -204,6 +204,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocdbgapi/default.nix b/pkgs/development/rocm-modules/6/rocdbgapi/default.nix index d8ad372683c0..ac8f3ede2e92 100644 --- a/pkgs/development/rocm-modules/6/rocdbgapi/default.nix +++ b/pkgs/development/rocm-modules/6/rocdbgapi/default.nix @@ -106,6 +106,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocfft/default.nix b/pkgs/development/rocm-modules/6/rocfft/default.nix index 8302d7f856ac..da7fa76abd81 100644 --- a/pkgs/development/rocm-modules/6/rocfft/default.nix +++ b/pkgs/development/rocm-modules/6/rocfft/default.nix @@ -164,6 +164,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = with maintainers; [ kira-bruneau ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocgdb/default.nix b/pkgs/development/rocm-modules/6/rocgdb/default.nix index 456c47cb5dbb..0952c224b927 100644 --- a/pkgs/development/rocm-modules/6/rocgdb/default.nix +++ b/pkgs/development/rocm-modules/6/rocgdb/default.nix @@ -54,6 +54,5 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ gpl2 gpl3 bsd3 ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versionAtLeast finalAttrs.version "6.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-cmake/default.nix b/pkgs/development/rocm-modules/6/rocm-cmake/default.nix index 128ad882ccac..745045a50353 100644 --- a/pkgs/development/rocm-modules/6/rocm-cmake/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-cmake/default.nix @@ -30,6 +30,6 @@ stdenv.mkDerivation (finalAttrs: { license = licenses.mit; maintainers = teams.rocm.members; platforms = platforms.unix; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-comgr/default.nix b/pkgs/development/rocm-modules/6/rocm-comgr/default.nix index 86a3c7da65d6..e089d5c29b36 100644 --- a/pkgs/development/rocm-modules/6/rocm-comgr/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-comgr/default.nix @@ -50,6 +50,6 @@ in stdenv.mkDerivation (finalAttrs: { license = licenses.ncsa; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-core/default.nix b/pkgs/development/rocm-modules/6/rocm-core/default.nix index 401cda62c720..9b779a684bff 100644 --- a/pkgs/development/rocm-modules/6/rocm-core/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-core/default.nix @@ -33,6 +33,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix b/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix index aa1139ff8d9e..be5609d989d9 100644 --- a/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix @@ -45,6 +45,6 @@ in stdenv.mkDerivation (finalAttrs: { license = licenses.ncsa; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-runtime/default.nix b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix index aa9b147c61d1..fce6bfb40a31 100644 --- a/pkgs/development/rocm-modules/6/rocm-runtime/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix @@ -73,6 +73,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ ncsa ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-smi/default.nix b/pkgs/development/rocm-modules/6/rocm-smi/default.nix index f2d276534e11..47d55d13c1ef 100644 --- a/pkgs/development/rocm-modules/6/rocm-smi/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-smi/default.nix @@ -49,6 +49,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = [ "x86_64-linux" ]; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-thunk/default.nix b/pkgs/development/rocm-modules/6/rocm-thunk/default.nix index f1f8d8dc8806..e77f576678de 100644 --- a/pkgs/development/rocm-modules/6/rocm-thunk/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-thunk/default.nix @@ -49,6 +49,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ bsd2 mit ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocminfo/default.nix b/pkgs/development/rocm-modules/6/rocminfo/default.nix index 2299021ddacb..69428c2f683d 100644 --- a/pkgs/development/rocm-modules/6/rocminfo/default.nix +++ b/pkgs/development/rocm-modules/6/rocminfo/default.nix @@ -58,6 +58,6 @@ stdenv.mkDerivation (finalAttrs: { license = licenses.ncsa; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = stdenv.isAarch64 || versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = stdenv.isAarch64 || versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocmlir/default.nix b/pkgs/development/rocm-modules/6/rocmlir/default.nix index 4c85e21090f1..5edd5bf28758 100644 --- a/pkgs/development/rocm-modules/6/rocmlir/default.nix +++ b/pkgs/development/rocm-modules/6/rocmlir/default.nix @@ -125,6 +125,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ asl20 ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocprim/default.nix b/pkgs/development/rocm-modules/6/rocprim/default.nix index e9e00dd5ef57..9d3d12467045 100644 --- a/pkgs/development/rocm-modules/6/rocprim/default.nix +++ b/pkgs/development/rocm-modules/6/rocprim/default.nix @@ -81,6 +81,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocprofiler/default.nix b/pkgs/development/rocm-modules/6/rocprofiler/default.nix index ceb0a54912df..c4f0934f1c6b 100644 --- a/pkgs/development/rocm-modules/6/rocprofiler/default.nix +++ b/pkgs/development/rocm-modules/6/rocprofiler/default.nix @@ -131,6 +131,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; # mitx11 maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor clr.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor clr.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix b/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix index fdb84c2d8add..755b98524bd8 100644 --- a/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix +++ b/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix @@ -54,6 +54,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ ncsa ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocrand/default.nix b/pkgs/development/rocm-modules/6/rocrand/default.nix index 7f497d9c4f6f..a4dae75b88bd 100644 --- a/pkgs/development/rocm-modules/6/rocrand/default.nix +++ b/pkgs/development/rocm-modules/6/rocrand/default.nix @@ -83,6 +83,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocsolver/default.nix b/pkgs/development/rocm-modules/6/rocsolver/default.nix index b94f1dbf8031..34e66e2725ac 100644 --- a/pkgs/development/rocm-modules/6/rocsolver/default.nix +++ b/pkgs/development/rocm-modules/6/rocsolver/default.nix @@ -95,6 +95,6 @@ stdenv.mkDerivation (finalAttrs: { platforms = platforms.linux; timeout = 14400; # 4 hours maxSilent = 14400; # 4 hours - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocsparse/default.nix b/pkgs/development/rocm-modules/6/rocsparse/default.nix index 2dc3fb7ad01d..2a0203ab1b27 100644 --- a/pkgs/development/rocm-modules/6/rocsparse/default.nix +++ b/pkgs/development/rocm-modules/6/rocsparse/default.nix @@ -144,6 +144,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocthrust/default.nix b/pkgs/development/rocm-modules/6/rocthrust/default.nix index 4ecc40eb19b8..224499d70e12 100644 --- a/pkgs/development/rocm-modules/6/rocthrust/default.nix +++ b/pkgs/development/rocm-modules/6/rocthrust/default.nix @@ -82,6 +82,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ asl20 ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/roctracer/default.nix b/pkgs/development/rocm-modules/6/roctracer/default.nix index b2cbe7ffb2d5..fcbcfdd5dc4a 100644 --- a/pkgs/development/rocm-modules/6/roctracer/default.nix +++ b/pkgs/development/rocm-modules/6/roctracer/default.nix @@ -98,6 +98,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; # mitx11 maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor clr.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor clr.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rocwmma/default.nix b/pkgs/development/rocm-modules/6/rocwmma/default.nix index e7795cefd0db..ff8da5b71695 100644 --- a/pkgs/development/rocm-modules/6/rocwmma/default.nix +++ b/pkgs/development/rocm-modules/6/rocwmma/default.nix @@ -100,6 +100,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/rpp/default.nix b/pkgs/development/rocm-modules/6/rpp/default.nix index 0727adb9ac7d..e84942ba3551 100644 --- a/pkgs/development/rocm-modules/6/rpp/default.nix +++ b/pkgs/development/rocm-modules/6/rpp/default.nix @@ -83,6 +83,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "6.0.0"; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; }; }) diff --git a/pkgs/development/rocm-modules/6/tensile/default.nix b/pkgs/development/rocm-modules/6/tensile/default.nix index 76a73db49e4d..f639a915c445 100644 --- a/pkgs/development/rocm-modules/6/tensile/default.nix +++ b/pkgs/development/rocm-modules/6/tensile/default.nix @@ -60,6 +60,6 @@ buildPythonPackage rec { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor version != versions.minor stdenv.cc.version || versionAtLeast version "6.0.0"; + broken = versions.minor version != versions.minor stdenv.cc.version; }; } From 5fdc6940542a76726ab0f12ec90994587e82846b Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 10 Feb 2024 00:08:39 +0100 Subject: [PATCH 09/32] rocmPackages: manually update a few packages Update sources for llvm, clang-ocl, MIOpen and hsa-amd-aqlprofile-bin. --- .../rocm-modules/6/clang-ocl/default.nix | 2 +- .../6/hsa-amd-aqlprofile-bin/default.nix | 13 +++++++++---- pkgs/development/rocm-modules/6/llvm/base.nix | 4 ++-- pkgs/development/rocm-modules/6/miopen/default.nix | 4 ++-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/pkgs/development/rocm-modules/6/clang-ocl/default.nix b/pkgs/development/rocm-modules/6/clang-ocl/default.nix index 670cd1b187ab..959c9d327121 100644 --- a/pkgs/development/rocm-modules/6/clang-ocl/default.nix +++ b/pkgs/development/rocm-modules/6/clang-ocl/default.nix @@ -9,7 +9,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "clang-ocl"; - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; diff --git a/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix index 8bd479c5c245..5b665e125daa 100644 --- a/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix +++ b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix @@ -7,11 +7,16 @@ stdenv.mkDerivation (finalAttrs: { pname = "hsa-amd-aqlprofile-bin"; - version = "5.7.1"; + version = "6.0.2"; - src = fetchurl { - url = "https://repo.radeon.com/rocm/apt/5.7.1/pool/main/h/hsa-amd-aqlprofile/hsa-amd-aqlprofile_1.0.0.50701.50701-98~22.04_amd64.deb"; - hash = "sha256-LWAtZ0paJW8lhE+QAMwq2l8wM+96bxk5rNWyQXTc9Vo="; + src = let + version = finalAttrs.version; + dotless = builtins.replaceStrings ["."] ["0"] version; + incremental = "115"; + osRelease = "22.04"; + in fetchurl { + url = "https://repo.radeon.com/rocm/apt/${version}/pool/main/h/hsa-amd-aqlprofile/hsa-amd-aqlprofile_1.0.0.${dotless}.${dotless}-${incremental}~${osRelease}_amd64.deb"; + hash = "sha256-0XeKUKaof5pSMS/UgLwumBDBYgyH/pCex9jViUKENXY="; }; nativeBuildInputs = [ dpkg ]; diff --git a/pkgs/development/rocm-modules/6/llvm/base.nix b/pkgs/development/rocm-modules/6/llvm/base.nix index 0a0ac65460fb..ace665f41137 100644 --- a/pkgs/development/rocm-modules/6/llvm/base.nix +++ b/pkgs/development/rocm-modules/6/llvm/base.nix @@ -61,7 +61,7 @@ let llvmTargetsToBuild' = [ "AMDGPU" ] ++ builtins.map inferNativeTarget llvmTargetsToBuild; in stdenv.mkDerivation (finalAttrs: { pname = "rocm-llvm-${targetName}"; - version = "5.7.1"; + version = "6.0.2"; outputs = [ "out" @@ -78,7 +78,7 @@ in stdenv.mkDerivation (finalAttrs: { owner = "ROCm"; repo = "llvm-project"; rev = "rocm-${finalAttrs.version}"; - hash = "sha256-0+lJnDiMntxCYbZBCSWvHOcKXexFfEzRfb49QbfOmK8="; + hash = "sha256-uGxalrwMNCOSqSFVrYUBi3ijkMEFFTrzFImmvZKQf6I="; }; nativeBuildInputs = [ diff --git a/pkgs/development/rocm-modules/6/miopen/default.nix b/pkgs/development/rocm-modules/6/miopen/default.nix index 3b8ac3f0f2fc..170e40b66516 100644 --- a/pkgs/development/rocm-modules/6/miopen/default.nix +++ b/pkgs/development/rocm-modules/6/miopen/default.nix @@ -34,13 +34,13 @@ }: let - version = "5.7.1"; + version = "6.0.2"; src = fetchFromGitHub { owner = "ROCm"; repo = "MIOpen"; rev = "rocm-${version}"; - hash = "sha256-xcKmFI8HcRA9bbh6EQGElKykIQ3RJX/q5f4IxXvM1Is="; + hash = "sha256-mbOdlSb0ESKi9hMkq3amv70Xkp/YKnZYre24d/y5TD0="; fetchLFS = true; leaveDotGit = true; From 12806ec0f80006769dc51cfcd85e1a594a2c0f00 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 10 Feb 2024 19:23:58 +0100 Subject: [PATCH 10/32] rocmPackages: fix rocm-runtime build --- pkgs/development/rocm-modules/6/rocm-runtime/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/rocm-modules/6/rocm-runtime/default.nix b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix index fce6bfb40a31..c0e5f69e8d5a 100644 --- a/pkgs/development/rocm-modules/6/rocm-runtime/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix @@ -45,6 +45,7 @@ stdenv.mkDerivation (finalAttrs: { postPatch = '' patchShebangs image/blit_src/create_hsaco_ascii_file.sh patchShebangs core/runtime/trap_handler/create_trap_handler_header.sh + patchShebangs core/runtime/blit_shaders/create_blit_shader_header.sh substituteInPlace CMakeLists.txt \ --replace 'hsa/include/hsa' 'include/hsa' @@ -57,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: { ''; fixupPhase = '' - rm -rf $out/hsa/* + mkdir $out/hsa ln -s $out/{include,lib} $out/hsa ''; From 1011991b2199ebf4ef6639041968f041075c760a Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 10 Feb 2024 03:07:51 +0100 Subject: [PATCH 11/32] rocmPackaes: fix hipify build --- pkgs/development/rocm-modules/6/hipify/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/rocm-modules/6/hipify/default.nix b/pkgs/development/rocm-modules/6/hipify/default.nix index eb41e6c4c0d4..ced4f93e89b0 100644 --- a/pkgs/development/rocm-modules/6/hipify/default.nix +++ b/pkgs/development/rocm-modules/6/hipify/default.nix @@ -34,7 +34,7 @@ stdenv.mkDerivation (finalAttrs: { # Fixup bad symlinks postInstall = '' - rm -r $out/hip/bin + mkdir $out/hip ln -s $out/bin $out/hip/bin patchShebangs $out/bin ''; From 35c73f24d59d301d038bc32233b7c458b7d6c67f Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 10 Feb 2024 04:29:02 +0100 Subject: [PATCH 12/32] rocmPackages: fix CLR build --- pkgs/development/rocm-modules/6/clr/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/rocm-modules/6/clr/default.nix b/pkgs/development/rocm-modules/6/clr/default.nix index 108bb9e220ac..fc22c7ff13f2 100644 --- a/pkgs/development/rocm-modules/6/clr/default.nix +++ b/pkgs/development/rocm-modules/6/clr/default.nix @@ -95,6 +95,7 @@ in stdenv.mkDerivation (finalAttrs: { postPatch = '' patchShebangs hipamd/src + patchShebangs hipamd/download_libamhip64_v5.sh # We're not on Windows so these are never installed to hipcc... substituteInPlace hipamd/CMakeLists.txt \ From fee0f69855c725f242be48d4bd332c4fee076bc8 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 10 Feb 2024 04:58:18 +0100 Subject: [PATCH 13/32] rocmPackages: add git to composable_kernel build The build still fails, but it fails later. --- pkgs/development/rocm-modules/6/composable_kernel/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/rocm-modules/6/composable_kernel/default.nix b/pkgs/development/rocm-modules/6/composable_kernel/default.nix index 58bd94f2955d..37c32ac2cecd 100644 --- a/pkgs/development/rocm-modules/6/composable_kernel/default.nix +++ b/pkgs/development/rocm-modules/6/composable_kernel/default.nix @@ -7,6 +7,7 @@ , clr , openmp , clang-tools-extra +, git , gtest , buildTests ? false , buildExamples ? false @@ -33,6 +34,7 @@ stdenv.mkDerivation (finalAttrs: { }; nativeBuildInputs = [ + git cmake rocm-cmake clr From 3fe25ab923a5673e46d2be9a9379fd01b6cb85b2 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sun, 11 Feb 2024 20:58:46 +0100 Subject: [PATCH 14/32] rocmPackages: fix rocmlir build --- pkgs/development/rocm-modules/6/rocmlir/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/development/rocm-modules/6/rocmlir/default.nix b/pkgs/development/rocm-modules/6/rocmlir/default.nix index 5edd5bf28758..2b9956f97a8f 100644 --- a/pkgs/development/rocm-modules/6/rocmlir/default.nix +++ b/pkgs/development/rocm-modules/6/rocmlir/default.nix @@ -87,6 +87,7 @@ in stdenv.mkDerivation (finalAttrs: { postPatch = '' patchShebangs mlir + patchShebangs external/llvm-project/mlir/lib/Dialect/GPU/AmdDeviceLibsIncGen.py substituteInPlace mlir/utils/performance/common/CMakeLists.txt \ --replace "/opt/rocm" "${clr}" From 561cac4480f2336258ab66c07918617b7a887d18 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sun, 11 Feb 2024 21:00:39 +0100 Subject: [PATCH 15/32] rocmPackages: fix MIOpen build --- pkgs/development/rocm-modules/6/default.nix | 2 +- pkgs/development/rocm-modules/6/miopen/default.nix | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/rocm-modules/6/default.nix b/pkgs/development/rocm-modules/6/default.nix index 6d4b9b3e71f1..6066dbe42223 100644 --- a/pkgs/development/rocm-modules/6/default.nix +++ b/pkgs/development/rocm-modules/6/default.nix @@ -253,7 +253,7 @@ in rec { }; miopen = callPackage ./miopen { - inherit rocmUpdateScript rocm-cmake rocblas clang-ocl composable_kernel rocm-comgr clr rocm-docs-core half; + inherit rocmUpdateScript rocm-cmake rocblas clang-ocl composable_kernel rocm-comgr clr rocm-docs-core half roctracer; inherit (llvm) clang-tools-extra; stdenv = llvm.rocmClangStdenv; rocmlir = rocmlir-rock; diff --git a/pkgs/development/rocm-modules/6/miopen/default.nix b/pkgs/development/rocm-modules/6/miopen/default.nix index 170e40b66516..c56f8b2e96fe 100644 --- a/pkgs/development/rocm-modules/6/miopen/default.nix +++ b/pkgs/development/rocm-modules/6/miopen/default.nix @@ -27,6 +27,7 @@ , zlib , gtest , rocm-comgr +, roctracer , python3Packages , buildDocs ? false # Needs internet because of rocm-docs-core , buildTests ? false @@ -145,6 +146,7 @@ in stdenv.mkDerivation (finalAttrs: { bzip2 nlohmann_json frugally-deep + roctracer ] ++ lib.optionals buildDocs [ latex doxygen From 3bc74475b16cd154a9a8256477b2d0f0f04708d3 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sun, 11 Feb 2024 22:53:36 +0100 Subject: [PATCH 16/32] rocmPackages: set GPU_TARGETS for migraphx --- pkgs/development/rocm-modules/6/migraphx/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/rocm-modules/6/migraphx/default.nix b/pkgs/development/rocm-modules/6/migraphx/default.nix index 1aea9cd4ec86..4185f2c89f36 100644 --- a/pkgs/development/rocm-modules/6/migraphx/default.nix +++ b/pkgs/development/rocm-modules/6/migraphx/default.nix @@ -29,6 +29,7 @@ , python3Packages , buildDocs ? false , buildTests ? false +, gpuTargets ? clr.gpuTargets }: let @@ -109,6 +110,7 @@ in stdenv.mkDerivation (finalAttrs: { "-DCMAKE_INSTALL_BINDIR=bin" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_INCLUDEDIR=include" + "-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" ]; postPatch = '' From bc377c1e4aac79af33c248aa2f96abec5b66baef Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Thu, 15 Feb 2024 00:34:43 +0100 Subject: [PATCH 17/32] rocmPackages: fix rccl build by adding version info to clr output --- pkgs/development/rocm-modules/6/clr/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/development/rocm-modules/6/clr/default.nix b/pkgs/development/rocm-modules/6/clr/default.nix index fc22c7ff13f2..e4af02c5e21f 100644 --- a/pkgs/development/rocm-modules/6/clr/default.nix +++ b/pkgs/development/rocm-modules/6/clr/default.nix @@ -123,6 +123,10 @@ in stdenv.mkDerivation (finalAttrs: { # Replace rocm-opencl-icd functionality mkdir -p $icd/etc/OpenCL/vendors echo "$out/lib/libamdocl64.so" > $icd/etc/OpenCL/vendors/amdocl64.icd + + # add version info to output (downstream rocmPackages look for this) + mkdir $out/.info + echo "${finalAttrs.version}" > $out/.info/version ''; passthru = { From edd570c5961f310bd87e1b43e45be8e56583aee0 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Thu, 15 Feb 2024 21:25:43 +0100 Subject: [PATCH 18/32] rocmPackages: skip building composable_kernel profiler for now We hit relocation R_X86_64_PC32 out of range errors for release builds that include all available targets. See: https://github.com/ROCm/composable_kernel/issues/789 --- .../rocm-modules/6/composable_kernel/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/development/rocm-modules/6/composable_kernel/default.nix b/pkgs/development/rocm-modules/6/composable_kernel/default.nix index 37c32ac2cecd..265a234baed5 100644 --- a/pkgs/development/rocm-modules/6/composable_kernel/default.nix +++ b/pkgs/development/rocm-modules/6/composable_kernel/default.nix @@ -60,7 +60,11 @@ stdenv.mkDerivation (finalAttrs: { '' + lib.optionalString (!buildExamples) '' substituteInPlace CMakeLists.txt \ --replace "add_subdirectory(example)" "" - ''; + '' + '' + substituteInPlace CMakeLists.txt \ + --replace "add_subdirectory(profiler)" "" + '' + ; postInstall = lib.optionalString buildTests '' mkdir -p $test/bin From 2bddd186393e57f2c76335d0295d6302b5818c03 Mon Sep 17 00:00:00 2001 From: Indy Ray Date: Thu, 29 Feb 2024 23:25:55 +0100 Subject: [PATCH 19/32] rocmPackages: fix version handling --- pkgs/development/rocm-modules/6/clang-ocl/default.nix | 2 +- pkgs/development/rocm-modules/6/clr/default.nix | 2 +- .../rocm-modules/6/clr/test-opencl-example.nix | 2 +- pkgs/development/rocm-modules/6/clr/test-rocm-smi.nix | 2 +- .../rocm-modules/6/composable_kernel/default.nix | 2 +- pkgs/development/rocm-modules/6/half/default.nix | 2 +- .../development/rocm-modules/6/hip-common/default.nix | 2 +- pkgs/development/rocm-modules/6/hipblas/default.nix | 2 +- pkgs/development/rocm-modules/6/hipcc/default.nix | 2 +- pkgs/development/rocm-modules/6/hipcub/default.nix | 2 +- pkgs/development/rocm-modules/6/hipfft/default.nix | 2 +- pkgs/development/rocm-modules/6/hipfort/default.nix | 2 +- pkgs/development/rocm-modules/6/hipify/default.nix | 2 +- pkgs/development/rocm-modules/6/hipsolver/default.nix | 2 +- pkgs/development/rocm-modules/6/hipsparse/default.nix | 2 +- .../rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix | 2 +- .../rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix | 11 ++++++++--- pkgs/development/rocm-modules/6/llvm/base.nix | 2 +- pkgs/development/rocm-modules/6/migraphx/default.nix | 2 +- pkgs/development/rocm-modules/6/miopen/default.nix | 2 +- pkgs/development/rocm-modules/6/mivisionx/default.nix | 2 +- pkgs/development/rocm-modules/6/rccl/default.nix | 2 +- pkgs/development/rocm-modules/6/rdc/default.nix | 2 +- .../development/rocm-modules/6/rocalution/default.nix | 2 +- pkgs/development/rocm-modules/6/rocblas/default.nix | 2 +- pkgs/development/rocm-modules/6/rocdbgapi/default.nix | 2 +- pkgs/development/rocm-modules/6/rocfft/default.nix | 2 +- pkgs/development/rocm-modules/6/rocgdb/default.nix | 1 + .../development/rocm-modules/6/rocm-cmake/default.nix | 2 +- .../development/rocm-modules/6/rocm-comgr/default.nix | 2 +- pkgs/development/rocm-modules/6/rocm-core/default.nix | 2 +- .../rocm-modules/6/rocm-device-libs/default.nix | 2 +- .../rocm-modules/6/rocm-runtime/default.nix | 2 +- pkgs/development/rocm-modules/6/rocm-smi/default.nix | 2 +- .../development/rocm-modules/6/rocm-thunk/default.nix | 2 +- pkgs/development/rocm-modules/6/rocminfo/default.nix | 2 +- pkgs/development/rocm-modules/6/rocmlir/default.nix | 2 +- pkgs/development/rocm-modules/6/rocprim/default.nix | 2 +- .../rocm-modules/6/rocprofiler/default.nix | 2 +- .../rocm-modules/6/rocr-debug-agent/default.nix | 2 +- pkgs/development/rocm-modules/6/rocrand/default.nix | 2 +- pkgs/development/rocm-modules/6/rocsolver/default.nix | 2 +- pkgs/development/rocm-modules/6/rocsparse/default.nix | 2 +- pkgs/development/rocm-modules/6/rocthrust/default.nix | 2 +- pkgs/development/rocm-modules/6/roctracer/default.nix | 2 +- pkgs/development/rocm-modules/6/rocwmma/default.nix | 2 +- pkgs/development/rocm-modules/6/rpp/default.nix | 2 +- pkgs/development/rocm-modules/6/tensile/default.nix | 2 +- pkgs/development/rocm-modules/6/update.nix | 7 ++++--- 49 files changed, 59 insertions(+), 52 deletions(-) diff --git a/pkgs/development/rocm-modules/6/clang-ocl/default.nix b/pkgs/development/rocm-modules/6/clang-ocl/default.nix index 959c9d327121..7d366e53ae56 100644 --- a/pkgs/development/rocm-modules/6/clang-ocl/default.nix +++ b/pkgs/development/rocm-modules/6/clang-ocl/default.nix @@ -37,6 +37,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/clr/default.nix b/pkgs/development/rocm-modules/6/clr/default.nix index e4af02c5e21f..e6a5d514c52f 100644 --- a/pkgs/development/rocm-modules/6/clr/default.nix +++ b/pkgs/development/rocm-modules/6/clr/default.nix @@ -175,6 +175,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/clr/test-opencl-example.nix b/pkgs/development/rocm-modules/6/clr/test-opencl-example.nix index d6714c6b7d63..24fc483847d3 100644 --- a/pkgs/development/rocm-modules/6/clr/test-opencl-example.nix +++ b/pkgs/development/rocm-modules/6/clr/test-opencl-example.nix @@ -52,7 +52,7 @@ let in makeImpureTest { name = "opencl-example"; - testedPackage = "rocmPackages_5.clr"; + testedPackage = "rocmPackages_6.clr"; sandboxPaths = [ "/sys" "/dev/dri" "/dev/kfd" ]; diff --git a/pkgs/development/rocm-modules/6/clr/test-rocm-smi.nix b/pkgs/development/rocm-modules/6/clr/test-rocm-smi.nix index 25c0a7e0c32c..6f2d3c788289 100644 --- a/pkgs/development/rocm-modules/6/clr/test-rocm-smi.nix +++ b/pkgs/development/rocm-modules/6/clr/test-rocm-smi.nix @@ -7,7 +7,7 @@ makeImpureTest { name = "rocm-smi"; - testedPackage = "rocmPackages_5.clr"; + testedPackage = "rocmPackages_6.clr"; nativeBuildInputs = [ clinfo rocm-smi ]; OCL_ICD_VENDORS = "${clr.icd}/etc/OpenCL/vendors"; diff --git a/pkgs/development/rocm-modules/6/composable_kernel/default.nix b/pkgs/development/rocm-modules/6/composable_kernel/default.nix index 265a234baed5..ac360482f4af 100644 --- a/pkgs/development/rocm-modules/6/composable_kernel/default.nix +++ b/pkgs/development/rocm-modules/6/composable_kernel/default.nix @@ -89,6 +89,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/half/default.nix b/pkgs/development/rocm-modules/6/half/default.nix index 887814b60e5b..77f37790a890 100644 --- a/pkgs/development/rocm-modules/6/half/default.nix +++ b/pkgs/development/rocm-modules/6/half/default.nix @@ -34,6 +34,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.unix; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hip-common/default.nix b/pkgs/development/rocm-modules/6/hip-common/default.nix index b8bc48db707c..8b0a4fc5add2 100644 --- a/pkgs/development/rocm-modules/6/hip-common/default.nix +++ b/pkgs/development/rocm-modules/6/hip-common/default.nix @@ -39,6 +39,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hipblas/default.nix b/pkgs/development/rocm-modules/6/hipblas/default.nix index f43947b6645f..5989aff90a7d 100644 --- a/pkgs/development/rocm-modules/6/hipblas/default.nix +++ b/pkgs/development/rocm-modules/6/hipblas/default.nix @@ -94,6 +94,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hipcc/default.nix b/pkgs/development/rocm-modules/6/hipcc/default.nix index cc1d8525aa1f..96bc914e3a67 100644 --- a/pkgs/development/rocm-modules/6/hipcc/default.nix +++ b/pkgs/development/rocm-modules/6/hipcc/default.nix @@ -41,6 +41,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hipcub/default.nix b/pkgs/development/rocm-modules/6/hipcub/default.nix index c7e0244fdf19..8f6f97ed5f20 100644 --- a/pkgs/development/rocm-modules/6/hipcub/default.nix +++ b/pkgs/development/rocm-modules/6/hipcub/default.nix @@ -85,6 +85,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ bsd3 ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hipfft/default.nix b/pkgs/development/rocm-modules/6/hipfft/default.nix index d2a7912f4b91..dca6337e6de8 100644 --- a/pkgs/development/rocm-modules/6/hipfft/default.nix +++ b/pkgs/development/rocm-modules/6/hipfft/default.nix @@ -105,6 +105,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hipfort/default.nix b/pkgs/development/rocm-modules/6/hipfort/default.nix index c8b00aa95044..73f583f1fe1d 100644 --- a/pkgs/development/rocm-modules/6/hipfort/default.nix +++ b/pkgs/development/rocm-modules/6/hipfort/default.nix @@ -61,6 +61,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; # mitx11 maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hipify/default.nix b/pkgs/development/rocm-modules/6/hipify/default.nix index ced4f93e89b0..b76016124f1d 100644 --- a/pkgs/development/rocm-modules/6/hipify/default.nix +++ b/pkgs/development/rocm-modules/6/hipify/default.nix @@ -45,6 +45,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hipsolver/default.nix b/pkgs/development/rocm-modules/6/hipsolver/default.nix index 73a89c53239b..43971dc23ebf 100644 --- a/pkgs/development/rocm-modules/6/hipsolver/default.nix +++ b/pkgs/development/rocm-modules/6/hipsolver/default.nix @@ -95,6 +95,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hipsparse/default.nix b/pkgs/development/rocm-modules/6/hipsparse/default.nix index 3e77ecb2d03c..ba5854e01f39 100644 --- a/pkgs/development/rocm-modules/6/hipsparse/default.nix +++ b/pkgs/development/rocm-modules/6/hipsparse/default.nix @@ -131,6 +131,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix index 5b665e125daa..b88485b5fa37 100644 --- a/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix +++ b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/default.nix @@ -43,6 +43,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ unfree ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix index 881f3706b946..7fdcfad85924 100644 --- a/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix +++ b/pkgs/development/rocm-modules/6/hsa-amd-aqlprofile-bin/update.nix @@ -26,7 +26,7 @@ let ((patch++)) extVersion="$(echo "$deb" | grep -o -P "(?<=\.....).*(?=\..*-)")" - if (( ''${#extVersion} == 5 )) && (( $extVersion <= ${extVersion} )); then + if (( ''${#extVersion} == 6 )) && (( $extVersion <= ${extVersion} )); then url="https://repo.radeon.com/rocm/apt/${major}.${minor}.$patch/pool/main/h/${prefix}/" res="$(curl -sL "$url")" deb="${prefix}$(echo "$res" | grep -o -P "(?<=href=\"${prefix}).*(?=\">)" | tail -1)" @@ -39,14 +39,19 @@ let version="$(echo $extVersion | sed "s/0/./1" | sed "s/0/./1")" IFS='.' read -a version_arr <<< "$version" - if (( ''${#extVersion} == 5 )); then + if (( ''${version_arr[0]} > 6 )); then + echo "'rocmPackages_6.${prefix}-bin' is already at it's maximum allowed version.''\nAny further upgrades should go into 'rocmPackages_X.${prefix}-bin'." 1>&2 + exit 1 + fi + + if (( ''${#extVersion} == 6 )); then repoVersion="$version" if (( ''${version:4:1} == 0 )); then repoVersion=''${version:0:3} fi - update-source-version rocmPackages_5.${prefix}-bin "$version" "" "$apt/$repoVersion/$pool$deb" --ignore-same-hash + update-source-version rocmPackages_6.${prefix}-bin "$version" "" "$apt/$repoVersion/$pool$deb" --ignore-same-hash fi ''; in [ updateScript ] diff --git a/pkgs/development/rocm-modules/6/llvm/base.nix b/pkgs/development/rocm-modules/6/llvm/base.nix index ace665f41137..95f57b052045 100644 --- a/pkgs/development/rocm-modules/6/llvm/base.nix +++ b/pkgs/development/rocm-modules/6/llvm/base.nix @@ -170,6 +170,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ ncsa ] ++ extraLicenses; maintainers = with maintainers; [ acowley lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = isBroken; + broken = isBroken || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/migraphx/default.nix b/pkgs/development/rocm-modules/6/migraphx/default.nix index 4185f2c89f36..cf9f71f839b3 100644 --- a/pkgs/development/rocm-modules/6/migraphx/default.nix +++ b/pkgs/development/rocm-modules/6/migraphx/default.nix @@ -166,6 +166,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/miopen/default.nix b/pkgs/development/rocm-modules/6/miopen/default.nix index c56f8b2e96fe..ca52ec397542 100644 --- a/pkgs/development/rocm-modules/6/miopen/default.nix +++ b/pkgs/development/rocm-modules/6/miopen/default.nix @@ -233,6 +233,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/mivisionx/default.nix b/pkgs/development/rocm-modules/6/mivisionx/default.nix index a7f565ca0355..e3e6172709fe 100644 --- a/pkgs/development/rocm-modules/6/mivisionx/default.nix +++ b/pkgs/development/rocm-modules/6/mivisionx/default.nix @@ -137,6 +137,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rccl/default.nix b/pkgs/development/rocm-modules/6/rccl/default.nix index c20de315746e..cdbbd70440c2 100644 --- a/pkgs/development/rocm-modules/6/rccl/default.nix +++ b/pkgs/development/rocm-modules/6/rccl/default.nix @@ -86,6 +86,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ bsd2 bsd3 ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rdc/default.nix b/pkgs/development/rocm-modules/6/rdc/default.nix index ec6cc95f0648..6591e55a0cc7 100644 --- a/pkgs/development/rocm-modules/6/rdc/default.nix +++ b/pkgs/development/rocm-modules/6/rdc/default.nix @@ -119,7 +119,7 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - # broken = versions.minor finalAttrs.version != versions.minor rocm-smi.version; + # broken = versions.minor finalAttrs.version != versions.minor rocm-smi.version || versionAtLeast finalAttrs.version "7.0.0"; broken = true; # Too many errors, unsure how to fix }; }) diff --git a/pkgs/development/rocm-modules/6/rocalution/default.nix b/pkgs/development/rocm-modules/6/rocalution/default.nix index 1872d3608e61..056cbb9b358c 100644 --- a/pkgs/development/rocm-modules/6/rocalution/default.nix +++ b/pkgs/development/rocm-modules/6/rocalution/default.nix @@ -110,6 +110,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocblas/default.nix b/pkgs/development/rocm-modules/6/rocblas/default.nix index e7a34733c851..296167bb6f28 100644 --- a/pkgs/development/rocm-modules/6/rocblas/default.nix +++ b/pkgs/development/rocm-modules/6/rocblas/default.nix @@ -204,6 +204,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocdbgapi/default.nix b/pkgs/development/rocm-modules/6/rocdbgapi/default.nix index ac8f3ede2e92..9d1006c32945 100644 --- a/pkgs/development/rocm-modules/6/rocdbgapi/default.nix +++ b/pkgs/development/rocm-modules/6/rocdbgapi/default.nix @@ -106,6 +106,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocfft/default.nix b/pkgs/development/rocm-modules/6/rocfft/default.nix index da7fa76abd81..9fd1f02398b3 100644 --- a/pkgs/development/rocm-modules/6/rocfft/default.nix +++ b/pkgs/development/rocm-modules/6/rocfft/default.nix @@ -164,6 +164,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = with maintainers; [ kira-bruneau ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocgdb/default.nix b/pkgs/development/rocm-modules/6/rocgdb/default.nix index 0952c224b927..919b3e70f6e0 100644 --- a/pkgs/development/rocm-modules/6/rocgdb/default.nix +++ b/pkgs/development/rocm-modules/6/rocgdb/default.nix @@ -54,5 +54,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ gpl2 gpl3 bsd3 ]; maintainers = teams.rocm.members; platforms = platforms.linux; + broken = versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-cmake/default.nix b/pkgs/development/rocm-modules/6/rocm-cmake/default.nix index 745045a50353..cd3fd9c035da 100644 --- a/pkgs/development/rocm-modules/6/rocm-cmake/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-cmake/default.nix @@ -30,6 +30,6 @@ stdenv.mkDerivation (finalAttrs: { license = licenses.mit; maintainers = teams.rocm.members; platforms = platforms.unix; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-comgr/default.nix b/pkgs/development/rocm-modules/6/rocm-comgr/default.nix index e089d5c29b36..c610b63abf68 100644 --- a/pkgs/development/rocm-modules/6/rocm-comgr/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-comgr/default.nix @@ -50,6 +50,6 @@ in stdenv.mkDerivation (finalAttrs: { license = licenses.ncsa; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-core/default.nix b/pkgs/development/rocm-modules/6/rocm-core/default.nix index 9b779a684bff..2601918d9165 100644 --- a/pkgs/development/rocm-modules/6/rocm-core/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-core/default.nix @@ -33,6 +33,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix b/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix index be5609d989d9..defcf2e60ecb 100644 --- a/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-device-libs/default.nix @@ -45,6 +45,6 @@ in stdenv.mkDerivation (finalAttrs: { license = licenses.ncsa; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-runtime/default.nix b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix index c0e5f69e8d5a..927283eb4b02 100644 --- a/pkgs/development/rocm-modules/6/rocm-runtime/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix @@ -74,6 +74,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ ncsa ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-smi/default.nix b/pkgs/development/rocm-modules/6/rocm-smi/default.nix index 47d55d13c1ef..aeb38e4ad8de 100644 --- a/pkgs/development/rocm-modules/6/rocm-smi/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-smi/default.nix @@ -49,6 +49,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = [ "x86_64-linux" ]; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocm-thunk/default.nix b/pkgs/development/rocm-modules/6/rocm-thunk/default.nix index e77f576678de..99a1d3c542d1 100644 --- a/pkgs/development/rocm-modules/6/rocm-thunk/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-thunk/default.nix @@ -49,6 +49,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ bsd2 mit ]; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocminfo/default.nix b/pkgs/development/rocm-modules/6/rocminfo/default.nix index 69428c2f683d..cb1df3f1fd43 100644 --- a/pkgs/development/rocm-modules/6/rocminfo/default.nix +++ b/pkgs/development/rocm-modules/6/rocminfo/default.nix @@ -58,6 +58,6 @@ stdenv.mkDerivation (finalAttrs: { license = licenses.ncsa; maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members; platforms = platforms.linux; - broken = stdenv.isAarch64 || versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = stdenv.isAarch64 || versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocmlir/default.nix b/pkgs/development/rocm-modules/6/rocmlir/default.nix index 2b9956f97a8f..78ce510e797f 100644 --- a/pkgs/development/rocm-modules/6/rocmlir/default.nix +++ b/pkgs/development/rocm-modules/6/rocmlir/default.nix @@ -126,6 +126,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ asl20 ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocprim/default.nix b/pkgs/development/rocm-modules/6/rocprim/default.nix index 9d3d12467045..e9996cae61e7 100644 --- a/pkgs/development/rocm-modules/6/rocprim/default.nix +++ b/pkgs/development/rocm-modules/6/rocprim/default.nix @@ -81,6 +81,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocprofiler/default.nix b/pkgs/development/rocm-modules/6/rocprofiler/default.nix index c4f0934f1c6b..005f2df875d7 100644 --- a/pkgs/development/rocm-modules/6/rocprofiler/default.nix +++ b/pkgs/development/rocm-modules/6/rocprofiler/default.nix @@ -131,6 +131,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; # mitx11 maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor clr.version; + broken = versions.minor finalAttrs.version != versions.minor clr.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix b/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix index 755b98524bd8..625a8ef5a364 100644 --- a/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix +++ b/pkgs/development/rocm-modules/6/rocr-debug-agent/default.nix @@ -54,6 +54,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ ncsa ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocrand/default.nix b/pkgs/development/rocm-modules/6/rocrand/default.nix index a4dae75b88bd..f09ff3b12059 100644 --- a/pkgs/development/rocm-modules/6/rocrand/default.nix +++ b/pkgs/development/rocm-modules/6/rocrand/default.nix @@ -83,6 +83,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocsolver/default.nix b/pkgs/development/rocm-modules/6/rocsolver/default.nix index 34e66e2725ac..42334d396b04 100644 --- a/pkgs/development/rocm-modules/6/rocsolver/default.nix +++ b/pkgs/development/rocm-modules/6/rocsolver/default.nix @@ -95,6 +95,6 @@ stdenv.mkDerivation (finalAttrs: { platforms = platforms.linux; timeout = 14400; # 4 hours maxSilent = 14400; # 4 hours - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocsparse/default.nix b/pkgs/development/rocm-modules/6/rocsparse/default.nix index 2a0203ab1b27..2a1043b33c05 100644 --- a/pkgs/development/rocm-modules/6/rocsparse/default.nix +++ b/pkgs/development/rocm-modules/6/rocsparse/default.nix @@ -144,6 +144,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocthrust/default.nix b/pkgs/development/rocm-modules/6/rocthrust/default.nix index 224499d70e12..e34e3ada6b99 100644 --- a/pkgs/development/rocm-modules/6/rocthrust/default.nix +++ b/pkgs/development/rocm-modules/6/rocthrust/default.nix @@ -82,6 +82,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ asl20 ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/roctracer/default.nix b/pkgs/development/rocm-modules/6/roctracer/default.nix index fcbcfdd5dc4a..2523a9ab5330 100644 --- a/pkgs/development/rocm-modules/6/roctracer/default.nix +++ b/pkgs/development/rocm-modules/6/roctracer/default.nix @@ -98,6 +98,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; # mitx11 maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor clr.version; + broken = versions.minor finalAttrs.version != versions.minor clr.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rocwmma/default.nix b/pkgs/development/rocm-modules/6/rocwmma/default.nix index ff8da5b71695..da7791f51a3a 100644 --- a/pkgs/development/rocm-modules/6/rocwmma/default.nix +++ b/pkgs/development/rocm-modules/6/rocwmma/default.nix @@ -100,6 +100,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/rpp/default.nix b/pkgs/development/rocm-modules/6/rpp/default.nix index e84942ba3551..239c99017d02 100644 --- a/pkgs/development/rocm-modules/6/rpp/default.nix +++ b/pkgs/development/rocm-modules/6/rpp/default.nix @@ -83,6 +83,6 @@ stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; }; }) diff --git a/pkgs/development/rocm-modules/6/tensile/default.nix b/pkgs/development/rocm-modules/6/tensile/default.nix index f639a915c445..af33fd789e84 100644 --- a/pkgs/development/rocm-modules/6/tensile/default.nix +++ b/pkgs/development/rocm-modules/6/tensile/default.nix @@ -60,6 +60,6 @@ buildPythonPackage rec { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor version != versions.minor stdenv.cc.version; + broken = versions.minor version != versions.minor stdenv.cc.version || versionAtLeast version "7.0.0"; }; } diff --git a/pkgs/development/rocm-modules/6/update.nix b/pkgs/development/rocm-modules/6/update.nix index e20697675c11..4d531e6bb176 100644 --- a/pkgs/development/rocm-modules/6/update.nix +++ b/pkgs/development/rocm-modules/6/update.nix @@ -23,10 +23,11 @@ let IFS='.' read -a version_arr <<< "$version" - if [ "''${#version_arr[*]}" == 2 ]; then - version="''${version}.0" + if (( ''${version_arr[0]} > 6 )); then + echo "'rocmPackages_6.${pname}' is already at it's maximum allowed version.''\nAny further upgrades should go into 'rocmPackages_X.${pname}'." 1>&2 + exit 1 fi - update-source-version rocmPackages_5.${pname} "$version" --ignore-same-hash + update-source-version rocmPackages_6.${pname} "$version" --ignore-same-hash ''; in [ updateScript ] From 10de03d281b9e3ceac1d3546a0d90961e0b25ec0 Mon Sep 17 00:00:00 2001 From: Indy Ray Date: Thu, 29 Feb 2024 23:27:18 +0100 Subject: [PATCH 20/32] rocmPackages: fix rocprofiler build --- .../0000-dont-install-tests-hsaco.patch | 4 +- .../rocprofiler/0001-fix-shell-scripts.patch | 52 +++++++++---------- .../0002-include-stdint-in-version.patch | 12 +++++ .../rocm-modules/6/rocprofiler/default.nix | 4 ++ 4 files changed, 43 insertions(+), 29 deletions(-) create mode 100644 pkgs/development/rocm-modules/6/rocprofiler/0002-include-stdint-in-version.patch diff --git a/pkgs/development/rocm-modules/6/rocprofiler/0000-dont-install-tests-hsaco.patch b/pkgs/development/rocm-modules/6/rocprofiler/0000-dont-install-tests-hsaco.patch index aaa31c4974d5..70550d0119a9 100644 --- a/pkgs/development/rocm-modules/6/rocprofiler/0000-dont-install-tests-hsaco.patch +++ b/pkgs/development/rocm-modules/6/rocprofiler/0000-dont-install-tests-hsaco.patch @@ -1,8 +1,8 @@ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt -index 8473a42..07ea873 100644 +index 46efbd5..ca2cc3b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt -@@ -112,10 +112,6 @@ function(generate_hsaco TARGET_ID INPUT_FILE OUTPUT_FILE) +@@ -127,10 +127,6 @@ function(generate_hsaco TARGET_ID INPUT_FILE OUTPUT_FILE) DEPENDS ${INPUT_FILE} clang COMMENT "Building ${OUTPUT_FILE}..." VERBATIM) diff --git a/pkgs/development/rocm-modules/6/rocprofiler/0001-fix-shell-scripts.patch b/pkgs/development/rocm-modules/6/rocprofiler/0001-fix-shell-scripts.patch index aba7709c4edb..6dfc8e0d6e55 100644 --- a/pkgs/development/rocm-modules/6/rocprofiler/0001-fix-shell-scripts.patch +++ b/pkgs/development/rocm-modules/6/rocprofiler/0001-fix-shell-scripts.patch @@ -1,18 +1,18 @@ diff --git a/bin/rocprofv2 b/bin/rocprofv2 -index 92f7489..8839d4d 100755 +index d0445e7..6079af8 100755 --- a/bin/rocprofv2 +++ b/bin/rocprofv2 -@@ -2,7 +2,8 @@ - set -eo pipefail - CURRENT_DIR="$(dirname -- "$0")" - ROCPROFV2_DIR=$(dirname -- $(realpath ${BASH_SOURCE[0]})) --ROCM_DIR=$(dirname -- "$ROCPROFV2_DIR") -+ROCPROFILER_DIR=$(dirname -- "$ROCPROFV2_DIR") +@@ -7,7 +7,8 @@ if [ -n "${ROCP_PRELOAD}" ]; then LD_PRELOAD="${ROCP_PRELOAD}"; fi + + CURRENT_DIR="$( dirname -- "$0"; )"; + ROCPROFV2_DIR=$(dirname -- $(realpath ${BASH_SOURCE[0]})); +-ROCM_DIR=$( dirname -- "$ROCPROFV2_DIR"; ) ++ROCPROFILER_DIR=$( dirname -- "$ROCPROFV2_DIR"; ) +ROCM_DIR=@rocmtoolkit_merged@ - PLUGIN_LIST=("ctf" "perfetto" "file" "att") + PLUGIN_LIST=("ctf" "perfetto" "file" "att" "cli") RUN_FROM_BUILD=0 if [[ $ROCPROFV2_DIR == *"/build"* ]]; then -@@ -10,7 +11,7 @@ if [[ $ROCPROFV2_DIR == *"/build"* ]]; then +@@ -15,7 +16,7 @@ if [[ $ROCPROFV2_DIR == *"/build"* ]]; then ROCM_DIR=$ROCPROFV2_DIR fi @@ -20,19 +20,17 @@ index 92f7489..8839d4d 100755 +export ROCPROFILER_METRICS_PATH=$ROCPROFILER_DIR/libexec/rocprofiler/counters/derived_counters.xml export LD_LIBRARY_PATH=$ROCM_DIR/lib:$LD_LIBRARY_PATH - usage() { -@@ -70,8 +71,8 @@ while [ 1 ]; do + # Define color code +@@ -83,7 +84,7 @@ while [ 1 ]; do exit 1 fi - elif [[ "$1" = "--list-counters" ]]; then + elif [[ "$1" == "--list-counters" ]]; then - export LD_PRELOAD=$LD_PRELOAD:$ROCM_DIR/lib/rocprofiler/librocprofiler_tool.so -- eval $ROCM_DIR/libexec/rocprofiler/ctrl -+ export LD_PRELOAD=$LD_PRELOAD:$ROCPROFILER_DIR/lib/rocprofiler/librocprofiler_tool.so -+ eval $ROCPROFILER_DIR/libexec/rocprofiler/ctrl ++ export LD_PRELOAD=$LD_PRELOAD:$ROC_DIR/lib/rocprofiler/librocprofiler_tool.so + eval $ROCM_DIR/libexec/rocprofiler/ctrl exit 1 - elif [[ "$1" = "-i" || "$1" = "--input" ]]; then - if [ $2 ] && [ -n $2 ] && [ -r $2 ]; then -@@ -171,7 +172,7 @@ while [ 1 ]; do + elif [[ "$1" == "-i" || "$1" == "--input" ]]; then +@@ -221,7 +222,7 @@ while [ 1 ]; do if [ $RUN_FROM_BUILD == 1 ]; then ATT_PATH=$ROCM_DIR/plugin/att/att/att.py else @@ -41,7 +39,7 @@ index 92f7489..8839d4d 100755 export ROCPROFV2_ATT_LIB_PATH=$ROCM_DIR/lib/hsa-amd-aqlprofile/librocprofv2_att.so fi ATT_ARGV=$3 -@@ -236,13 +237,13 @@ if [ -n "$PMC_LINES" ] && [ ! -n "$ATT_ARGV" ]; then +@@ -294,13 +295,13 @@ if [ -n "$PMC_LINES" ] && [ ! -n "$ATT_ARGV" ]; then export OUTPUT_PATH=$FINAL_PATH fi let COUNTER=COUNTER+1 @@ -58,11 +56,11 @@ index 92f7489..8839d4d 100755 get_pmc_results_txt_path() { diff --git a/bin/rpl_run.sh b/bin/rpl_run.sh -index c1a3daa..bc868a5 100755 +index 6b236ed..a9c233c 100755 --- a/bin/rpl_run.sh +++ b/bin/rpl_run.sh -@@ -24,16 +24,17 @@ - +@@ -25,16 +25,17 @@ + ROCPROF_ARGS="$*" time_stamp=`date +%y%m%d_%H%M%S` BIN_DIR=$(dirname $(realpath ${BASH_SOURCE[0]})) -ROOT_DIR=$(dirname $BIN_DIR) @@ -80,9 +78,9 @@ index c1a3daa..bc868a5 100755 -PROF_BIN_DIR=$ROOT_DIR/libexec/rocprofiler +PROF_BIN_DIR=$ROCPROFILER_DIR/libexec/rocprofiler - if [ -z "$ROCP_PYTHON_VERSION" ] ; then - ROCP_PYTHON_VERSION=python3 -@@ -73,7 +74,7 @@ export ROCP_METRICS=$TLIB_PATH/metrics.xml + # check if rocprof is supportd on this gpu arch + V1_SUPPORTED_GPU_ARCHS=("gfx80x","gfx90x","gfx10xx","gfx94x") +@@ -80,7 +81,7 @@ unset ROCP_PROXY_QUEUE # Disable AQL-profile read API export AQLPROFILE_READ_API=0 # ROC Profiler package path @@ -91,7 +89,7 @@ index c1a3daa..bc868a5 100755 # enabled SPM KFD mode export ROCP_SPM_KFD_MODE=1 -@@ -350,7 +351,7 @@ convert_time_val() { +@@ -400,7 +401,7 @@ unset_v1_envs() { ################################################################################################ # main @@ -100,7 +98,7 @@ index c1a3daa..bc868a5 100755 # Parsing arguments if [ -z "$1" ] ; then usage -@@ -557,7 +558,7 @@ elif [ "$input_type" = "txt" -o "$input_type" = "none" ] ; then +@@ -633,7 +634,7 @@ elif [ "$input_type" = "txt" -o "$input_type" = "none" ] ; then else echo "" > $RES_DIR/input.xml fi diff --git a/pkgs/development/rocm-modules/6/rocprofiler/0002-include-stdint-in-version.patch b/pkgs/development/rocm-modules/6/rocprofiler/0002-include-stdint-in-version.patch new file mode 100644 index 000000000000..4e4aaad463d1 --- /dev/null +++ b/pkgs/development/rocm-modules/6/rocprofiler/0002-include-stdint-in-version.patch @@ -0,0 +1,12 @@ +diff --git a/src/tools/versioning/version.cpp b/src/tools/versioning/version.cpp +index 11bdd00..339743c 100644 +--- a/src/tools/versioning/version.cpp ++++ b/src/tools/versioning/version.cpp +@@ -1,6 +1,7 @@ + #include + #include + #include ++#include + + + int main() { diff --git a/pkgs/development/rocm-modules/6/rocprofiler/default.nix b/pkgs/development/rocm-modules/6/rocprofiler/default.nix index 005f2df875d7..ca6291992d85 100644 --- a/pkgs/development/rocm-modules/6/rocprofiler/default.nix +++ b/pkgs/development/rocm-modules/6/rocprofiler/default.nix @@ -64,6 +64,9 @@ in stdenv.mkDerivation (finalAttrs: { src = ./0001-fix-shell-scripts.patch; rocmtoolkit_merged = rocmtoolkit-merged; }) + + # Fix for missing uint32_t not defined + ./0002-include-stdint-in-version.patch ]; nativeBuildInputs = [ @@ -74,6 +77,7 @@ in stdenv.mkDerivation (finalAttrs: { python3Packages.cppheaderparser python3Packages.pyyaml python3Packages.barectf + python3Packages.pandas ]; buildInputs = [ From f3b4f4a99019c716360e9d19bd0a46569ba3665f Mon Sep 17 00:00:00 2001 From: Indy Ray Date: Thu, 29 Feb 2024 23:29:32 +0100 Subject: [PATCH 21/32] rocmPackages: stop adding symlinks to hipify output --- pkgs/development/rocm-modules/6/hipify/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkgs/development/rocm-modules/6/hipify/default.nix b/pkgs/development/rocm-modules/6/hipify/default.nix index b76016124f1d..29109a701856 100644 --- a/pkgs/development/rocm-modules/6/hipify/default.nix +++ b/pkgs/development/rocm-modules/6/hipify/default.nix @@ -32,10 +32,7 @@ stdenv.mkDerivation (finalAttrs: { repo = finalAttrs.src.repo; }; - # Fixup bad symlinks postInstall = '' - mkdir $out/hip - ln -s $out/bin $out/hip/bin patchShebangs $out/bin ''; From f29675f0bf8dbe708406550bc0819d5bf0a5f5b0 Mon Sep 17 00:00:00 2001 From: Indy Ray Date: Thu, 29 Feb 2024 23:30:50 +0100 Subject: [PATCH 22/32] rocmPackages: use wildcard when patching clr shebangs --- pkgs/development/rocm-modules/6/clr/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/rocm-modules/6/clr/default.nix b/pkgs/development/rocm-modules/6/clr/default.nix index e6a5d514c52f..07740156ef96 100644 --- a/pkgs/development/rocm-modules/6/clr/default.nix +++ b/pkgs/development/rocm-modules/6/clr/default.nix @@ -94,8 +94,8 @@ in stdenv.mkDerivation (finalAttrs: { ]; postPatch = '' + patchShebangs hipamd/*.sh patchShebangs hipamd/src - patchShebangs hipamd/download_libamhip64_v5.sh # We're not on Windows so these are never installed to hipcc... substituteInPlace hipamd/CMakeLists.txt \ From 5eac14880e4a1f5bfd5b5cdd62faedc8785e7b20 Mon Sep 17 00:00:00 2001 From: Indy Ray Date: Thu, 29 Feb 2024 23:31:56 +0100 Subject: [PATCH 23/32] rocmPackages: remove unnecessary fixup phase when building rocm-runtime --- pkgs/development/rocm-modules/6/rocm-runtime/default.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pkgs/development/rocm-modules/6/rocm-runtime/default.nix b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix index 927283eb4b02..8c3d0cdc976d 100644 --- a/pkgs/development/rocm-modules/6/rocm-runtime/default.nix +++ b/pkgs/development/rocm-modules/6/rocm-runtime/default.nix @@ -57,11 +57,6 @@ stdenv.mkDerivation (finalAttrs: { --replace '-mcode-object-version=4' '-mcode-object-version=5' ''; - fixupPhase = '' - mkdir $out/hsa - ln -s $out/{include,lib} $out/hsa - ''; - passthru.updateScript = rocmUpdateScript { name = finalAttrs.pname; owner = finalAttrs.src.owner; From 44b03bd350a08a8307ab05bdd4c139399d2d3247 Mon Sep 17 00:00:00 2001 From: Indy Ray Date: Thu, 29 Feb 2024 23:34:39 +0100 Subject: [PATCH 24/32] rocmPackages: remove gcc12Stdenv usage, move rocgdb to rocmClangStdenv Other packages use the default stdenv now. --- pkgs/development/rocm-modules/6/default.nix | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/pkgs/development/rocm-modules/6/default.nix b/pkgs/development/rocm-modules/6/default.nix index 6066dbe42223..551560cadee1 100644 --- a/pkgs/development/rocm-modules/6/default.nix +++ b/pkgs/development/rocm-modules/6/default.nix @@ -1,4 +1,4 @@ -{ gcc12Stdenv # FIXME: Try removing this with a new ROCm release https://github.com/NixOS/nixpkgs/issues/271943 +{ stdenv , callPackage , recurseIntoAttrs , symlinkJoin @@ -73,12 +73,11 @@ in rec { # Broken, too many errors rdc = callPackage ./rdc { - inherit rocmUpdateScript rocm-smi rocm-runtime; - stdenv = gcc12Stdenv; + inherit rocmUpdateScript rocm-smi rocm-runtime stdenv; # stdenv = llvm.rocmClangStdenv; }; - rocm-docs-core = python3Packages.callPackage ./rocm-docs-core { stdenv = gcc12Stdenv; }; + rocm-docs-core = python3Packages.callPackage ./rocm-docs-core { inherit stdenv; }; hip-common = callPackage ./hip-common { inherit rocmUpdateScript; @@ -106,22 +105,19 @@ in rec { # Needs GCC rocprofiler = callPackage ./rocprofiler { - inherit rocmUpdateScript clr rocm-core rocm-thunk rocm-device-libs roctracer rocdbgapi rocm-smi hsa-amd-aqlprofile-bin; + inherit rocmUpdateScript clr rocm-core rocm-thunk rocm-device-libs roctracer rocdbgapi rocm-smi hsa-amd-aqlprofile-bin stdenv; inherit (llvm) clang; - stdenv = gcc12Stdenv; }; # Needs GCC roctracer = callPackage ./roctracer { - inherit rocmUpdateScript rocm-device-libs rocm-runtime clr; - stdenv = gcc12Stdenv; + inherit rocmUpdateScript rocm-device-libs rocm-runtime clr stdenv; }; - # Needs GCC rocgdb = callPackage ./rocgdb { inherit rocmUpdateScript; elfutils = elfutils.override { enableDebuginfod = true; }; - stdenv = gcc12Stdenv; + stdenv = llvm.rocmClangStdenv; }; rocdbgapi = callPackage ./rocdbgapi { From e908ad7d01158b2aa80ca80074fcc22fb4304ed0 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 2 Mar 2024 18:37:46 +0100 Subject: [PATCH 25/32] opensycl: build against ROCm 5.7 --- pkgs/development/compilers/opensycl/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/development/compilers/opensycl/default.nix b/pkgs/development/compilers/opensycl/default.nix index c406d4c9d5c2..cdf9a5b9d22c 100644 --- a/pkgs/development/compilers/opensycl/default.nix +++ b/pkgs/development/compilers/opensycl/default.nix @@ -9,11 +9,13 @@ , libffi , makeWrapper , config -, rocmPackages +, rocmPackages_5 , rocmSupport ? config.rocmSupport }: let inherit (llvmPackages_15) stdenv; + # move to newer ROCm version once supported + rocmPackages = rocmPackages_5; in stdenv.mkDerivation rec { pname = "OpenSYCL"; From 68e19d42428a7eb5a0f2e47e0f2d39c7bb0b6e3d Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 2 Mar 2024 18:38:18 +0100 Subject: [PATCH 26/32] magma: build against ROCm 5.7 --- pkgs/development/libraries/science/math/magma/generic.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/development/libraries/science/math/magma/generic.nix b/pkgs/development/libraries/science/math/magma/generic.nix index a2ccc2e1c5b5..757a1b77dafc 100644 --- a/pkgs/development/libraries/science/math/magma/generic.nix +++ b/pkgs/development/libraries/science/math/magma/generic.nix @@ -14,7 +14,7 @@ , fetchurl , gfortran , gpuTargets ? [ ] # Non-CUDA targets, that is HIP -, rocmPackages +, rocmPackages_5 , lapack , lib , libpthreadstubs @@ -44,6 +44,9 @@ let inherit (effectiveCudaPackages) cudaAtLeast cudaFlags cudaOlder; inherit (cudaFlags) cudaCapabilities; + # move to newer ROCm version once supported + rocmPackages = rocmPackages_5; + # NOTE: The lists.subtractLists function is perhaps a bit unintuitive. It subtracts the elements # of the first list *from* the second list. That means: # lists.subtractLists a b = b - a From 1c842526a434290b974809a2c7602ec88e856b3e Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sat, 2 Mar 2024 18:39:14 +0100 Subject: [PATCH 27/32] rocmPackages: fix rocmlir build (e2e test generation) --- pkgs/development/rocm-modules/6/default.nix | 2 +- pkgs/development/rocm-modules/6/rocmlir/default.nix | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/development/rocm-modules/6/default.nix b/pkgs/development/rocm-modules/6/default.nix index 551560cadee1..982a9296a253 100644 --- a/pkgs/development/rocm-modules/6/default.nix +++ b/pkgs/development/rocm-modules/6/default.nix @@ -214,7 +214,7 @@ in rec { }; rocmlir = callPackage ./rocmlir { - inherit rocmUpdateScript rocm-cmake clr; + inherit rocmUpdateScript rocm-cmake rocminfo clr; stdenv = llvm.rocmClangStdenv; }; diff --git a/pkgs/development/rocm-modules/6/rocmlir/default.nix b/pkgs/development/rocm-modules/6/rocmlir/default.nix index 78ce510e797f..d8747009a10e 100644 --- a/pkgs/development/rocm-modules/6/rocmlir/default.nix +++ b/pkgs/development/rocm-modules/6/rocmlir/default.nix @@ -4,6 +4,7 @@ , rocmUpdateScript , cmake , rocm-cmake +, rocminfo , ninja , clr , git @@ -89,8 +90,12 @@ in stdenv.mkDerivation (finalAttrs: { patchShebangs mlir patchShebangs external/llvm-project/mlir/lib/Dialect/GPU/AmdDeviceLibsIncGen.py + # remove when no longer required + substituteInPlace mlir/test/{e2e/generateE2ETest.py,fusion/e2e/generate-fusion-tests.py} \ + --replace-fail "\"/opt/rocm/bin" "\"${rocminfo}/bin" + substituteInPlace mlir/utils/performance/common/CMakeLists.txt \ - --replace "/opt/rocm" "${clr}" + --replace-fail "/opt/rocm" "${clr}" ''; dontBuild = true; From 50bf7fb589ff50470da93a23b3a346792a2ab690 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sun, 3 Mar 2024 01:40:15 +0100 Subject: [PATCH 28/32] rocmPackages: remove miopen-opencl since its deprecated --- pkgs/development/rocm-modules/6/default.nix | 11 +++++------ pkgs/development/rocm-modules/6/miopen/default.nix | 6 +----- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/pkgs/development/rocm-modules/6/default.nix b/pkgs/development/rocm-modules/6/default.nix index 982a9296a253..4bd3679ce77f 100644 --- a/pkgs/development/rocm-modules/6/default.nix +++ b/pkgs/development/rocm-modules/6/default.nix @@ -256,13 +256,12 @@ in rec { boost = boost179.override { enableStatic = true; }; }; - miopen-hip = miopen.override { - useOpenCL = false; - }; + miopen-hip = miopen; - miopen-opencl = miopen.override { - useOpenCL = true; - }; + miopen-opencl= throw '' + 'miopen-opencl' has been deprecated. + It is still available for some time as part of rocmPackages_5. + ''; # Added 2024-3-3; migraphx = callPackage ./migraphx { inherit rocmUpdateScript rocm-cmake rocblas composable_kernel miopen clr half rocm-device-libs; diff --git a/pkgs/development/rocm-modules/6/miopen/default.nix b/pkgs/development/rocm-modules/6/miopen/default.nix index ca52ec397542..f78bcb602e69 100644 --- a/pkgs/development/rocm-modules/6/miopen/default.nix +++ b/pkgs/development/rocm-modules/6/miopen/default.nix @@ -31,7 +31,6 @@ , python3Packages , buildDocs ? false # Needs internet because of rocm-docs-core , buildTests ? false -, useOpenCL ? false }: let @@ -167,12 +166,9 @@ in stdenv.mkDerivation (finalAttrs: { "-DCMAKE_INSTALL_BINDIR=bin" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_INCLUDEDIR=include" - ] ++ lib.optionals (!useOpenCL) [ "-DCMAKE_C_COMPILER=hipcc" "-DCMAKE_CXX_COMPILER=hipcc" "-DMIOPEN_BACKEND=HIP" - ] ++ lib.optionals useOpenCL [ - "-DMIOPEN_BACKEND=OpenCL" ] ++ lib.optionals buildTests [ "-DBUILD_TESTS=ON" "-DMIOPEN_TEST_ALL=ON" @@ -211,7 +207,7 @@ in stdenv.mkDerivation (finalAttrs: { ln -sf ${gfx90a} $out/share/miopen/db/gfx90a.kdb ln -sf ${gfx1030} $out/share/miopen/db/gfx1030.kdb '' + lib.optionalString buildDocs '' - mv ../doc/html $out/share/doc/miopen-${if useOpenCL then "opencl" else "hip"} + mv ../doc/html $out/share/doc/miopen-hip '' + lib.optionalString buildTests '' mkdir -p $test/bin mv bin/test_* $test/bin From 37a4ad0ae26e84d70f7b40605e6f43a799717f9c Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sun, 3 Mar 2024 01:41:11 +0100 Subject: [PATCH 29/32] rocmPackages: update deprecation notice of miopengemm --- pkgs/development/rocm-modules/6/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/development/rocm-modules/6/default.nix b/pkgs/development/rocm-modules/6/default.nix index 4bd3679ce77f..e4e745f74b56 100644 --- a/pkgs/development/rocm-modules/6/default.nix +++ b/pkgs/development/rocm-modules/6/default.nix @@ -235,7 +235,10 @@ in rec { # hipBlasLt - Very broken with Tensile at the moment, only supports GFX9 # hipTensor - Only supports GFX9 - miopengemm = throw "'miopengemm' has been deprecated"; # Added 2024-2-10; + miopengemm= throw '' + 'miopen-opencl' has been deprecated. + It is still available for some time as part of rocmPackages_5. + ''; # Added 2024-3-3; composable_kernel = callPackage ./composable_kernel { inherit rocmUpdateScript rocm-cmake clr; From 4b2c4d24b9c08a66b14bcc178bd3297dcf7c9781 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Sun, 17 Mar 2024 21:20:41 +0100 Subject: [PATCH 30/32] rocmPackages: mark migraphx as broken --- pkgs/development/rocm-modules/6/migraphx/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/rocm-modules/6/migraphx/default.nix b/pkgs/development/rocm-modules/6/migraphx/default.nix index cf9f71f839b3..4cc2e4bd24b3 100644 --- a/pkgs/development/rocm-modules/6/migraphx/default.nix +++ b/pkgs/development/rocm-modules/6/migraphx/default.nix @@ -166,6 +166,6 @@ in stdenv.mkDerivation (finalAttrs: { license = with licenses; [ mit ]; maintainers = teams.rocm.members; platforms = platforms.linux; - broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0"; + broken = true; }; }) From fdf9078108e1a0637592c57abd547fe2928820b4 Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Thu, 21 Mar 2024 21:42:38 +0100 Subject: [PATCH 31/32] rocmPackages: add myself as a maintainer --- maintainers/team-list.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/maintainers/team-list.nix b/maintainers/team-list.nix index 0138338379c2..0c80a2a25f94 100644 --- a/maintainers/team-list.nix +++ b/maintainers/team-list.nix @@ -879,6 +879,7 @@ with lib.maintainers; { members = [ Madouura Flakebi + mschwaig ]; githubTeams = [ "rocm-maintainers" From 9a4f48bb251a2275293a85611a503b46bbdcf9cb Mon Sep 17 00:00:00 2001 From: Martin Schwaighofer Date: Fri, 22 Mar 2024 01:06:51 +0100 Subject: [PATCH 32/32] rocmPackages: use fetchpatch to get clr patches https://github.com/NixOS/nixpkgs/pull/286720 introduced these patches to address a specific compilation error mentioned in https://github.com/ROCm/HIP/issues/3403, but added them to the source tree because they were originally for ROCm 6. For ROCm 6, we can now switch to using fetchpatch to get the original commits as patches. --- .../6/clr/add-missing-operators.patch | 979 ------------------ .../rocm-modules/6/clr/default.nix | 13 +- .../rocm-modules/6/clr/static-functions.patch | 31 - 3 files changed, 11 insertions(+), 1012 deletions(-) delete mode 100644 pkgs/development/rocm-modules/6/clr/add-missing-operators.patch delete mode 100644 pkgs/development/rocm-modules/6/clr/static-functions.patch diff --git a/pkgs/development/rocm-modules/6/clr/add-missing-operators.patch b/pkgs/development/rocm-modules/6/clr/add-missing-operators.patch deleted file mode 100644 index 64ac0c081a02..000000000000 --- a/pkgs/development/rocm-modules/6/clr/add-missing-operators.patch +++ /dev/null @@ -1,979 +0,0 @@ -From 86bd518981b364c138f9901b28a529899d8654f3 Mon Sep 17 00:00:00 2001 -From: Jatin Chaudhary -Date: Wed, 11 Oct 2023 23:19:29 +0100 -Subject: [PATCH] SWDEV-367537 - Add missing operators to __hip_bfloat16 - implementation - -Add __host__ and __device__ to bunch of operator/function matching CUDA -Fix some bugs seen in __hisinf - -Change-Id: I9e67e3e3eb2083b463158f3e250e5221c89b2896 ---- - hipamd/include/hip/amd_detail/amd_hip_bf16.h | 533 ++++++++++++++++--- - 1 file changed, 446 insertions(+), 87 deletions(-) - -diff --git a/hipamd/include/hip/amd_detail/amd_hip_bf16.h b/hipamd/include/hip/amd_detail/amd_hip_bf16.h -index 757cb7ada..b15ea3b65 100644 ---- a/hipamd/include/hip/amd_detail/amd_hip_bf16.h -+++ b/hipamd/include/hip/amd_detail/amd_hip_bf16.h -@@ -96,10 +96,20 @@ - #if defined(__HIPCC_RTC__) - #define __HOST_DEVICE__ __device__ - #else -+#include - #include --#define __HOST_DEVICE__ __host__ __device__ -+#include -+#define __HOST_DEVICE__ __host__ __device__ inline - #endif - -+#define HIPRT_ONE_BF16 __float2bfloat16(1.0f) -+#define HIPRT_ZERO_BF16 __float2bfloat16(0.0f) -+#define HIPRT_INF_BF16 __ushort_as_bfloat16((unsigned short)0x7F80U) -+#define HIPRT_MAX_NORMAL_BF16 __ushort_as_bfloat16((unsigned short)0x7F7FU) -+#define HIPRT_MIN_DENORM_BF16 __ushort_as_bfloat16((unsigned short)0x0001U) -+#define HIPRT_NAN_BF16 __ushort_as_bfloat16((unsigned short)0x7FFFU) -+#define HIPRT_NEG_ZERO_BF16 __ushort_as_bfloat16((unsigned short)0x8000U) -+ - // Since we are using unsigned short to represent data in bfloat16, it can be of different sizes on - // different machines. These naive checks should prevent some undefined behavior on systems which - // have different sizes for basic types. -@@ -189,7 +199,7 @@ __HOST_DEVICE__ float2 __bfloat1622float2(const __hip_bfloat162 a) { - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Moves bfloat16 value to bfloat162 - */ --__device__ __hip_bfloat162 __bfloat162bfloat162(const __hip_bfloat16 a) { -+__HOST_DEVICE__ __hip_bfloat162 __bfloat162bfloat162(const __hip_bfloat16 a) { - return __hip_bfloat162{a, a}; - } - -@@ -197,13 +207,13 @@ __device__ __hip_bfloat162 __bfloat162bfloat162(const __hip_bfloat16 a) { - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Reinterprets bits in a __hip_bfloat16 as a signed short integer - */ --__device__ short int __bfloat16_as_short(const __hip_bfloat16 h) { return (short)h.data; } -+__HOST_DEVICE__ short int __bfloat16_as_short(const __hip_bfloat16 h) { return (short)h.data; } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Reinterprets bits in a __hip_bfloat16 as an unsigned signed short integer - */ --__device__ unsigned short int __bfloat16_as_ushort(const __hip_bfloat16 h) { return h.data; } -+__HOST_DEVICE__ unsigned short int __bfloat16_as_ushort(const __hip_bfloat16 h) { return h.data; } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV -@@ -225,7 +235,7 @@ __HOST_DEVICE__ __hip_bfloat162 __float22bfloat162_rn(const float2 a) { - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Combine two __hip_bfloat16 to __hip_bfloat162 - */ --__device__ __hip_bfloat162 __halves2bfloat162(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ __hip_bfloat162 __halves2bfloat162(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __hip_bfloat162{a, b}; - } - -@@ -233,13 +243,13 @@ __device__ __hip_bfloat162 __halves2bfloat162(const __hip_bfloat16 a, const __hi - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Returns high 16 bits of __hip_bfloat162 - */ --__device__ __hip_bfloat16 __high2bfloat16(const __hip_bfloat162 a) { return a.y; } -+__HOST_DEVICE__ __hip_bfloat16 __high2bfloat16(const __hip_bfloat162 a) { return a.y; } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Returns high 16 bits of __hip_bfloat162 - */ --__device__ __hip_bfloat162 __high2bfloat162(const __hip_bfloat162 a) { -+__HOST_DEVICE__ __hip_bfloat162 __high2bfloat162(const __hip_bfloat162 a) { - return __hip_bfloat162{a.y, a.y}; - } - -@@ -253,7 +263,8 @@ __HOST_DEVICE__ float __high2float(const __hip_bfloat162 a) { return __bfloat162 - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Extracts high 16 bits from each and combines them - */ --__device__ __hip_bfloat162 __highs2bfloat162(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ __hip_bfloat162 __highs2bfloat162(const __hip_bfloat162 a, -+ const __hip_bfloat162 b) { - return __hip_bfloat162{a.y, b.y}; - } - -@@ -261,13 +272,13 @@ __device__ __hip_bfloat162 __highs2bfloat162(const __hip_bfloat162 a, const __hi - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Returns low 16 bits of __hip_bfloat162 - */ --__device__ __hip_bfloat16 __low2bfloat16(const __hip_bfloat162 a) { return a.x; } -+__HOST_DEVICE__ __hip_bfloat16 __low2bfloat16(const __hip_bfloat162 a) { return a.x; } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Returns low 16 bits of __hip_bfloat162 - */ --__device__ __hip_bfloat162 __low2bfloat162(const __hip_bfloat162 a) { -+__HOST_DEVICE__ __hip_bfloat162 __low2bfloat162(const __hip_bfloat162 a) { - return __hip_bfloat162{a.x, a.x}; - } - -@@ -281,7 +292,7 @@ __HOST_DEVICE__ float __low2float(const __hip_bfloat162 a) { return __bfloat162f - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Swaps both halves - */ --__device__ __hip_bfloat162 __lowhigh2highlow(const __hip_bfloat162 a) { -+__HOST_DEVICE__ __hip_bfloat162 __lowhigh2highlow(const __hip_bfloat162 a) { - return __hip_bfloat162{a.y, a.x}; - } - -@@ -289,7 +300,7 @@ __device__ __hip_bfloat162 __lowhigh2highlow(const __hip_bfloat162 a) { - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Extracts low 16 bits from each and combines them - */ --__device__ __hip_bfloat162 __lows2bfloat162(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ __hip_bfloat162 __lows2bfloat162(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hip_bfloat162{a.x, b.x}; - } - -@@ -297,7 +308,7 @@ __device__ __hip_bfloat162 __lows2bfloat162(const __hip_bfloat162 a, const __hip - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Reinterprets short int into a bfloat16 - */ --__device__ __hip_bfloat16 __short_as_bfloat16(const short int a) { -+__HOST_DEVICE__ __hip_bfloat16 __short_as_bfloat16(const short int a) { - return __hip_bfloat16{(unsigned short)a}; - } - -@@ -305,7 +316,7 @@ __device__ __hip_bfloat16 __short_as_bfloat16(const short int a) { - * \ingroup HIP_INTRINSIC_BFLOAT162_CONV - * \brief Reinterprets unsigned short int into a bfloat16 - */ --__device__ __hip_bfloat16 __ushort_as_bfloat16(const unsigned short int a) { -+__HOST_DEVICE__ __hip_bfloat16 __ushort_as_bfloat16(const unsigned short int a) { - return __hip_bfloat16{a}; - } - -@@ -314,7 +325,7 @@ __device__ __hip_bfloat16 __ushort_as_bfloat16(const unsigned short int a) { - * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH - * \brief Adds two bfloat16 values - */ --__device__ __hip_bfloat16 __hadd(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ __hip_bfloat16 __hadd(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __float2bfloat16(__bfloat162float(a) + __bfloat162float(b)); - } - -@@ -322,7 +333,7 @@ __device__ __hip_bfloat16 __hadd(const __hip_bfloat16 a, const __hip_bfloat16 b) - * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH - * \brief Subtracts two bfloat16 values - */ --__device__ __hip_bfloat16 __hsub(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ __hip_bfloat16 __hsub(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __float2bfloat16(__bfloat162float(a) - __bfloat162float(b)); - } - -@@ -330,7 +341,7 @@ __device__ __hip_bfloat16 __hsub(const __hip_bfloat16 a, const __hip_bfloat16 b) - * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH - * \brief Divides two bfloat16 values - */ --__device__ __hip_bfloat16 __hdiv(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ __hip_bfloat16 __hdiv(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __float2bfloat16(__bfloat162float(a) / __bfloat162float(b)); - } - -@@ -348,7 +359,7 @@ __device__ __hip_bfloat16 __hfma(const __hip_bfloat16 a, const __hip_bfloat16 b, - * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH - * \brief Multiplies two bfloat16 values - */ --__device__ __hip_bfloat16 __hmul(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ __hip_bfloat16 __hmul(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __float2bfloat16(__bfloat162float(a) * __bfloat162float(b)); - } - -@@ -356,7 +367,7 @@ __device__ __hip_bfloat16 __hmul(const __hip_bfloat16 a, const __hip_bfloat16 b) - * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH - * \brief Negate a bfloat16 value - */ --__device__ __hip_bfloat16 __hneg(const __hip_bfloat16 a) { -+__HOST_DEVICE__ __hip_bfloat16 __hneg(const __hip_bfloat16 a) { - auto ret = a; - ret.data ^= 0x8000; - return ret; -@@ -366,7 +377,7 @@ __device__ __hip_bfloat16 __hneg(const __hip_bfloat16 a) { - * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH - * \brief Returns absolute of a bfloat16 - */ --__device__ __hip_bfloat16 __habs(const __hip_bfloat16 a) { -+__HOST_DEVICE__ __hip_bfloat16 __habs(const __hip_bfloat16 a) { - auto ret = a; - ret.data &= 0x7FFF; - return ret; -@@ -376,7 +387,7 @@ __device__ __hip_bfloat16 __habs(const __hip_bfloat16 a) { - * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH - * \brief Divides bfloat162 values - */ --__device__ __hip_bfloat162 __h2div(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ __hip_bfloat162 __h2div(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hip_bfloat162{__float2bfloat16(__bfloat162float(a.x) / __bfloat162float(b.x)), - __float2bfloat16(__bfloat162float(a.y) / __bfloat162float(b.y))}; - } -@@ -385,7 +396,7 @@ __device__ __hip_bfloat162 __h2div(const __hip_bfloat162 a, const __hip_bfloat16 - * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH - * \brief Returns absolute of a bfloat162 - */ --__device__ __hip_bfloat162 __habs2(const __hip_bfloat162 a) { -+__HOST_DEVICE__ __hip_bfloat162 __habs2(const __hip_bfloat162 a) { - return __hip_bfloat162{__habs(a.x), __habs(a.y)}; - } - -@@ -393,7 +404,7 @@ __device__ __hip_bfloat162 __habs2(const __hip_bfloat162 a) { - * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH - * \brief Adds two bfloat162 values - */ --__device__ __hip_bfloat162 __hadd2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ __hip_bfloat162 __hadd2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hip_bfloat162{__hadd(a.x, b.x), __hadd(a.y, b.y)}; - } - -@@ -410,7 +421,7 @@ __device__ __hip_bfloat162 __hfma2(const __hip_bfloat162 a, const __hip_bfloat16 - * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH - * \brief Multiplies two bfloat162 values - */ --__device__ __hip_bfloat162 __hmul2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ __hip_bfloat162 __hmul2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hip_bfloat162{__hmul(a.x, b.x), __hmul(a.y, b.y)}; - } - -@@ -418,7 +429,7 @@ __device__ __hip_bfloat162 __hmul2(const __hip_bfloat162 a, const __hip_bfloat16 - * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH - * \brief Converts a bfloat162 into negative - */ --__device__ __hip_bfloat162 __hneg2(const __hip_bfloat162 a) { -+__HOST_DEVICE__ __hip_bfloat162 __hneg2(const __hip_bfloat162 a) { - return __hip_bfloat162{__hneg(a.x), __hneg(a.y)}; - } - -@@ -426,15 +437,251 @@ __device__ __hip_bfloat162 __hneg2(const __hip_bfloat162 a) { - * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH - * \brief Subtracts two bfloat162 values - */ --__device__ __hip_bfloat162 __hsub2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ __hip_bfloat162 __hsub2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hip_bfloat162{__hsub(a.x, b.x), __hsub(a.y, b.y)}; - } - -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to multiply two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat16 operator*(const __hip_bfloat16& l, const __hip_bfloat16& r) { -+ return __hmul(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to multiply-assign two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat16 operator*=(__hip_bfloat16& l, const __hip_bfloat16& r) { -+ l = __hmul(l, r); -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to unary+ on a __hip_bfloat16 number -+ */ -+__HOST_DEVICE__ __hip_bfloat16 operator+(const __hip_bfloat16& l) { return l; } -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to add two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat16 operator+(const __hip_bfloat16& l, const __hip_bfloat16& r) { -+ return __hadd(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to negate a __hip_bfloat16 number -+ */ -+__HOST_DEVICE__ __hip_bfloat16 operator-(const __hip_bfloat16& l) { return __hneg(l); } -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to subtract two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat16 operator-(const __hip_bfloat16& l, const __hip_bfloat16& r) { -+ return __hsub(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to post increment a __hip_bfloat16 number -+ */ -+__HOST_DEVICE__ __hip_bfloat16 operator++(__hip_bfloat16& l, const int) { -+ auto ret = l; -+ l = __hadd(l, HIPRT_ONE_BF16); -+ return ret; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to pre increment a __hip_bfloat16 number -+ */ -+__HOST_DEVICE__ __hip_bfloat16& operator++(__hip_bfloat16& l) { -+ l = __hadd(l, HIPRT_ONE_BF16); -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to post decrement a __hip_bfloat16 number -+ */ -+__HOST_DEVICE__ __hip_bfloat16 operator--(__hip_bfloat16& l, const int) { -+ auto ret = l; -+ l = __hsub(l, HIPRT_ONE_BF16); -+ return ret; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to pre decrement a __hip_bfloat16 number -+ */ -+__HOST_DEVICE__ __hip_bfloat16& operator--(__hip_bfloat16& l) { -+ l = __hsub(l, HIPRT_ONE_BF16); -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to add-assign two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat16& operator+=(__hip_bfloat16& l, const __hip_bfloat16& r) { -+ l = l + r; -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to subtract-assign two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat16& operator-=(__hip_bfloat16& l, const __hip_bfloat16& r) { -+ l = l - r; -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to divide two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat16 operator/(const __hip_bfloat16& l, const __hip_bfloat16& r) { -+ return __hdiv(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_ARITH -+ * \brief Operator to divide-assign two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat16& operator/=(__hip_bfloat16& l, const __hip_bfloat16& r) { -+ l = l / r; -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to multiply two __hip_bfloat162 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat162 operator*(const __hip_bfloat162& l, const __hip_bfloat162& r) { -+ return __hmul2(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to multiply-assign two __hip_bfloat162 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat162 operator*=(__hip_bfloat162& l, const __hip_bfloat162& r) { -+ l = __hmul2(l, r); -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to unary+ on a __hip_bfloat162 number -+ */ -+__HOST_DEVICE__ __hip_bfloat162 operator+(const __hip_bfloat162& l) { return l; } -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to add two __hip_bfloat162 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat162 operator+(const __hip_bfloat162& l, const __hip_bfloat162& r) { -+ return __hadd2(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to negate a __hip_bfloat162 number -+ */ -+__HOST_DEVICE__ __hip_bfloat162 operator-(const __hip_bfloat162& l) { return __hneg2(l); } -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to subtract two __hip_bfloat162 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat162 operator-(const __hip_bfloat162& l, const __hip_bfloat162& r) { -+ return __hsub2(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to post increment a __hip_bfloat162 number -+ */ -+__HOST_DEVICE__ __hip_bfloat162 operator++(__hip_bfloat162& l, const int) { -+ auto ret = l; -+ l = __hadd2(l, {HIPRT_ONE_BF16, HIPRT_ONE_BF16}); -+ return ret; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to pre increment a __hip_bfloat162 number -+ */ -+__HOST_DEVICE__ __hip_bfloat162& operator++(__hip_bfloat162& l) { -+ l = __hadd2(l, {HIPRT_ONE_BF16, HIPRT_ONE_BF16}); -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to post decrement a __hip_bfloat162 number -+ */ -+__HOST_DEVICE__ __hip_bfloat162 operator--(__hip_bfloat162& l, const int) { -+ auto ret = l; -+ l = __hsub2(l, {HIPRT_ONE_BF16, HIPRT_ONE_BF16}); -+ return ret; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to pre decrement a __hip_bfloat162 number -+ */ -+__HOST_DEVICE__ __hip_bfloat162& operator--(__hip_bfloat162& l) { -+ l = __hsub2(l, {HIPRT_ONE_BF16, HIPRT_ONE_BF16}); -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to add-assign two __hip_bfloat162 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat162& operator+=(__hip_bfloat162& l, const __hip_bfloat162& r) { -+ l = l + r; -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to subtract-assign two __hip_bfloat162 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat162& operator-=(__hip_bfloat162& l, const __hip_bfloat162& r) { -+ l = l - r; -+ return l; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to divide two __hip_bfloat162 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat162 operator/(const __hip_bfloat162& l, const __hip_bfloat162& r) { -+ return __h2div(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_ARITH -+ * \brief Operator to divide-assign two __hip_bfloat162 numbers -+ */ -+__HOST_DEVICE__ __hip_bfloat162& operator/=(__hip_bfloat162& l, const __hip_bfloat162& r) { -+ l = l / r; -+ return l; -+} -+ - /** - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - */ --__device__ bool __heq(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __heq(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __bfloat162float(a) == __bfloat162float(b); - } - -@@ -442,7 +689,7 @@ __device__ bool __heq(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - unordered equal - */ --__device__ bool __hequ(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hequ(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return !(__bfloat162float(a) < __bfloat162float(b)) && - !(__bfloat162float(a) > __bfloat162float(b)); - } -@@ -451,7 +698,7 @@ __device__ bool __hequ(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - greater than - */ --__device__ bool __hgt(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hgt(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __bfloat162float(a) > __bfloat162float(b); - } - -@@ -459,7 +706,7 @@ __device__ bool __hgt(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - unordered greater than - */ --__device__ bool __hgtu(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hgtu(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return !(__bfloat162float(a) <= __bfloat162float(b)); - } - -@@ -467,7 +714,7 @@ __device__ bool __hgtu(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - greater than equal - */ --__device__ bool __hge(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hge(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __bfloat162float(a) >= __bfloat162float(b); - } - -@@ -475,7 +722,7 @@ __device__ bool __hge(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - unordered greater than equal - */ --__device__ bool __hgeu(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hgeu(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return !(__bfloat162float(a) < __bfloat162float(b)); - } - -@@ -483,7 +730,7 @@ __device__ bool __hgeu(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - not equal - */ --__device__ bool __hne(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hne(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __bfloat162float(a) != __bfloat162float(b); - } - -@@ -491,7 +738,7 @@ __device__ bool __hne(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - unordered not equal - */ --__device__ bool __hneu(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hneu(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return !(__bfloat162float(a) == __bfloat162float(b)); - } - -@@ -499,23 +746,31 @@ __device__ bool __hneu(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - return max - */ --__device__ __hip_bfloat16 __hmax(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ __hip_bfloat16 __hmax(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+#if __HIP_DEVICE_COMPILE__ - return __float2bfloat16(__ocml_fmax_f32(__bfloat162float(a), __bfloat162float(b))); -+#else -+ return __float2bfloat16(std::max(__bfloat162float(a), __bfloat162float(b))); -+#endif - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - return min - */ --__device__ __hip_bfloat16 __hmin(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ __hip_bfloat16 __hmin(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+#if __HIP_DEVICE_COMPILE__ - return __float2bfloat16(__ocml_fmin_f32(__bfloat162float(a), __bfloat162float(b))); -+#else -+ return __float2bfloat16(std::min(__bfloat162float(a), __bfloat162float(b))); -+#endif - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - less than operator - */ --__device__ bool __hlt(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hlt(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __bfloat162float(a) < __bfloat162float(b); - } - -@@ -523,15 +778,15 @@ __device__ bool __hlt(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - unordered less than - */ --__device__ bool __hltu(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hltu(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return !(__bfloat162float(a) >= __bfloat162float(b)); - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP -- * \brief Compare two bfloat162 values - less than -+ * \brief Compare two bfloat162 values - less than equal - */ --__device__ bool __hle(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hle(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return __bfloat162float(a) <= __bfloat162float(b); - } - -@@ -539,7 +794,7 @@ __device__ bool __hle(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Compare two bfloat162 values - unordered less than equal - */ --__device__ bool __hleu(const __hip_bfloat16 a, const __hip_bfloat16 b) { -+__HOST_DEVICE__ bool __hleu(const __hip_bfloat16 a, const __hip_bfloat16 b) { - return !(__bfloat162float(a) > __bfloat162float(b)); - } - -@@ -547,19 +802,33 @@ __device__ bool __hleu(const __hip_bfloat16 a, const __hip_bfloat16 b) { - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Checks if number is inf - */ --__device__ int __hisinf(const __hip_bfloat16 a) { return __ocml_isinf_f32(__bfloat162float(a)); } -+__HOST_DEVICE__ int __hisinf(const __hip_bfloat16 a) { -+ unsigned short sign = a.data & 0x8000U; -+#if __HIP_DEVICE_COMPILE__ -+ int res = __ocml_isinf_f32(__bfloat162float(a)); -+#else -+ int res = std::isinf(__bfloat162float(a)) ? 1 : 0; -+#endif -+ return (res == 0) ? res : ((sign != 0U) ? -res : res); -+} - - /** - * \ingroup HIP_INTRINSIC_BFLOAT16_COMP - * \brief Checks if number is nan - */ --__device__ bool __hisnan(const __hip_bfloat16 a) { return __ocml_isnan_f32(__bfloat162float(a)); } -+__HOST_DEVICE__ bool __hisnan(const __hip_bfloat16 a) { -+#if __HIP_DEVICE_COMPILE__ -+ return __ocml_isnan_f32(__bfloat162float(a)); -+#else -+ return std::isnan(__bfloat162float(a)); -+#endif -+} - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Checks if two numbers are equal - */ --__device__ bool __hbeq2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hbeq2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __heq(a.x, b.x) && __heq(a.y, b.y); - } - -@@ -567,7 +836,7 @@ __device__ bool __hbeq2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Checks if two numbers are equal - unordered - */ --__device__ bool __hbequ2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hbequ2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hequ(a.x, b.x) && __hequ(a.y, b.y); - } - -@@ -575,7 +844,7 @@ __device__ bool __hbequ2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a >= b - */ --__device__ bool __hbge2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hbge2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hge(a.x, b.x) && __hge(a.y, b.y); - } - -@@ -583,7 +852,7 @@ __device__ bool __hbge2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a >= b - unordered - */ --__device__ bool __hbgeu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hbgeu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hgeu(a.x, b.x) && __hgeu(a.y, b.y); - } - -@@ -591,7 +860,7 @@ __device__ bool __hbgeu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a > b - */ --__device__ bool __hbgt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hbgt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hgt(a.x, b.x) && __hgt(a.y, b.y); - } - -@@ -599,7 +868,7 @@ __device__ bool __hbgt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a > b - unordered - */ --__device__ bool __hbgtu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hbgtu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hgtu(a.x, b.x) && __hgtu(a.y, b.y); - } - -@@ -607,7 +876,7 @@ __device__ bool __hbgtu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a <= b - */ --__device__ bool __hble2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hble2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hle(a.x, b.x) && __hle(a.y, b.y); - } - -@@ -615,7 +884,7 @@ __device__ bool __hble2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a <= b - unordered - */ --__device__ bool __hbleu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hbleu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hleu(a.x, b.x) && __hleu(a.y, b.y); - } - -@@ -623,7 +892,7 @@ __device__ bool __hbleu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a < b - */ --__device__ bool __hblt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hblt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hlt(a.x, b.x) && __hlt(a.y, b.y); - } - -@@ -631,7 +900,7 @@ __device__ bool __hblt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a < b - unordered - */ --__device__ bool __hbltu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hbltu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hltu(a.x, b.x) && __hltu(a.y, b.y); - } - -@@ -639,7 +908,7 @@ __device__ bool __hbltu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a != b - */ --__device__ bool __hbne2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hbne2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hne(a.x, b.x) && __hne(a.y, b.y); - } - -@@ -647,7 +916,7 @@ __device__ bool __hbne2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a != b - */ --__device__ bool __hbneu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+__HOST_DEVICE__ bool __hbneu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - return __hneu(a.x, b.x) && __hneu(a.y, b.y); - } - -@@ -655,84 +924,175 @@ __device__ bool __hbneu2(const __hip_bfloat162 a, const __hip_bfloat162 b) { - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a != b, returns 1.0 if equal, otherwise 0.0 - */ --__device__ __hip_bfloat162 __heq2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -- return __hip_bfloat162{{__heq(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, -- {__heq(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; -+__HOST_DEVICE__ __hip_bfloat162 __heq2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+ return __hip_bfloat162{{__heq(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, -+ {__heq(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}}; - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a >= b, returns 1.0 if greater than equal, otherwise 0.0 - */ --__device__ __hip_bfloat162 __hge2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -- return __hip_bfloat162{{__hge(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, -- {__hge(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; -+__HOST_DEVICE__ __hip_bfloat162 __hge2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+ return __hip_bfloat162{{__hge(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, -+ {__hge(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}}; - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a > b, returns 1.0 if greater than equal, otherwise 0.0 - */ --__device__ __hip_bfloat162 __hgt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -- return __hip_bfloat162{{__hgt(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, -- {__hgt(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; -+__HOST_DEVICE__ __hip_bfloat162 __hgt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+ return __hip_bfloat162{{__hgt(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, -+ {__hgt(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ONE_BF16}}; - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a is NaN, returns 1.0 if NaN, otherwise 0.0 - */ --__device__ __hip_bfloat162 __hisnan2(const __hip_bfloat162 a) { -- return __hip_bfloat162{ -- {__ocml_isnan_f32(__bfloat162float(a.x)) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, -- {__ocml_isnan_f32(__bfloat162float(a.y)) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; -+__HOST_DEVICE__ __hip_bfloat162 __hisnan2(const __hip_bfloat162 a) { -+ return __hip_bfloat162{{__hisnan(a.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, -+ {__hisnan(a.y) ? HIPRT_ONE_BF16 : HIPRT_ONE_BF16}}; - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a <= b, returns 1.0 if greater than equal, otherwise 0.0 - */ --__device__ __hip_bfloat162 __hle2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -- return __hip_bfloat162{{__hle(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, -- {__hle(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; -+__HOST_DEVICE__ __hip_bfloat162 __hle2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+ return __hip_bfloat162{{__hle(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, -+ {__hle(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}}; - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Check for a < b, returns 1.0 if greater than equal, otherwise 0.0 - */ --__device__ __hip_bfloat162 __hlt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -- return __hip_bfloat162{{__hlt(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, -- {__hlt(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; -+__HOST_DEVICE__ __hip_bfloat162 __hlt2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+ return __hip_bfloat162{{__hlt(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, -+ {__hlt(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}}; - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Returns max of two elements - */ --__device__ __hip_bfloat162 __hmax2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -- return __hip_bfloat162{ -- __float2bfloat16(__ocml_fmax_f32(__bfloat162float(a.x), __bfloat162float(b.x))), -- __float2bfloat16(__ocml_fmax_f32(__bfloat162float(a.y), __bfloat162float(b.y)))}; -+__HOST_DEVICE__ __hip_bfloat162 __hmax2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+ return __hip_bfloat162{__hmax(a.x, b.x), __hmax(a.y, b.y)}; - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Returns min of two elements - */ --__device__ __hip_bfloat162 __hmin2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -- return __hip_bfloat162{ -- __float2bfloat16(__ocml_fmin_f32(__bfloat162float(a.x), __bfloat162float(b.x))), -- __float2bfloat16(__ocml_fmin_f32(__bfloat162float(a.y), __bfloat162float(b.y)))}; -+__HOST_DEVICE__ __hip_bfloat162 __hmin2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+ return __hip_bfloat162{__hmin(a.x, b.x), __hmin(a.y, b.y)}; - } - - /** - * \ingroup HIP_INTRINSIC_BFLOAT162_COMP - * \brief Checks for not equal to - */ --__device__ __hip_bfloat162 __hne2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -- return __hip_bfloat162{{__hne(a.x, b.x) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}, -- {__hne(a.y, b.y) ? __float2bfloat16(1.0f) : __float2bfloat16(0.0f)}}; -+__HOST_DEVICE__ __hip_bfloat162 __hne2(const __hip_bfloat162 a, const __hip_bfloat162 b) { -+ return __hip_bfloat162{{__hne(a.x, b.x) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}, -+ {__hne(a.y, b.y) ? HIPRT_ONE_BF16 : HIPRT_ZERO_BF16}}; -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP -+ * \brief Operator to perform an equal compare on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator==(const __hip_bfloat16& l, const __hip_bfloat16& r) { -+ return __heq(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP -+ * \brief Operator to perform a not equal on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator!=(const __hip_bfloat16& l, const __hip_bfloat16& r) { -+ return __hne(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP -+ * \brief Operator to perform a less than on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator<(const __hip_bfloat16& l, const __hip_bfloat16& r) { -+ return __hlt(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP -+ * \brief Operator to perform a less than equal on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator<=(const __hip_bfloat16& l, const __hip_bfloat16& r) { -+ return __hle(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP -+ * \brief Operator to perform a greater than on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator>(const __hip_bfloat16& l, const __hip_bfloat16& r) { -+ return __hgt(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP -+ * \brief Operator to perform a greater than equal on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator>=(const __hip_bfloat16& l, const __hip_bfloat16& r) { -+ return __hge(l, r); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_COMP -+ * \brief Operator to perform an equal compare on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator==(const __hip_bfloat162& l, const __hip_bfloat162& r) { -+ return __heq(l.x, r.x) && __heq(l.y, r.y); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_COMP -+ * \brief Operator to perform a not equal on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator!=(const __hip_bfloat162& l, const __hip_bfloat162& r) { -+ return __hne(l.x, r.x) || __hne(l.y, r.y); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_COMP -+ * \brief Operator to perform a less than on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator<(const __hip_bfloat162& l, const __hip_bfloat162& r) { -+ return __hlt(l.x, r.x) && __hlt(l.y, r.y); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_COMP -+ * \brief Operator to perform a less than equal on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator<=(const __hip_bfloat162& l, const __hip_bfloat162& r) { -+ return __hle(l.x, r.x) && __hle(l.y, r.y); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT162_COMP -+ * \brief Operator to perform a greater than on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator>(const __hip_bfloat162& l, const __hip_bfloat162& r) { -+ return __hgt(l.x, r.x) && __hgt(l.y, r.y); -+} -+ -+/** -+ * \ingroup HIP_INTRINSIC_BFLOAT16_COMP -+ * \brief Operator to perform a greater than equal on two __hip_bfloat16 numbers -+ */ -+__HOST_DEVICE__ bool operator>=(const __hip_bfloat162& l, const __hip_bfloat162& r) { -+ return __hge(l.x, r.x) && __hge(l.y, r.y); - } - - /** -@@ -974,5 +1334,4 @@ __device__ __hip_bfloat162 h2sqrt(const __hip_bfloat162 h) { - __device__ __hip_bfloat162 h2trunc(const __hip_bfloat162 h) { - return __hip_bfloat162{htrunc(h.x), htrunc(h.y)}; - } -- - #endif diff --git a/pkgs/development/rocm-modules/6/clr/default.nix b/pkgs/development/rocm-modules/6/clr/default.nix index 07740156ef96..05acf86478d3 100644 --- a/pkgs/development/rocm-modules/6/clr/default.nix +++ b/pkgs/development/rocm-modules/6/clr/default.nix @@ -2,6 +2,7 @@ , stdenv , callPackage , fetchFromGitHub +, fetchpatch , rocmUpdateScript , makeWrapper , cmake @@ -89,8 +90,16 @@ in stdenv.mkDerivation (finalAttrs: { ]; patches = [ - ./add-missing-operators.patch - ./static-functions.patch + (fetchpatch { + name = "add-missing-operators.patch"; + url = "https://github.com/ROCm/clr/commit/86bd518981b364c138f9901b28a529899d8654f3.patch"; + hash = "sha256-lbswri+zKLxif0hPp4aeJDeVfadhWZz4z+m+G2XcCPI="; + }) + (fetchpatch { + name = "static-functions.patch"; + url = "https://github.com/ROCm/clr/commit/77c581a3ebd47b5e2908973b70adea66891159ee.patch"; + hash = "sha256-auBedbd7rghlKav7A9V6l64J7VmtE9GizIdi5gWj+fs="; + }) ]; postPatch = '' diff --git a/pkgs/development/rocm-modules/6/clr/static-functions.patch b/pkgs/development/rocm-modules/6/clr/static-functions.patch deleted file mode 100644 index 87d9528691ce..000000000000 --- a/pkgs/development/rocm-modules/6/clr/static-functions.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 77c581a3ebd47b5e2908973b70adea66891159ee Mon Sep 17 00:00:00 2001 -From: Jatin Chaudhary -Date: Mon, 4 Dec 2023 17:21:39 +0000 -Subject: [PATCH] SWDEV-435702 - the functions in bf16 header need to be static - -If the compiler decides not to inline these functions, we might break ODR (one definition rule) due to this file being included in multiple files and being linked together - -Change-Id: Iacbfdabb53f5b4e5db8c690b23f3730ec9af16c0 ---- - hipamd/include/hip/amd_detail/amd_hip_bf16.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/hipamd/include/hip/amd_detail/amd_hip_bf16.h b/hipamd/include/hip/amd_detail/amd_hip_bf16.h -index 836e090eb..204269a84 100644 ---- a/hipamd/include/hip/amd_detail/amd_hip_bf16.h -+++ b/hipamd/include/hip/amd_detail/amd_hip_bf16.h -@@ -94,12 +94,12 @@ - #include "math_fwd.h" // ocml device functions - - #if defined(__HIPCC_RTC__) --#define __HOST_DEVICE__ __device__ -+#define __HOST_DEVICE__ __device__ static - #else - #include - #include - #include --#define __HOST_DEVICE__ __host__ __device__ inline -+#define __HOST_DEVICE__ __host__ __device__ static inline - #endif - - #define HIPRT_ONE_BF16 __float2bfloat16(1.0f)