Sto usando Tensorflow su un cluster e voglio dire a Tensorflow di funzionare solo su un singolo core (anche se ce ne sono altri disponibili).Come posso eseguire Tensorflow su un singolo core?
Qualcuno sa se questo è possibile?
Sto usando Tensorflow su un cluster e voglio dire a Tensorflow di funzionare solo su un singolo core (anche se ce ne sono altri disponibili).Come posso eseguire Tensorflow su un singolo core?
Qualcuno sa se questo è possibile?
È 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())
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.
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
@LiamRoche Non penso che questo dovrebbe accadere. Potresti voler sollevare un problema nel repository GitHub di tensorflow. –
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) –