TensorFlow的GPU设置
原文地址:
https://blog.csdn.net/Jamesjjjjj/article/details/83414680
- os.environ[“CUDA_DEVICE_ORDER”] = “PCI_BUS_ID” # 按照PCI_BUS_ID顺序从0开始排列GPU设备
- os.environ[“CUDA_VISIBLE_DEVICES”] = “0” #设置当前使用的GPU设备仅为0号设备 设备名称为'/gpu:0'
- os.environ[“CUDA_VISIBLE_DEVICES”] = “1” #设置当前使用的GPU设备仅为1号设备 设备名称为'/gpu:0'
- os.environ[“CUDA_VISIBLE_DEVICES”] = “0,1” #设置当前使用的GPU设备为0,1号两个设备,名称依次为'/gpu:0'、'/gpu:1'
- os.environ[“CUDA_VISIBLE_DEVICES”] = “1,0” #设置当前使用的GPU设备为1,0号两个设备,名称依次为'/gpu:0'、'/gpu:1'。表示优先使用1号设备,然后使用0号设备
import os os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see issue #152 os.environ["CUDA_VISIBLE_DEVICES"]="0" # Will use only the first GPU device os.environ["CUDA_VISIBLE_DEVICES"]="0,3" # Will use only the first and the fourth GPU devices
————————————————
版权声明:本文为CSDN博主「James-J」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Jamesjjjjj/article/details/83414680
在使用GPU版的TensorFlow跑程序的时候,如果不特殊写代码注明,程序默认是占用所有主机上的GPU,但计算过程中只会用其中一块。也就是你看着所有GPU都被占用了,以为是在GPU并行计算,但实际上只有其中一块在运行;另外的所有显卡都闲着,但其显存都被占用了,所以别人也用不了。不过这种情况通过在程序之前加三行代码就可以解决:
import os os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" os.environ['CUDA_VISIBLE_DEVICES'] = "0,1"
这行代码加在TensorFlow程序开头,就可以成功屏蔽掉系统中除 gpu0 和 gpu1 之外所有的GPU设备了(当然,这个gpu序号要根据实际情况来定)。
注意,第二行 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" 也很重要,保证程序中的GPU序号是和硬件中的序号是相同的,不加的话可能会造成不必要的麻烦。
如果不想使用GPU,这样设置第三行代码 os.environ['CUDA_VISIBLE_DEVICES'] = "" 。在这个程序中所有的GPU设备都被屏蔽了,所以只能用CPU。
除此之外,TensorFlow程序会默认占用显卡中的所有显存,如果想让程序需要多少显存就用多少应该怎么设置呢?创建 session 的时候加一项设置:
config = tf.ConfigProto() config.gpu_options.allow_growth = True session = tf.Session(config=config)
跑程序的时候可以用 nvidia-smi 命令来观察一下显存使用情况。
原文链接:https://blog.csdn.net/byron123456sfsfsfa/article/details/79811286
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步