forked from rarias/bscpkgs
74 lines
2.0 KiB
Nix
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
|
|
];
|
|
|
|
}
|