Files
2026-06-01 15:18:04 +00:00

96 lines
1.7 KiB
Nix

{
lib,
buildPythonPackage,
nvidia-cudnn-frontend,
# build-system
cmake,
ninja,
pybind11,
setuptools,
# nativeBuildInputs
cudaPackages,
# buildInputs
dlpack,
# propagatedBuildInputs
nlohmann_json,
# tests
looseversion,
pytestCheckHook,
torch,
}:
buildPythonPackage.override { stdenv = cudaPackages.backendStdenv; } (finalAttrs: {
inherit (cudaPackages.cudnn-frontend)
version
src
meta
;
pname = "nvidia-cudnn-frontend";
pyproject = true;
__structuredAttrs = true;
postPatch =
cudaPackages.cudnn-frontend.postPatch
+ ''
substituteInPlace pyproject.toml \
--replace-fail '"ninja==1.11.1.1"' '"ninja"' \
--replace-fail '"pybind11[global]>=2.13,<3"' '"pybind11"'
sed -i '/cmake_args =/a\\f"-DCUDNN_FRONTEND_USE_SYSTEM_DLPACK=ON",' setup.py
''
+ ''
substituteInPlace python/cudnn/__init__.py \
--replace-fail \
'os.path.join(sysconfig.get_path("purelib"), "nvidia/cudnn/lib/libcudnn.so.*[0-9]")' \
'"${lib.getLib cudaPackages.cudnn}/lib/libcudnn.so"'
'';
build-system = [
cmake
ninja
pybind11
setuptools
];
dontUseCmakeConfigure = true;
nativeBuildInputs = [
cudaPackages.cuda_nvcc
];
buildInputs = [
cudaPackages.cuda_cudart
cudaPackages.cuda_nvrtc # nvrtc.h
cudaPackages.cudnn
dlpack
];
propagatedBuildInputs = [
nlohmann_json
];
pythonImportsCheck = [ "cudnn" ];
# requires GPU
doCheck = false;
nativeCheckInputs = [
looseversion
pytestCheckHook
torch
];
enabledTestPaths = [
"test/"
];
passthru.gpuCheck = nvidia-cudnn-frontend.overridePythonAttrs {
requiredSystemFeatures = [ "cuda" ];
doCheck = true;
};
})