Tensorflow在一个GPU上支持多个线程/流进行培训吗?

时间:2020-02-21 19:46:19

标签: python-3.x multithreading tensorflow gpu

更新:

我找到了GPUDevice的源代码,它将最大流硬编码为1,请问我知道原因吗?

GPUDevice(const SessionOptions&options,const string&name, 字节memory_limit,const DeviceLocality&locality, TfGpuId tf_gpu_id,常量字符串和physical_device_desc, 分配器* gpu_allocator,分配器* cpu_allocator) :BaseGPUDevice(选项,名称,memory_limit,位置,tf_gpu_id, physical_device_desc,gpu_allocator,cpu_allocator, false / *同步每个操作* /,1 / max_streams / ){ 如果(options.config.has_gpu_options()){ force_gpu_compatible_ = options.config.gpu_options()。force_gpu_compatible(); }

====================================

我想知道TensorFlow(1.x版本)是否在单个GPU上支持多线程或多流。如果不是,我很好奇其根本原因,TF是出于某些目的或某些库(例如CUDA)阻止了TF提供或某些其他原因吗?

就像以前的文章[1,2]一样,我尝试在TF中运行多个训练操作,即sees.run([train_op1,train_op2],feed_dict = {...}),我使用TF时间轴进行了剖析每次迭代。但是,TF时间轴始终显示两个火车操作顺序运行(尽管时间轴不准确[3],每个操作的挂壁时间表明顺序运行)。我还查看了TF的一些源代码,看起来每个操作都是通过device-> ComputeAsync()或device-> Compute()计算的,并且在计算op时会阻塞GPU。如果我是正确的话,那么一个GPU每次只能运行一个操作,这可能会降低GPU利用率。

1。Running multiple tensorflow sessions concurrently

2。Run parallel op with different inputs and same placeholder

3。https://github.com/tensorflow/tensorflow/issues/1824#issuecomment-244251867

0 个答案:

没有答案