The cudainfo program checks that we can initialize the CUDA RT library and communicate with the driver. It can be used as standalone program or built with cudainfo.gpuCheck so it is executed inside the build sandbox to see if it also works fine. It uses the autoAddDriverRunpath hook to inject in the runpath the location of the library directory for CUDA libraries.
45 lines
902 B
Nix
45 lines
902 B
Nix
{
|
|
stdenv
|
|
, cudatoolkit
|
|
, cudaPackages
|
|
, autoAddDriverRunpath
|
|
, strace
|
|
, cudainfo
|
|
}:
|
|
|
|
stdenv.mkDerivation {
|
|
name = "cudainfo";
|
|
src = ./.;
|
|
buildInputs = [
|
|
cudatoolkit # Required for nvcc
|
|
cudaPackages.cuda_cudart.static # Required for -lcudart_static
|
|
autoAddDriverRunpath
|
|
];
|
|
installPhase = ''
|
|
mkdir -p $out/bin
|
|
cp -a cudainfo $out/bin
|
|
'';
|
|
passthru.gpuCheck = stdenv.mkDerivation {
|
|
name = "cudainfo-test";
|
|
requiredSystemFeatures = [ "cuda" ];
|
|
dontBuild = true;
|
|
nativeCheckInputs = [
|
|
cudainfo
|
|
strace # When it fails, it will show the trace
|
|
];
|
|
dontUnpack = true;
|
|
doCheck = true;
|
|
checkPhase = ''
|
|
if ! cudainfo; then
|
|
set -x
|
|
cudainfo=$(command -v cudainfo)
|
|
ldd $cudainfo
|
|
readelf -d $cudainfo
|
|
strace -f $cudainfo
|
|
set +x
|
|
fi
|
|
'';
|
|
installPhase = "touch $out";
|
|
};
|
|
}
|