![c022a7afdfba691144a7b778658a9f67.png](https://i-blog.csdnimg.cn/blog_migrate/bb9a2d834987e00eb7c0d140a878f8ec.jpeg)
对于tensorflow-GPU版本的安装使用我就不过多地介绍了,但是最近有些基于分布式训练的小技巧的却让我很是头疼,甚至让我开始怀疑自己的tensorflow是如何识别我电脑的GPU信息并进行调用的。
查看是否有GPU
import tensorflow as tf
gpu_device_name = tf.test.gpu_device_name()
print(gpu_device_name)
输出
/device:GPU:0
上述代码的主要作用是通过tensorflow,去查看你的电脑有没有GPU设备,但是这种查看只是tensorflow通过内置函数去调用系统变量,读取你的GPU信息,这些都是后台的东西也许你不必知道,值得注意的是,如果你安装的是tensorflow-cpu版本,那么上述操作就会显示如下的窗口,这个窗口中提示的信息原则上可以不管,因为你安装的CPU版本根本就不会去读取你的GPU信息,当然不会显示你目前的GPU信息。
![471a7e5041e49e273ba50eaf69809952.png](https://i-blog.csdnimg.cn/blog_migrate/13a041e65676d13ebefe042be5ef6c7b.png)
经过这个测试后,你只是证明了你的tensorflow是GPU版本,你的电脑有GPU设备,除此之外,调用它还不属于现在的能力范围。接下来你可以选择你需要的CUDA和cudnn版本去匹配你的GPU,注意这里匹配的是你的GPU,最后在匹配tensorflow-gpu的版本,安装如下:
没有什么本来如此:win10+tf-GPU 1.14.0+cuda 10.0+cudnn 7.6+GTX1660Tizhuanlan.zhihu.com![ded22b5c88e752b28a1d1acdb2c3cbd5.png](https://i-blog.csdnimg.cn/blog_migrate/0916bcbc4c01706c66b96140fb2e3397.jpeg)
当你需要的CUDA和cudnn安装好之后,由于CUDA是基于GPU的,走完流程她会配置给你的GPU,这个时候就可以用来加速计算了。
但是这需要一个验证过程:
tf.test.is_gpu_available()
返回结果是true则说明你之前的步骤都是对的,目前你的相关GPU不但配置正确并且属于可用状态,如果是false就需要返回去看你的GPU相关配置是否正确。
这里强调一点:
你的GPU在tensorflow中的可用序号取决于tensorflow给他的序号名称:
![56a90e8f72e2d84e00760565d3654d4a.png](https://i-blog.csdnimg.cn/blog_migrate/f85d4ed329617e2b6c06b5dfcc79642f.png)
上图中我的英伟达GPU显示为GPU1,我就想当然的认为我的GPU是序号为1,其实,那是因为我电脑自带了intel的GPU,可是它是不支持CUDA计算的,在tensorflow的认别中,GPU1的序号才是真正的0.
![2dc84de9ff13a4cdcc20b38219b7b260.png](https://i-blog.csdnimg.cn/blog_migrate/d59df941debda08eb773c54cacc6912e.png)
目前使用GPU计算的优势不言而喻,我本人目前由于设备的原因只采用了一个GPU进行运算,如果你有多个GPU,那完全可以分布式使用,值得注意的是,多个GPU对应的CUDA版本务必要一样,因为一个环境只能使用一个CUDA,多个CUDA一定会报错。也就是通俗的理解,两个GPU的话,两个显卡驱动,但是只能由一个CUDA来调取使用。