web-dev-qa-db-fra.com

Comment vérifier si dlib utilise ou non le GPU?

Ma machine est équipée d'un GPU Geforce 940mx GDDR5.

J'ai installé toutes les exigences pour exécuter dlib accéléré par GPU (avec prise en charge GPU):

  1. Boîte à outils CUDA 9.0 avec les 3 mises à jour de correctifs de https://developer.nvidia.com/cuda-90-download-archive?target_os=Windows&target_Arch=x86_64&target_version=10&target_type=exelocal

  2. cuDNN 7.1.4

Ensuite, j'ai exécuté toutes ces commandes ci-dessous après avoir cloné le référentiel dlib/davisKing sur Github pour compléter dlib avec le support GPU:

$ git clone https://github.com/davisking/dlib.git
$ cd dlib
$ mkdir build
$ cd build
$ cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
$ cmake --build .
$ cd ..
$ python setup.py install --yes USE_AVX_INSTRUCTIONS --yes DLIB_USE_CUDA

Maintenant, comment pourrais-je éventuellement vérifier/confirmer si dlib (ou d'autres bibliothèques dépendent de dlib comme face_recognition d'Adam Geitgey) utilise le GPU à l'intérieur python Shell/Anaconda (jupyter Notebook)?

5
rahulreddy

En plus de la réponse précédente utilisant la commande,

dlib.DLIB_USE_CUDA

Il existe d'autres moyens de s'assurer que dlib utilise réellement votre GPU.

Le moyen le plus simple de le vérifier est de vérifier si dlib reconnaît votre GPU.

import dlib.cuda as cuda
print(cuda.get_num_devices())

Si le nombre d'appareils est> = 1, alors dlib peut utiliser votre appareil.

Une autre astuce utile consiste à exécuter votre code dlib et à exécuter en même temps

$ nvidia-smi

Cela devrait vous donner des informations complètes sur l'utilisation du GPU où vous pouvez voir l'utilisation totale ainsi que l'utilisation de la mémoire de chaque processus séparément.

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.48                 Driver Version: 410.48                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1070    Off  | 00000000:01:00.0  On |                  N/A |
|  0%   52C    P2    36W / 151W |    763MiB /  8117MiB |      5%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1042      G   /usr/lib/xorg/Xorg                            18MiB |
|    0      1073      G   /usr/bin/gnome-Shell                          51MiB |
|    0      1428      G   /usr/lib/xorg/Xorg                           167MiB |
|    0      1558      G   /usr/bin/gnome-Shell                         102MiB |
|    0      2113      G   ...-token=24AA922604256065B682BE6D9A74C3E1    33MiB |
|    0      3878      C   python                                       385MiB |
+-----------------------------------------------------------------------------+

Dans certains cas, la zone Processus peut indiquer quelque chose comme "les processus ne sont pas pris en charge", cela ne signifie pas que votre GPU ne peut pas exécuter de code, mais il ne prend pas simplement en charge ce type de journalisation.

6
Sebastian Värv

Si dlib.DLIB_USE_CUDA est vrai, alors il utilise cuda, s'il est faux, il ne l'est pas.

En passant, ces étapes ne font rien et ne sont pas nécessaires pour utiliser python:

$ mkdir build
$ cd build
$ cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
$ cmake --build .

Il vous suffit de lancer setup.py.

4
Davis King

Les extraits suivants ont été simplifiés pour utiliser ou vérifier si dlib utilise ou non le GPU.

Tout d'abord, vérifiez si dlib identifie votre GPU ou non.
import dlib.cuda as cuda; print(cuda.get_num_devices());

Deuxièmement, dlib.DLIB_USE_CUDA si c'est faux, permettez-lui simplement d'utiliser le support GPU en
dlib.DLIB_USE_CUDA = True.

2
SIDHARTH RAI