This procedure has been tested on Fedora 29, on a HP laptop with this graphical card: NVIDIA Corporation GP107M GeForce GTX 1050 Mobile (rev a1)
The commands have to be run as the root user. This tutorial assumes the nvidia driver is already working.
Install pip #
dnf install python3-pip
Install Cuda 10.0 #
Download the installer from the Nvidia website and run it. Make sure to install the Perl module Term::ReadLine::Gnu
beforehand because the cuda installer relies on it.
cpan install Term::ReadLine::Gnu
wget https:////developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux
TPMDIR=/root sh cuda_10.0.130_410.48_linux --override
I specify the TMPDIR
environment variable so the installer uses the /root
partition for temporary files (as I don’t have enough space in my /tmp
folder). The --override
flag tells the cuda installer to not check the gcc version.
Install cudnn for cuda 10 #
wget https://developer.download.nvidia.com/compute/redist/cudnn/v7.4.2/cudnn-10.0-linux-x64-v7.4.2.24.tgz
tar -xvf cudnn-10.0-linux-x64-v7.4.2.24.tgz
cp include/cudnn.h /usr/local/cuda-10.0/include/cudnn.h
cp lib64/libcudnn.so.7.4.2 /usr/local/cuda-10.0/lib64/libcudnn.so.7.4.2
ln -s /usr/local/cuda-10.0/lib64/libcudnn.so.7.4.2 /usr/local/cuda-10.0/lib64/libcudnn.so.7
ln -s /usr/local/cuda-10.0/lib64/libcudnn.so.7 /usr/local/cuda-10.0/lib64/libcudnn.so
Update environmeent variables #
So your compiler can find the installed libraries:
cat >> ~/.bashrc << EOF
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
export CUDA_HOME=/usr/local/cuda-10.0
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/cuda-10.0/samples/common/inc
EOF
Install GCC 7 #
Cuda 10.0 requires a GCC version <= 7. We install GCC 7 from Fedora 27.
cat >> ~/.bashrc << EOF
wget http://download-ib01.fedoraproject.org/pub/fedora/linux/releases/27/Everything/x86_64/os/Packages/g/gcc-7.2.1-2.fc27.x86_64.rpm \
http://download-ib01.fedoraproject.org/pub/fedora/linux/updates/27/x86_64/Packages/g/gcc-c++-7.3.1-6.fc27.x86_64.rpm \
http://download-ib01.fedoraproject.org/pub/fedora/linux/releases/27/Everything/x86_64/os/Packages/l/libstdc++-static-7.2.1-2.fc27.x86_64.rpm \
http://download-ib01.fedoraproject.org/pub/fedora/linux/releases/27/Everything/x86_64/os/Packages/l/libstdc++-devel-7.2.1-2.fc27.x86_64.rpm
rpm -ivh --force --nodeps *.rpm
You can test the installation by running:
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
make
./deviceQuery
You should see Result = PASS
in the output
Install PyTorch #
pip3 install https://download.pytorch.org/whl/cu100/torch-1.0.1.post2-cp37-cp37m-linux_x86_64.whl torchvision
Install Tensorflow #
We install the nightly version which supports cuda 10
pip3 install tf-nightly-gpu
You can test if Tensorflow works properly by importing it and running :
import tensorflow as tf
with tf.Session() as sess:
devices = sess.list_devices()
The output must something like:
name: GeForce GTX 1050 major: 6 minor: 1 memoryClockRate(GHz): 1.493
pciBusID: 0000:01:00.0
totalMemory: 1.95GiB freeMemory: 1.57GiB
2019-02-23 17:08:53.794390: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1546] Adding visible gpu devices: 0
2019-02-23 17:08:53.803004: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened CUDA library libcudart.so.10.0
2019-02-23 17:08:53.820094: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1015] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-02-23 17:08:53.820174: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1021] 0
2019-02-23 17:08:53.820196: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1034] 0: N
2019-02-23 17:08:53.820612: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1149] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1387 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1050, pci bus id: 0000:01:00.0, compute capability: 6.1)