diff --git a/pkgs/development/rocm-modules/5/default.nix b/pkgs/development/rocm-modules/5/default.nix index c127cddb1247..886d39f26b55 100644 --- a/pkgs/development/rocm-modules/5/default.nix +++ b/pkgs/development/rocm-modules/5/default.nix @@ -1,9 +1,14 @@ { callPackage , recurseIntoAttrs +, fetchFromGitHub , cudaPackages , python3Packages , elfutils , boost179 +, opencv +, ffmpeg_4 +, libjpeg_turbo +, rapidjson-unstable }: let @@ -291,4 +296,45 @@ in rec { 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/GPUOpen-ProfessionalCompute-Libraries/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; + }; } 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..d6e198eb4c77 --- /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.0"; + + src = fetchFromGitHub { + owner = "GPUOpen-ProfessionalCompute-Libraries"; + repo = "MIVisionX"; + rev = "rocm-${finalAttrs.version}"; + hash = "sha256-Z7UIqJWuSD+/FoZ1VIbITp4R/bwaqFCQqsL8CRW73Ek="; + }; + + 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_