Skip to content

Commit 8801d64

Browse files
committed
CUDA: use the redistributable CUDA driver libraries in place of the stub libraries
1 parent 05125b2 commit 8801d64

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed

cuda.spec

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,13 @@ cd %_builddir/
2828
# create target directory structure
2929
mkdir -p %{i}/include
3030
mkdir -p %{i}/lib64
31-
mkdir -p %{i}/lib64/stubs
3231

3332
# package only the runtime static libraries
3433
mv %_builddir/build/lib64/libcudadevrt.a %{i}/lib64/
3534
mv %_builddir/build/lib64/libcudart_static.a %{i}/lib64/
3635
rm -f %_builddir/build/lib64/lib*.a
3736

38-
# package only the CUDA driver and NVML library stubs
39-
mv %_builddir/build/lib64/stubs/libcuda.so %{i}/lib64/stubs/libcuda.so
40-
ln -sf libcuda.so %{i}/lib64/stubs/libcuda.so.1
41-
mv %_builddir/build/lib64/stubs/libnvidia-ml.so %{i}/lib64/stubs/libnvidia-ml.so
42-
ln -sf libnvidia-ml.so %{i}/lib64/stubs/libnvidia-ml.so.1
37+
# the stub libraries will be replaced by the redistributable driver libraries
4338
rm -rf %_builddir/build/lib64/stubs/
4439

4540
# do not package the OpenCL libraries
@@ -85,23 +80,32 @@ ln -s ../compute-sanitizer/compute-sanitizer %{i}/bin/compute-sanitizer
8580
# package the NVVM compiler (cicc), library (libnvvm.so), device library (libdevice.10.bc) and samples
8681
mv %_builddir/build/nvvm %{i}/
8782

88-
# extract and repackage the NVIDIA libraries needed by the CUDA runtime
83+
# extract and repackage the redistributable NVIDIA driver libraries needed by the CUDA runtime
8984
/bin/sh %_builddir/pkg/builds/NVIDIA-Linux-%{_arch}-%{driversversion}.run --silent --extract-only --tmpdir %_builddir/tmp --target %_builddir/build/drivers
9085

9186
mkdir -p %{i}/drivers
92-
mv %_builddir/build/drivers/libcuda.so.%{driversversion} %{i}/drivers/
93-
ln -sf libcuda.so.%{driversversion} %{i}/drivers/libcuda.so.1
94-
ln -sf libcuda.so.1 %{i}/drivers/libcuda.so
95-
mv %_builddir/build/drivers/libcudadebugger.so.%{driversversion} %{i}/drivers/
96-
ln -sf libcudadebugger.so.%{driversversion} %{i}/drivers/libcudadebugger.so.1
97-
ln -sf libcudadebugger.so.1 %{i}/drivers/libcudadebugger.so
98-
mv %_builddir/build/drivers/libnvidia-ptxjitcompiler.so.%{driversversion} %{i}/drivers/
99-
ln -sf libnvidia-ptxjitcompiler.so.%{driversversion} %{i}/drivers/libnvidia-ptxjitcompiler.so.1
100-
ln -sf libnvidia-ptxjitcompiler.so.1 %{i}/drivers/libnvidia-ptxjitcompiler.so
101-
mv %_builddir/build/drivers/libnvidia-nvvm.so.%{driversversion} %{i}/drivers/
102-
ln -sf libnvidia-nvvm.so.%{driversversion} %{i}/drivers/libnvidia-nvvm.so.4
103-
ln -sf libnvidia-nvvm.so.4 %{i}/drivers/libnvidia-nvvm.so
104-
mv %_builddir/build/drivers/nvidia-smi %{i}/drivers/
87+
cp -p %_builddir/build/drivers/libcuda.so.%{driversversion} %{i}/drivers/
88+
ln -sf libcuda.so.%{driversversion} %{i}/drivers/libcuda.so.1
89+
ln -sf libcuda.so.1 %{i}/drivers/libcuda.so
90+
cp -p %_builddir/build/drivers/libcudadebugger.so.%{driversversion} %{i}/drivers/
91+
ln -sf libcudadebugger.so.%{driversversion} %{i}/drivers/libcudadebugger.so.1
92+
ln -sf libcudadebugger.so.1 %{i}/drivers/libcudadebugger.so
93+
cp -p %_builddir/build/drivers/libnvidia-ptxjitcompiler.so.%{driversversion} %{i}/drivers/
94+
ln -sf libnvidia-ptxjitcompiler.so.%{driversversion} %{i}/drivers/libnvidia-ptxjitcompiler.so.1
95+
ln -sf libnvidia-ptxjitcompiler.so.1 %{i}/drivers/libnvidia-ptxjitcompiler.so
96+
cp -p %_builddir/build/drivers/libnvidia-nvvm.so.%{driversversion} %{i}/drivers/
97+
ln -sf libnvidia-nvvm.so.%{driversversion} %{i}/drivers/libnvidia-nvvm.so.4
98+
ln -sf libnvidia-nvvm.so.4 %{i}/drivers/libnvidia-nvvm.so
99+
cp -p %_builddir/build/drivers/nvidia-smi %{i}/drivers/
100+
101+
# reuse the redistributable CUDA driver library and NVML library in place of the CUDA stub libraries
102+
mkdir -p %{i}/lib64/stubs
103+
cp -p %_builddir/build/drivers/libcuda.so.%{driversversion} %{i}/lib64/stubs/
104+
ln -sf libcuda.so.%{driversversion} %{i}/lib64/stubs/libcuda.so.1
105+
ln -sf libcuda.so.1 %{i}/lib64/stubs/libcuda.so
106+
cp -p %_builddir/build/drivers/libnvidia-ml.so.%{driversversion} %{i}/lib64/stubs/
107+
ln -sf libnvidia-ml.so.%{driversversion} %{i}/lib64/stubs/libnvidia-ml.so.1
108+
ln -sf libnvidia-ml.so.1 %{i}/lib64/stubs/libnvidia-ml.so
105109

106110
%post
107111
# let nvcc find its components when invoked from the command line

0 commit comments

Comments
 (0)