博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tensorflow多GPU多进程占用的问题
阅读量:2225 次
发布时间:2019-05-09

本文共 752 字,大约阅读时间需要 2 分钟。

在使用实验室的服务器要运行训练自己的网络的时候,经常出现有另外的同学也在训练网络,4个GPU总是有几个被占用。因此老是出现下面的警报:

creating context when one is currently active; existing: 0x2a7d250Internal: failed initializing StreamExecutor for CUDA device ordinal 3: Internal: failed call to cuDevicePrimaryCtxRetain: CUDA_ERROR_OUT_OF_MEMORY; total memory reported: 8506179584

Tensorflow默认会使用尽可能多的GPU,并且占用所使用的GPU。因此如果有别的Tensorflow正在使用GPU,而自己的程序使用默认配置,那么是无法使用已经被使用的GPU的,也无法单独使用一块没有被使用的GPU。

因此,我们可以在运行我们的tensorflow程序的时候,指定程序使用的特定GPU:
因为我经常使用ipython运行代码,所以在此介绍一个代码中更改指定GPU的方法:

import osos.environ["CUDA_VISIBLE_DEVICES"]="0"'''也可以指定显存比例'''config = tf.ConfigProto()config.gpu_options.per_process_gpu_memory_fraction = 0.4session = tf.Session(config=config, ...)

或者在命令行中使用

CUDA_VISIBLE_DEVICES=0 python your_python.py

转载地址:http://fzmfb.baihongyu.com/

你可能感兴趣的文章
Java并发指南1:并发基础与Java多线程
查看>>
Java并发指南2:深入理解Java内存模型JMM
查看>>
Java并发指南5:JMM中的final关键字解析
查看>>
Java并发指南6:Java内存模型JMM总结
查看>>
Java并发指南7:JUC的核心类AQS详解
查看>>
Java并发指南8:AQS中的公平锁与非公平锁,Condtion
查看>>
Java网络编程和NIO详解6:Linux epoll实现原理详解
查看>>
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
查看>>
Java网络编程与NIO详解8:浅析mmap和Direct Buffer
查看>>
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>