我的机器配备了Geforce 940mx GDDR5 GPU。
我已经安装了运行GPU加速dlib的所有要求(支持GPU):
然后我在Github上克隆dlib / davisKing存储库后执行以下所有命令,以便在GPU支持下编译dlib:
$ 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
现在我怎么可能检查/确认dlib(或其他库依赖于dlib,如Adam Geitgey的face_recognition)是否在python shell / Anaconda(jupyter Notebook)中使用GPU?
如果dlib.DLIB_USE_CUDA为真,那么它使用cuda,如果它是假的则不是。
顺便说一句,这些步骤什么都不做,不需要使用python:
$ mkdir build
$ cd build
$ cmake .. -DDLIB_USE_CUDA=1 -DUSE_AVX_INSTRUCTIONS=1
$ cmake --build .
只需运行setup.py就可以了。
除了上一个使用命令的答案,
dlib.DLIB_USE_CUDA
有一些替代方法可以确保dlib实际上是否正在使用您的GPU。
检查它的最简单方法是检查dlib是否识别您的GPU。
import dlib.cuda as cuda
print(cuda.get_num_devices())
如果设备数> = 1,则dlib可以使用您的设备。
另一个有用的技巧是运行你的dlib代码并同时运行
$ nvidia-smi
这应该为您提供完整的GPU利用率信息,您可以在其中分别查看总利用率和每个进程的内存使用情况。
+-----------------------------------------------------------------------------+
| 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 |
+-----------------------------------------------------------------------------+
在某些情况下,进程框可能会说“不支持进程”,这并不意味着您的GPU无法运行代码,但它不仅支持这种日志记录。
以下代码段已经简化为使用或检查dlib是否使用GPU。
首先,检查dlib是否识别您的GPU。
import dlib.cuda as cuda;
print(cuda.get_num_devices());
其次,dlib.DLIB_USE_CUDA
如果它是假的,只需让它使用GPU支持
dlib.DLIB_USE_CUDA = True
。