inter_op_parallelism_threads
和intra_op_parallelism_threads
选项记录在tf.ConfigProto
协议缓冲区的源中 。这些选项配置了TensorFlow用来并行化执行的两个线程池,如注释所述:
// The execution of an individual op (for some op types) can be
// parallelized on a pool of intra_op_parallelism_threads.
// 0 means the system picks an appropriate number.
int32 intra_op_parallelism_threads = 2;
// Nodes that perform blocking operations are enqueued on a pool of
// inter_op_parallelism_threads available in each process.
//
// 0 means the system picks an appropriate number.
//
// Note that the first Session created in the process sets the
// number of threads for all future sessions unless use_per_session_threads is
// true or session_inter_op_thread_pool is configured.
int32 inter_op_parallelism_threads = 5;
运行TensorFlow图时,可能有几种并行形式,这些选项提供了一些控制多核CPU并行性:
如果您具有可以在内部并行化的操作,例如矩阵乘法(
tf.matmul()
)或归约(例如tf.reduce_sum()
),则TensorFlow将通过在具有intra_op_parallelism_threads
线程的线程池中调度任务来执行该操作。因此,此配置选项控制单个操作的最大并行加速。请注意,如果并行运行多个操作,则这些操作将共享此线程池。如果您在TensorFlow图中有许多独立的操作-因为在数据流图中它们之间没有直接的路径-TensorFlow将尝试使用带有
inter_op_parallelism_threads
线程的线程池并发运行它们。如果这些操作具有多线程实现,则它们(在大多数情况下)将共享同一线程池以进行操作内并行操作。
最后,两个配置选项的默认值均为0
,这表示“系统选择了一个合适的数字”。当前,这意味着每个线程池在您的计算机中每个CPU内核将有一个线程。
0
有人可以解释以下TensorFlow术语吗
inter_op_parallelism_threads
intra_op_parallelism_threads
或者,请提供指向正确说明源的链接。
我通过更改参数进行了一些测试,但结果并不一致,无法得出结论。