2016-06-16 54 views

risposta

13

Al momento non ci sono API per bloccare le operazioni su un particolare core, sebbene ciò renderebbe un buon feature request. Si potrebbe approssimare questa funzionalità creando più dispositivi CPU, ciascuno con un singolo thread ThreadPool, ma questo non è garantito per mantenere la posizione di una soluzione core-pinning:

with tf.device("/cpu:4"): 
    # ... 

with tf.device("/cpu:7"): 
    # ... 

with tf.device("/cpu:0"): 
    # ... 

config = tf.ConfigProto(device_count={"CPU": 8}, 
         inter_op_parallelism_threads=1, 
         intra_op_parallelism_threads=1) 
sess = tf.Session(config=config) 
+0

Wow, con un semplice test il guadagno di velocità era di 3 volte. Grazie mille! MODIFICA: dopo l'analisi, il guadagno di 3 volte in velocità è causato solo dall'impostazione della configurazione come descritto nella risposta. Fa sentire che sto usando RNN. Lo esaminerò! – PhABC

+0

BTW, penso che sia necessario impostare inter_op_parallelism_threads in numeri superiori nell'esempio sopra, altrimenti eseguirà tutto in modo sequenziale, ecco un test https://gist.github.com/yaroslavvb/b73ff35424dd7ab762234620cf583aac –