bscpkgs/pkgs/onemath/default.nix
Aleix Boné 38d2425dfe
Add oneMath
With support for MKL and CUDA enabled by default
2025-06-16 12:54:41 +02:00

74 lines
2.0 KiB
Nix

{ lib
, intelPackages
, withCFlags
, fetchFromGitHub
, cmake
, cudaPackages
, enableNvidia ? true
, withHipTargets ? null # only one target at a time supported
, rocmPackages
, enableMkl ? true
}:
let
enableHip = withHipTargets != null;
stdenv = withCFlags (lib.optionals enableNvidia [ "--cuda-path=${cudaPackages.cudatoolkit}" ]) intelPackages.stdenv;
in
stdenv.mkDerivation rec {
pname = "oneMath";
version = "0.7";
src = fetchFromGitHub {
owner = "uxlfoundation";
repo = "oneMath";
rev = "v${version}";
sha256 = "sha256-De04PUmI68Jx4rJ+MRb+RepayZCapgnouCUCrAu6G38=";
};
cmakeFlags = [
(lib.cmakeBool "ENABLE_MKLCPU_BACKEND" enableMkl)
(lib.cmakeBool "ENABLE_MKLGPU_BACKEND" enableMkl)
(lib.cmakeBool "ENABLE_CUBLAS_BACKEND" enableNvidia)
(lib.cmakeBool "ENABLE_CUFFT_BACKEND" enableNvidia)
(lib.cmakeBool "ENABLE_CURAND_BACKEND" enableNvidia)
(lib.cmakeBool "ENABLE_CUSOLVER_BACKEND" enableNvidia)
(lib.cmakeBool "ENABLE_CUSPARSE_BACKEND" enableNvidia)
(lib.cmakeBool "ENABLE_ROCBLAS_BACKEND" enableHip)
(lib.cmakeBool "ENABLE_ROCFFT_BACKEND" enableHip)
(lib.cmakeBool "ENABLE_ROCSOLVER_BACKEND" enableHip)
(lib.cmakeBool "ENABLE_ROCRAND_BACKEND" enableHip)
(lib.cmakeBool "ENABLE_ROCSPARSE_BACKEND" enableHip)
(lib.cmakeBool "BUILD_FUNCTIONAL_TESTS" false)
(lib.cmakeBool "BUILD_EXAMPLES" false)
] ++ lib.optionals enableHip [
(lib.cmakeFeature "HIP_TARGETS" withHipTargets)
];
nativeBuildInputs = [ cmake ];
buildInputs = lib.optionals (enableMkl) [
intelPackages.mkl
intelPackages.tbb
] ++ lib.optionals (enableHip) [
rocmPackages.rocmPath
rocmPackages.rocblas
rocmPackages.rocfft
rocmPackages.rocsolver
rocmPackages.rocrand
rocmPackages.rocsparse
] ++ lib.optionals (enableNvidia) [
(lib.getDev cudaPackages.cuda_cudart)
cudaPackages.cudatoolkit
cudaPackages.libcublas
cudaPackages.libcurand
cudaPackages.libcufft
cudaPackages.libcusparse
cudaPackages.libcusolver
];
}