where is the ./configure of TensorFlow and how to enable the GPU support?

后端 未结 4 1317
甜味超标
甜味超标 2021-02-13 15:38

When installing TensorFlow on my Ubuntu, I would like to use GPU with CUDA.

But I am stopped at this step in the Official Tutorial :

Where exactly is t

4条回答
  •  旧巷少年郎
    2021-02-13 15:56

    • Answer to first question: ./configure has already been found according to the answer here. It is under the source folder of tensorflow as shown here.

    • Answer to second question:

    Actually, I have the GPU NVIDIA Corporation GK208GLM [Quadro K610M]. I also have CUDA + cuDNN installed. (Therefore, the following answer is based on you have already installed CUDA 7.0+ + cuDNN correctly with the correct versions.) However the problem is: I have driver installed but the GPU is just not working. I made it working in the following steps:

    At first, I did this lspci and got:

    01:00.0 VGA compatible controller: NVIDIA Corporation GK208GLM [Quadro K610M] (rev ff)
    

    The status here is rev ff. Then, I did sudo update-pciids, and check lspci again, and got:

    01:00.0 VGA compatible controller: NVIDIA Corporation GK208GLM [Quadro K610M] (rev a1)
    

    Now, the status of Nvidia GPU is correct as rev a1. But now, the tensorflow is not supporting GPU yet. The next steps are (the Nvidia driver I installed is version nvidia-352):

    sudo modprobe nvidia_352
    sudo modprobe nvidia_352_uvm
    

    in order to add the driver into correct mode. Check again:

    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: 
        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
    

    We can find that the Kernel driver in use: nvidia is shown and nvidia is in correct mode.

    Now, use the example here for testing the 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.]]
    

    As you can see, the GPU is utilized.

提交回复
热议问题