为什么tf.contrib.rnn.LSTMBlockFusedCell仅在一个线程上运行?

时间:2018-09-11 08:44:57

标签: tensorflow lstm

我正在具有16核cpu(英特尔®至强®CPU E5-2697 v4 @ 2.30GHz 2.29GHz(16核))的机器上运行tensorflow。我的程序包括一个LSTM层,批处理大小为128。

首先,我使用tf.contrib.rnn.BasicLSTMCell。抱歉,由于我在该网站上没有赢得10个声誉,因此无法上传图片。该配置文件显示BasicLSTMCell被拆分为许多小操作,并由大约16个内核运行。 (还有另一个问题。当我在32核cpu上运行程序时,效率没有增加。当我将批处理大小加倍时,成本时间增加了一倍。)

有人[1] [2]指出,在CPU上,tf.contrib.rnn.LSTMBlockFusedCell比BasicLSTMCell更有效。但是我的程序结果表明它们的效率几乎相同。该配置文件显示LSTMBlockFusedCell仅在一个内核空闲时才在一个内核上运行。当我将批处理大小增加一倍时,LSTMBlockFusedCell会使花费的时间增加一倍,并且也可以在一个内核上运行。

我尝试更改inter_op_parallelism_threads,inter_op_parallelism_threads和OMP_NUM_THREADS,但这并没有太大帮助。谁能帮我吗?

[1] https://returnn.readthedocs.io/en/latest/tf_lstm_benchmark.html [2] https://www.tensorflow.org/performance/performance_guide#rnn_performance

0 个答案:

没有答案