diff --git a/pkgs/development/rocm-modules/5/default.nix b/pkgs/development/rocm-modules/5/default.nix index 1e1aa35fa328..c127cddb1247 100644 --- a/pkgs/development/rocm-modules/5/default.nix +++ b/pkgs/development/rocm-modules/5/default.nix @@ -269,4 +269,26 @@ in rec { stdenv = llvm.rocmClangStdenv; rocmlir = rocmlir-rock; }; + + ## GPUOpen-ProfessionalCompute-Libraries ## + 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; + }; } 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..eee10f2ab7c8 --- /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.0"; + + src = fetchFromGitHub { + owner = "GPUOpen-ProfessionalCompute-Libraries"; + 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/GPUOpen-ProfessionalCompute-Libraries/rpp"; + license = with licenses; [ mit ]; + maintainers = teams.rocm.members; + platforms = platforms.linux; + broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version; + }; +})