【发布时间】:2017-05-08 08:09:58
【问题描述】:
我有两台具有相同 GPU (GTX 1080) 的计算机,安装了相同的操作系统和软件副本。但是当我运行我的 tensorflow 程序(一个 RNN 模型)时,速度却大不相同。一个比另一个快大约 1.5 倍。
以下是两者的主要规格:
SystemA:华硕 Z170-P、i7 6700T、32GB 内存、GTX 1080。
SystemB:华硕X99 E-WS,i7 5930K,128G Ram,GTX 1080。(问题一)
两者都安装(使用相同的方法):
操作系统:Ubuntu 16.04
GPU驱动版本:378.13
Cuda 版本:8.0
cuDNN 版本:5.1
Tensorflow:使用方法安装pip install tensorflow-gpu==1.0.1
Python:蟒蛇 3.6
示例代码:
import tensorflow as tf
import numpy as np
from tqdm import trange
h,w = 3000, 2000
steps = 1000
x = tf.placeholder(dtype=tf.float32, shape=[h, w], name='x')
t = tf.constant(np.random.random(size=[w, w]), dtype=tf.float32)
m = tf.matmul(x,t)
x0 = np.random.random(size=[h, w])
sess = tf.Session()
for i in trange(steps):
x0 = sess.run(m, feed_dict={x: x0})
SystemA 执行 75 iter/sec,而 systemB 只有 50 iter/sec,是的,更差的实际上更快。
主要观察:
- SystemB 在运行程序时出现更大的页面错误。
- 通过从
nvidia-smi监控Volatile GPU-Util,systemA稳定在40%左右,systemB在30%左右。
我在 systemB 上尝试过的事情:
- 将 BIOS 升级到最新版本并重置默认设置。
- 致电华硕客服寻求帮助。
- 将 GPU 卡与系统 A 交换。
- 更改 PCI-e 插槽以确保它在 x16 gen3 上运行。
- 将
LD_PRELOAD="/usr/lib/libtcmalloc.so"注入.bashrc文件。
/usr/bin/time -v输出的主要区别是:
# The first value is for systemB and the second is for systemA.
System time (seconds): 7.28 2.95
Percent of CPU this job got: 85% 106%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:22.41 0:14.89
Minor (reclaiming a frame) page faults: 684695 97853
Involuntary context switches: 164 91063
File system inputs: 0 24
File system outputs: 8 0
谁能指出如何分析/调试此问题的方向?非常感谢!
【问题讨论】:
标签: io tensorflow gpu nvidia