我的理解是TensorFlow在每个设备上创建两个线程池:一个用于帧内并行操作,一个用于操作间并行。
假设在/gpu:0
和intra_op_parallelism_threads=5
上有3个独立的操作A,B,C。假设A和B具有单线程GPU内核实现,并且C具有多线程内核实现,这意味着它们都可以在同一设备上并行运行,A和B仅使用1个GPU线程而C耗尽到3个GPU线程?
现在假设inter_op_parallelism_threads=2
,这是否意味着在/gpu:0
上只能同时评估3个操作中的2个,因此在上面的示例中,它可能是A + B,B + C或A + C取决于谁先到达那里?
注意:我正试图理解@ mrry对这个问题的回答:Tensorflow: executing an ops with a specific core of a CPU