world with tutorial hello guide python parallel-processing tensorflow distributed-computing

python - with - Significado de inter_op_parallelism_threads e intra_op_parallelism_threads



tensorflow with hadoop (2)

¿Alguien puede explicar los siguientes términos de TensorFlow?

  1. inter_op_parallelism_threads

  2. intra_op_parallelism_threads

o, por favor, proporcione enlaces a la fuente correcta de explicación.

He realizado algunas pruebas cambiando los parámetros, pero los resultados no han sido consistentes para llegar a una conclusión.


Para obtener el mejor rendimiento de una máquina, cambie los hilos de paralelismo y la configuración de OpenMP como se muestra a continuación para el backend de tensorflow (desde here ):

import tensorflow as tf config = tf.ConfigProto(intra_op_parallelism_threads=0,  inter_op_parallelism_threads=0, allow_soft_placement=True) session = tf.Session(config=config)


Las opciones inter_op_parallelism_threads e intra_op_parallelism_threads están documentadas en la fuente del tf.ConfigProto protocolo tf.ConfigProto . Estas opciones configuran dos grupos de subprocesos utilizados por TensorFlow para paralelizar la ejecución, como describen los comentarios:

// 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;

Existen varias formas posibles de paralelismo cuando se ejecuta un gráfico TensorFlow, y estas opciones proporcionan un cierto paralelismo de CPU de control multinúcleo:

  • Si tiene una operación que se puede paralelizar internamente, como la multiplicación de matrices ( tf.matmul() ) o una reducción (por ejemplo, tf.reduce_sum() ), TensorFlow la ejecutará programando tareas en un grupo de subprocesos con subprocesos intra_op_parallelism_threads . Por lo tanto, esta opción de configuración controla la aceleración paralela máxima para una sola operación. Tenga en cuenta que si ejecuta varias operaciones en paralelo, estas operaciones compartirán este grupo de subprocesos.

  • Si tiene muchas operaciones que son independientes en su gráfico TensorFlow, debido a que no hay una ruta dirigida entre ellas en el gráfico de flujo de datos, TensorFlow intentará ejecutarlas simultáneamente, utilizando un grupo de subprocesos con subprocesos inter_op_parallelism_threads . Si esas operaciones tienen una implementación multiproceso, compartirán (en la mayoría de los casos) el mismo grupo de subprocesos para el paralelismo intraoperatorio.

Finalmente, ambas opciones de configuración toman un valor predeterminado de 0 , lo que significa que "el sistema elige un número apropiado". Actualmente, esto significa que cada grupo de subprocesos tendrá un subproceso por núcleo de CPU en su máquina.