UbuntuにTensorFlowをインストールするときに、CUDAでGPUを使用したいと思います。
しかし、私は 公式チュートリアル のこのステップで停止しています:
これはどこにあるのですか./configure
?またはどこに私のソースツリーのルートがあります。
私のTensorFlowは、ここ/usr/local/lib/python2.7/dist-packages/tensorflow
にあります。しかし、./configure
はまだ見つかりませんでした。
[〜#〜]編集[〜#〜]
Salvador Daliの回答 に従って./configure
を見つけました。しかし、サンプルコードを実行すると、次のエラーが発生しました。
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 8
E tensorflow/stream_executor/cuda/cuda_driver.cc:466] failed call to cuInit: CUDA_ERROR_NO_DEVICE
I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:86] kernel driver does not appear to be running on this Host (cliu-ubuntu): /proc/driver/nvidia/version does not exist
I tensorflow/core/common_runtime/gpu/gpu_init.cc:112] DMA:
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 8
Cudaデバイスが見つかりません。
回答
GPUサポートを有効にした方法についての回答をご覧ください こちら 。
実際、私はGPU NVIDIA Corporation GK208GLM [Quadro K610M]
を持っています。 CUDA
+ cuDNN
もインストールしています。 (したがって、次の回答は、正しいバージョンでCUDA 7.0+
+ cuDNN
がすでに正しくインストールされていることに基づいています。)ただし、問題は次のとおりです。ドライバがインストールされていますが、GPUが機能していません。私はそれを次の手順で機能させました:
最初に、私はこれをlspci
して、得ました:
01:00.0 VGA compatible controller: NVIDIA Corporation GK208GLM [Quadro K610M] (rev ff)
ここのステータスはrev ffです。次に、Sudo update-pciids
を実行し、再度lspci
を確認して、次のようにしました。
01:00.0 VGA compatible controller: NVIDIA Corporation GK208GLM [Quadro K610M] (rev a1)
現在、Nvidia GPUのステータスはrev a1として正しいです。しかし現在、tensorflow
はまだGPUをサポートしていません。次の手順は次のとおりです(私がインストールしたNvidiaドライバーはバージョンnvidia-352
):
Sudo modprobe nvidia_352
Sudo modprobe nvidia_352_uvm
ドライバを正しいモードに追加するため。再び確かめる:
cliu@cliu-ubuntu:~$ lspci -vnn | grep -i VGA -A 12
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK208GLM [Quadro K610M] [10de:12b9] (rev a1) (prog-if 00 [VGA controller])
Subsystem: Hewlett-Packard Company Device [103c:1909]
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at cb000000 (32-bit, non-prefetchable) [size=16M]
Memory at 50000000 (64-bit, prefetchable) [size=256M]
Memory at 60000000 (64-bit, prefetchable) [size=32M]
I/O ports at 5000 [size=128]
Expansion ROM at cc000000 [disabled] [size=512K]
Capabilities: <access denied>
Kernel driver in use: nvidia
cliu@cliu-ubuntu:~$ lsmod | grep nvidia
nvidia_uvm 77824 0
nvidia 8646656 1 nvidia_uvm
drm 348160 7 i915,drm_kms_helper,nvidia
Kernel driver in use: nvidia
が表示され、nvidia
が正しいモードになっていることがわかります。
ここで、GPUのテストに例 here を使用します。
cliu@cliu-ubuntu:~$ python
Python 2.7.9 (default, Apr 2 2015, 15:33:21)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
>>> b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
>>> c = tf.matmul(a, b)
>>> sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 8
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:888] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:88] Found device 0 with properties:
name: Quadro K610M
major: 3 minor: 5 memoryClockRate (GHz) 0.954
pciBusID 0000:01:00.0
Total memory: 1023.81MiB
Free memory: 1007.66MiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:112] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:122] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:643] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Quadro K610M, pci bus id: 0000:01:00.0)
I tensorflow/core/common_runtime/gpu/gpu_region_allocator.cc:47] Setting region size to 846897152
I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 8
Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K610M, pci bus id: 0000:01:00.0
I tensorflow/core/common_runtime/local_session.cc:107] Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K610M, pci bus id: 0000:01:00.0
>>> print sess.run(c)
b: /job:localhost/replica:0/task:0/gpu:0
I tensorflow/core/common_runtime/simple_placer.cc:289] b: /job:localhost/replica:0/task:0/gpu:0
a: /job:localhost/replica:0/task:0/gpu:0
I tensorflow/core/common_runtime/simple_placer.cc:289] a: /job:localhost/replica:0/task:0/gpu:0
MatMul: /job:localhost/replica:0/task:0/gpu:0
I tensorflow/core/common_runtime/simple_placer.cc:289] MatMul: /job:localhost/replica:0/task:0/gpu:0
[[ 22. 28.]
[ 49. 64.]]
ご覧のとおり、GPUが使用されています。
これは中にあると想定しているbashスクリプトです
ソースツリーのルート
レポのクローン の場合。ここにあります https://github.com/tensorflow/tensorflow/blob/master/configure
2番目の質問:互換性のあるGPU(NVIDIAコンピューティング機能3.5以上)がインストールされていますか?指示に従ってCUDA 7.0 + cuDNNがインストールされていますか?これが、障害が発生している最も可能性の高い理由です。答えが「はい」の場合、それはcudaインストールの問題である可能性があります。 nvidia-smiを実行すると、GPUがリストに表示されますか?そうでない場合は、最初に修正する必要があります。これには、新しいドライバーの入手やnvidia-xconfigの再実行などが必要になる場合があります。
7.0 cudaライブラリと6.5 cudnnライブラリがある場合にのみ、ソースからGPUバージョンを再構築できます。これはグーグルで更新する必要があると思います