两个具有相同 GPU 的系统在 GPU 上运行 Tensorflow 脚本时性能差异很大

两个具有相同 GPU 的系统在 GPU 上运行 Tensorflow 脚本时性能差异很大

我有两台电脑,它们都配备了相同的 GPU(GTX 1080),安装了相同的操作系统和软件。但是当我运行 tensorflow 程序(RNN 模型)时,速度却大不相同。一台比另一台快 1.5 倍左右。

以下是两者的主要规格:

系统 A:华硕 Z170-P、i7 6700T、32GB 内存、GTX 1080。
系统 B:华硕 X99 E-WS、i7 5930K、128G 内存、GTX 1080。(问题一)

两者的安装方式相同(使用相同方法):

操作系统:Ubuntu 16.04
GPU 驱动程序版本:378.13
Cuda 版本:8.0
cuDNN 版本:5.1
Tensorflow:使用方法安装pip install tensorflow-gpu==1.0.1
Python:Anaconda 3.6

示例代码:

import tensorflow as tf
import numpy as np
from tqdm import trange

np.random.seed(111)
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})

系统 A 的执行速度为 75 iter/秒,而系统 B 的执行速度仅为 50 iter/秒,是的,较差的那个实际上速度更快。

主要观察:

  1. SystemB 在运行该程序时出现了更大的页面错误。
  2. 通过监控Volatile GPU-Util发现nvidia-smi系统A稳定在40%左右,系统B稳定在30%左右。

我在 systemB 上尝试过的事情:

  1. 将 BIOS 升级到最新版本并重置默认设置。
  2. 致电华硕客户服务寻求帮助。
  3. 将 GPU 卡与系统 A 交换。
  4. 更换 PCI-e 插槽以确保其在 x16 gen3 上运行。
  5. 注入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

有人能告诉我如何分析/调试这个问题吗?提前谢谢了!

更新:

我的内存是 Corsair DDR4 3000MHz CMK32GBX4M2B3000C15,似乎没有列在主板支持列表中,可能是这个原因吗?但是我已经使用这台电脑一年了,没有出现任何问题。

更新:

通过与 stackoverflow 用户 wontonimo 的讨论,我们发现是 BUS+CPU 导致了这个问题。希望有人能给我指出解决这个问题的方向。帖子是这里

相关内容