TensorFlow 的 ./configure 在哪里以及如何启用 GPU 支持?
Posted
技术标签:
【中文标题】TensorFlow 的 ./configure 在哪里以及如何启用 GPU 支持?【英文标题】:where is the ./configure of TensorFlow and how to enable the GPU support? 【发布时间】:2016-02-13 01:05:48 【问题描述】:在我的 Ubuntu 上安装 TensorFlow 时,我想将 GPU 与 CUDA 一起使用。
但我在Official Tutorial 中的这一步停了下来:
./configure
到底在哪里?或者我的源代码树的根在哪里。
我的 TensorFlow 位于此处/usr/local/lib/python2.7/dist-packages/tensorflow
。但是我还是没有找到./configure
。
编辑
我根据Salvador Dali's answer找到了./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 支持here 的答案。
【问题讨论】:
您编辑说您找到了 ./configure 文件。我有同样的问题,在我的机器上找不到它。你在哪里找到的? @Chimi 就在文件夹下,其中包含您的 tensorflow 源代码。 @Chimi 例如,在git clone https://github.com/tensorflow/tensorflow.git
之后,然后是cd tensorflow
,然后你会在那里找到它。
【参考方案1】:
这是一个 bash 脚本,假设在
源代码树的根
当你cloned the repo。这里是https://github.com/tensorflow/tensorflow/blob/master/configure
【讨论】:
@fluency_03 那么你为什么要寻找如何从源代码安装它(你不需要这样做)?如果您通过管道传输它,那么您要么已经安装了 GPU,要么没有。 我根据你的回答找到了./configure。但是在执行示例代码时,我得到了下面我编辑的问题中所述的错误。 @ChangLiu 你确定你有 GPU 设备并且安装了它们的所有依赖项。我建议你买一个 cpu 版本,用它玩,如果你发现你可以用它做一些好事,开始担心 GPU。 强烈同意@SalvadorDali 关于仅启动CPU 的建议。 GPU 只与速度有关,而不是与您可以通过耐心实现的任何根本不同。一旦您等待一个小时来训练您的模型并发现它很烦人,然后让 GPU 联机。 :)【参考方案2】:第一个问题的答案:根据here的答案已经找到./configure
。它位于tensorflow
的源文件夹下,如here 所示。
第二个问题的答案:
实际上,我有 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
处于正确模式。
现在,使用示例 here 来测试 GPU:
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 已被利用。
【讨论】:
【参考方案3】:第二个问题:您是否安装了兼容的 GPU(NVIDIA 计算能力 3.5 或更高版本),并且您是否按照说明安装了 CUDA 7.0 + cuDNN?这是您看到失败的最可能原因。如果答案是肯定的,则可能是 cuda 安装问题。当您运行 nvidia-smi 时,您是否看到列出了您的 GPU?如果没有,你需要先解决这个问题。这可能需要获取更新的驱动程序和/或重新运行 nvidia-xconfig 等。
【讨论】:
我也有类似的问题。当我运行 nvidia-smi 时,我得到响应“无法初始化 NVML:GPU 访问被操作系统阻止” 我有 GPU:NVIDIA Corporation GK208GLM [Quadro K610M]
。我安装了 CUDA 2.0 + cuDNN。我没有nvidia-smi
。我已安装驱动程序但 GPU 无法正常工作。
你在linux上吗?如果您没有 nvidia-smi,则说明您的驱动程序安装有问题。那张卡对于我们通常测试的东西来说听起来有点弱,而且内存肯定比我们推荐的要少。您可以尝试调整 TF_MIN_GPU_MULTIPROCESSOR_COUNT(环境变量)以说服 tensorflow 使用它,但我并没有为成功而屏住呼吸。 :) 有兴趣听听您的结果。【参考方案4】:
只有当您拥有 7.0 cuda 库和 6.5 cudnn 库时,您才能从源代码重建 GPU 版本。 这需要由谷歌更新,我认为
【讨论】:
以上是关于TensorFlow 的 ./configure 在哪里以及如何启用 GPU 支持?的主要内容,如果未能解决你的问题,请参考以下文章
TensorFlow-GPU环境配置之四——配置和编译TensorFlow
解决Tensorflow源码安装的之后TensorBoard 无法使用的问题
Ubuntu编译Protobuf(Base tensorflow-12)报错