In dem Blog-Beitrag „TensorFlow selbst gebastelt“ wurde die Kompilierung und Installation von Tensorflow 1.15 mit CUDA-Unterstützung für CUDA-10 beschrieben. Mittlerweile ist CUDA in der Version 11 angekommen und Tensorflow gibt es in der Version 2.3.0: Ein Update ist also nötig!
Das Vorgehen ist relativ ähnlich zum vorherigen Beitrag. Die erste große Hürde ist Bazel. Zum Einsatz kam eine vorkompilierte Version (3.2.0) von github:
cd ~ ; wget https://github.com/bazelbuild/bazel/releases/download/3.2.0/bazel-3.2.0-linux-x86_64
Danach wurde tensorflow von github herruntergeladen:
- git clone https://github.com/tensorflow/tensorflow.git
- cd tensorflow/
- git tag
- git checkout tags/v2.3.0 -b v2.3.0-branch
- ./configure
Nun wird die gewünschte Konfiguration abgefragt:
- /usr/bin/python3 (Default-Wert)
- /usr/lib/python3.6/site-packages (Default-Wert)
- n (OpenCL SYCL)
- n (ROCm)
- y (CUDA)
- n (TensorRT)
- 11 (CUDA-Version)
- 8 (cuDNN-Version)
- (leere Eingabe) (ncc)
/usr/,/usr/include/,/usr/local/cuda-11.0/,/usr/local/cuda-11.0/include/,/opt/cuda/include/,/opt/cuda/lib64
- 7.0 (compute cap)
- n
- /usr/bin/gcc (Default-Wert)
-D_GLIBCXX_USE_CXX11_ABI=0 -O3 -Wformat -Wformat-security -fstack-protector -fPIC -march=native -Wno-sign-compare
- n
Die Konfiguration ist fertig – jetzt das Bauen mit dem Bazel von github:
../bazel-3.2.0-linux-x86_64 build –config=opt –config=numa –config=cuda –config=mkl –config=monolithic –config=v2 //tensorflow/tools/pip_package:build_pip_package
Jetzt lange Warten ….. und dann das Paket schnüren:
bazel-bin/tensorflow/tools/pip_package/build_pip_package
tensorflow_pkg
Die fertige whl-Datei liegt nun unter tensorflow_pkg und kann nun installiert werden:
pip3 install -I tensorflow_pkg/tensorflow-2.3.0-cp36-cp36m-linux_x86_64.whl
pip3 list | grep tensorflow
Informationen für die NutzerInnen des Instituts für Informatik:
Auf gruenau9 und gruenau10 kann das pip-Paket wie folgt installiert werden:
pip3 install --force-reinstall /vol/pool-software/tensorflow/gruenau9_10/tensorflow-2.3.0-cp36-cp36m-linux_x86_64.whl
Um CUDA nutzen zu können, müssen die entsprechenden Treiber für die NVIDIA-GPU und die Bibliotheken installiert sein. Unter OpenSuse 15.2 kann man die entsprechenden Repositories hinzufügen:
- NVIDIA-Treiber: https://download.nvidia.com/opensuse/leap/15.2
- CUDA: http://developer.download.nvidia.com/compute/cuda/repos/opensuse15/x86_64
Danach müssen folgende Pakete installiert werden:
- cuda-11-0
- nvidia-computeG04 (Repo: cuda)
- nvidia-computeG05 (Repo: NVIDIA)
Um ältere Binaries zu unterstützen, die gegen ältere CUDA-Bibliotheken gelinkt sind, können noch folgende Pakete installiert werden:
- cuda-10-0
- cuda-10-1
- cuda-10-2
Nach der Installation und ggf. einem Neustart kann mit dem Kommando „nvidia-smi“ alles geprüft werden.
Zur GPU-Unterstützung für Deep Neural Networks sollte NVIDIA cuDNN installiert werden. Die Bibliothek kann von der NVIDIA-Webseite in verschiedenen Versionen heruntergeladen werden:
- cudnn-7.4.2
- cudnn-7.6.5
- cudnn-8.0.x
Die verschiedenen Versionen sind ggf. nötig, falls vorkompilierte Bibliotheken zum Einsatz kommen, die gegen eine bestimmte Major o. Minor-Version gelinkt sind.
Linkliste: