2016-07-04 45 views

risposta

1

È possibile limitare il numero di dispositivi di un determinato tipo utilizzato da TensorFlow passando l'appropriato device_count in un ConfigProto come argomento config durante la creazione della sessione. Ad esempio, è possibile limitare il numero di dispositivi CPU come segue:

config = tf.ConfigProto(device_count={'CPU': 1}) 
sess = tf.Session(config=config) 
with sess.as_default(): 
    print(tf.constant(42).eval()) 
+5

Ho provato questo, ma non funziona. Se invio un lavoro al cluster, Tensorflow funziona ancora su tutti i core disponibili di un nodo. Io la seguente: init = tf.initialize_all_variables() #launch il grafico config = tf.ConfigProto (device_count = { 'CPU': 1}) sess = tf.Session (config = config) sess.run (init) –

18

Per eseguire tensorflow su un filo CPU singola, utilizzo:

session_conf = tf.ConfigProto(
     intra_op_parallelism_threads=1, 
     inter_op_parallelism_threads=1) 
sess = tf.Session(config=session_conf) 

device_count limita il numero di CPU in uso, non il numero di core o thread.

tensorflow/tensorflow/core/protobuf/config.proto dice:

message ConfigProto { 
    // Map from device type name (e.g., "CPU" or "GPU") to maximum 
    // number of devices of that type to use. If a particular device 
    // type is not found in the map, the system picks an appropriate 
    // number. 
    map<string, int32> device_count = 1; 

Su Linux è possibile eseguire sudo dmidecode -t 4 | egrep -i "Designation|Intel|core|thread" per vedere quante CPU/core/thread si dispone, ad esempio, la seguente ha 2 CPU, ognuno di essi ha 8 core, ciascuno di essi ha 2 fili, che dà un totale di 2 * 8 * 2 = 32 fili:

[email protected]:~$ sudo dmidecode -t 4 | egrep -i "Designation|Intel|core|thread" 
    Socket Designation: CPU1 
    Manufacturer: Intel 
      HTT (Multi-threading) 
    Version: Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz 
    Core Count: 8 
    Core Enabled: 8 
    Thread Count: 16 
      Multi-Core 
      Hardware Thread 
    Socket Designation: CPU2 
    Manufacturer: Intel 
      HTT (Multi-threading) 
    Version: Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz 
    Core Count: 8 
    Core Enabled: 8 
    Thread Count: 16 
      Multi-Core 
      Hardware Thread 

testato con tensorflow 0.12.1 e 1,0. 0 con Ubuntu 14.04.5 LTS x64 e Ubuntu 16.04 LTS x64.

+0

Sfortunatamente, questo sembra non avere alcun effetto durante l'esecuzione su Windows 10 (tf 1.5.0). È un problema non avere un modo per lasciare un core libero per altri programmi. – Elroch

+0

@LiamRoche Non penso che questo dovrebbe accadere. Potresti voler sollevare un problema nel repository GitHub di tensorflow. –