Graph Tensorflow:使用CPU的特定核心执行ops
目前可以为特定的操作指定要与tf.device(…)函数一起使用的CPU或GPU,但是您是否可以指定CPU的内核?目前没有用于将操作固定到特定内核的API,尽管这会是一个很好的选择。您可以通过创建多个CPU设备来近似此功能,每个CPU设备都有一个单线程线程池,但这并不能保证保持核心固定解决方案的局部性:Graph Tensorflow:使用CPU的特定核心执行ops,graph,cpu,device,tensorflow,Graph,Cpu,Device,Tensorflow,目前可以为特定的操作指定要与tf.device(…)函数一起使用的CPU或GPU,但是您是否可以指定CPU的内核?目前没有用于将操作固定到特定内核的API,尽管这会是一个很好的选择。您可以通过创建多个CPU设备来近似此功能,每个CPU设备都有一个单线程线程池,但这并不能保证保持核心固定解决方案的局部性: with tf.device("/cpu:4"): # ... with tf.device("/cpu:7"): # ... with tf.device("/cpu:0"):
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)
哇,仅仅通过一个简单的测试,速度就提高了3倍。非常感谢你!编辑:调查后,3倍的速度增益仅是由于按照您的答案中所述设置配置造成的。我使用RNN是有意义的。我会调查的!顺便说一句,在上面的例子中,我认为您需要将inter_op_parallelism_线程设置为更高的数值,否则它将按顺序运行所有内容,下面是一个测试,我只需要一个线程。但是,config=tf.ConfigProto(device_count={“CPU”:1},inter_op_parallelism_threads=1,intra_op_parallelism_threads=1)生成8个线程(每个核心一个线程,我有8个核心)。如何将线程数减少到1?