nvidia-thrust: cudatoolkit -> redist cudaPackages
This commit is contained in:
parent
4965af4364
commit
83b4eec362
|
@ -4,7 +4,7 @@
|
||||||
, stdenv
|
, stdenv
|
||||||
, cmake
|
, cmake
|
||||||
, pkg-config
|
, pkg-config
|
||||||
, cudaPackages
|
, cudaPackages ? { }
|
||||||
, symlinkJoin
|
, symlinkJoin
|
||||||
, tbb
|
, tbb
|
||||||
, hostSystem ? "CPP"
|
, hostSystem ? "CPP"
|
||||||
|
@ -27,6 +27,9 @@ let
|
||||||
pname = "nvidia-thrust";
|
pname = "nvidia-thrust";
|
||||||
version = "1.16.0";
|
version = "1.16.0";
|
||||||
|
|
||||||
|
inherit (cudaPackages) backendStdenv cudaFlags;
|
||||||
|
cudaCapabilities = map cudaFlags.dropDot cudaFlags.cudaCapabilities;
|
||||||
|
|
||||||
tbbSupport = builtins.elem "TBB" [ deviceSystem hostSystem ];
|
tbbSupport = builtins.elem "TBB" [ deviceSystem hostSystem ];
|
||||||
cudaSupport = deviceSystem == "CUDA";
|
cudaSupport = deviceSystem == "CUDA";
|
||||||
|
|
||||||
|
@ -35,9 +38,13 @@ let
|
||||||
name = "cuda-packages-unsplit";
|
name = "cuda-packages-unsplit";
|
||||||
paths = with cudaPackages; [
|
paths = with cudaPackages; [
|
||||||
cuda_nvcc
|
cuda_nvcc
|
||||||
|
cuda_nvrtc # symbols: cudaLaunchDevice, &c; notice postBuild
|
||||||
cuda_cudart # cuda_runtime.h
|
cuda_cudart # cuda_runtime.h
|
||||||
libcublas
|
libcublas
|
||||||
];
|
];
|
||||||
|
postBuild = ''
|
||||||
|
ln -s $out/lib $out/lib64
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
|
@ -51,6 +58,15 @@ stdenv.mkDerivation {
|
||||||
hash = "sha256-/EyznxWKuHuvHNjq+SQg27IaRbtkjXR2zlo2YgCWmUQ=";
|
hash = "sha256-/EyznxWKuHuvHNjq+SQg27IaRbtkjXR2zlo2YgCWmUQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# NVIDIA's "compiler hacks" seem like work-arounds for legacy toolchains and
|
||||||
|
# cause us errors such as:
|
||||||
|
# > Thrust's test harness uses CMAKE_CXX_COMPILER for the CUDA host compiler.
|
||||||
|
# > Refusing to overwrite specified CMAKE_CUDA_HOST_COMPILER
|
||||||
|
# So we un-fix cmake after them:
|
||||||
|
postPatch = ''
|
||||||
|
echo > cmake/ThrustCompilerHacks.cmake
|
||||||
|
'';
|
||||||
|
|
||||||
buildInputs = lib.optionals tbbSupport [ tbb ];
|
buildInputs = lib.optionals tbbSupport [ tbb ];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
@ -59,23 +75,21 @@ stdenv.mkDerivation {
|
||||||
] ++ lib.optionals cudaSupport [
|
] ++ lib.optionals cudaSupport [
|
||||||
# Goes in native build inputs because thrust looks for headers
|
# Goes in native build inputs because thrust looks for headers
|
||||||
# in a path relative to nvcc...
|
# in a path relative to nvcc...
|
||||||
|
cudaJoined
|
||||||
# Works when build=host, but we only support
|
|
||||||
# cuda on x86_64 anyway
|
|
||||||
|
|
||||||
# TODO: but instead using this
|
|
||||||
# cudaJoined
|
|
||||||
cudaPackages.cudatoolkit
|
|
||||||
];
|
];
|
||||||
|
|
||||||
cmakeFlags = [
|
cmakeFlags = [
|
||||||
"-DTHRUST_INCLUDE_CUB_CMAKE=${if cudaSupport then "ON" else "OFF"}"
|
"-DTHRUST_INCLUDE_CUB_CMAKE=${if cudaSupport then "ON" else "OFF"}"
|
||||||
"-DTHRUST_DEVICE_SYSTEM=${deviceSystem}"
|
"-DTHRUST_DEVICE_SYSTEM=${deviceSystem}"
|
||||||
"-DTHRUST_HOST_SYSTEM=${hostSystem}"
|
"-DTHRUST_HOST_SYSTEM=${hostSystem}"
|
||||||
];
|
"-DTHRUST_AUTO_DETECT_COMPUTE_ARCHS=OFF"
|
||||||
|
"-DTHRUST_DISABLE_ARCH_BY_DEFAULT=ON"
|
||||||
|
] ++ lib.optionals cudaFlags.enableForwardCompat [
|
||||||
|
"-DTHRUST_ENABLE_COMPUTE_FUTURE=ON"
|
||||||
|
] ++ map (sm: "THRUST_ENABLE_COMPUTE_${sm}") cudaCapabilities;
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit cudaSupport cudaPackages;
|
inherit cudaSupport cudaPackages cudaJoined;
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
Loading…
Reference in a new issue