#python #tensorflow #gpu
#питон #тензорный поток #графический процессор
Вопрос:
Я пытаюсь запустить tensorflow-gpu в Windows 10 на ноутбуке с графическим процессором Quadro
-----------------------------------------------------------------------------
| NVIDIA-SMI 465.21 Driver Version: 465.21 CUDA Version: 11.3 |
|------------------------------- ---------------------- ----------------------
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=============================== ====================== ======================|
| 0 Quadro T2000 WDDM | 00000000:01:00.0 On | N/A |
| N/A 59C P0 14W / N/A | 2708MiB / 4096MiB | 0% Default |
| | | N/A |
------------------------------- ---------------------- ----------------------
при попытке проверить, все ли работает нормально, я обнаружил, что
device_lib.list_local_devices() завершается с ошибкой
**RuntimeError: cudaGetDevice() failed. Status: invalid argument**
2021-01-13 11:30:14.735823: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1720] Found device 0 with properties:
pciBusID: 0000:01:00.0 name: Quadro T2000 computeCapability: 7.5
coreClock: 1.5GHz coreCount: 16 deviceMemorySize: 4.00GiB deviceMemoryBandwidth: 104.34GiB/s
2021-01-13 11:30:14.736173: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library
cudart64_110.dll
2021-01-13 11:30:14.736376: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library
cublas64_11.dll
2021-01-13 11:30:14.736590: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library
cublasLt64_11.dll
2021-01-13 11:30:14.736801: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library
cufft64_10.dll
2021-01-13 11:30:14.737016: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library
curand64_10.dll
2021-01-13 11:30:14.737221: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library
cusolver64_10.dll
2021-01-13 11:30:14.737418: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library
cusparse64_11.dll
2021-01-13 11:30:14.737590: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library
cudnn64_8.dll
2021-01-13 11:30:14.737787: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1862] Adding visible gpu devices: 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:UsersD041705AppDataLocalProgramsPythonPython38libsite-packagestensorflowpythonclientdevice_lib.py", line
43, in list_local_devices
_convert(s) for s in _pywrap_device_lib.list_devices(serialized_config)
RuntimeError: cudaGetDevice() failed. Status: invalid argument
Есть какие-нибудь намеки на то, как это происходит?
У меня есть CUDA 11.2 python 3.8.7, и я установил последние пакеты для tf и tf-gpu
Ответ №1:
Только что решил эту проблему. Я предположил, что универсальным решением является понижение версии вашего драйвера CUDA и GPU.
Во-первых, согласно последней проблеме, TensorFlow 2.4 несовместим с Cuda 11.2 или 11.1, вместо этого используется Cuda 11.0.
Во-вторых, если вы используете последнюю версию драйвера графического процессора, вы обнаружите, что версия CUDA во время работы равна 11.3 nvidia-smi
. В моем случае сработало понижение версии драйвера графического процессора до старой версии, 461.09.
- Win10 20H2
- GTX1070m
- tensorflow ‘2.4.1’
nvidia-smi
-----------------------------------------------------------------------------
| NVIDIA-SMI 461.09 Driver Version: 461.09 CUDA Version: 11.2 |
|------------------------------- ---------------------- ----------------------
и
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Wed_Jul_22_19:09:35_Pacific_Daylight_Time_2020
Cuda compilation tools, release 11.0, V11.0.221
Build cuda_11.0_bu.relgpu_drvr445TC445_37.28845127_0
Чтобы проверить, работает ли Cuda, вы должны использовать Tensorflow для вычисления, список устройств может не помочь.
import tensorflow as tf
tf.debugging.set_log_device_placement(True)
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)
вывод:
Executing op MatMul in device /job:localhost/replica:0/task:0/device:GPU:0