У меня два компьютера с одинаковым графическим процессором (GTX 1080), установлены одинаковые копии ОС и программного обеспечения. Но когда я запускаю свою программу tenorflow (модель RNN), скорость сильно отличается. Один примерно в 1,5 раза быстрее другого.
Вот ключевые характеристики двух:
Система A: Asus Z170-P, i7 6700T, 32 ГБ Ram, GTX 1080.
SystemB: Asus X99 E-WS, i7 5930K, 128G Ram, GTX 1080. (Проблема первая)
Оба установлены с (используя тот же метод):
ОС: Ubuntu 16.04
Версия драйвера графического процессора: 378.13
Cuda версия: 8.0
версия cuDNN: 5.1
Tensorflow: устанавливается с помощью метода pip install tensorflow-gpu==1.0.1
Питон: Анаконда 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})
SystemA выполняет 75 iter/sec, а systemB имеет только 50 iter/sec, да, на самом деле, худший на самом деле быстрее.
Основные наблюдения:
- SystemB имеет гораздо большую ошибку страницы при запуске программы.
- Благодаря мониторингу
Volatile GPU-Util
отnvidia-smi
smi, systemA стабильно занимает около 40%, а systemB - около 30%.
Вещи, которые я пробовал на systemB:
- Обновите BIOS до последней версии и сбросьте настройки по умолчанию.
- Обратитесь в службу поддержки Asus за помощью.
- Поменяйте местами карту GPU с системой А.
- Измените слот 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
Кто-нибудь может указать мне направление, как профилировать / отладить эту проблему? Спасибо заранее!
Обновить:
У меня есть оперативная память Corsair DDR4 3000MHz CMK32GBX4M2B3000C15, которая, кажется, не указана в списке поддерживаемых материнских плат, может быть в этом причина? Но я пользуюсь этим компьютером уже год, никаких проблем, как никогда.
ОБНОВИТЬ:
Разобравшись с пользователем stackoverflow пользователя wontonimo, мы обнаружили, что проблема связана с процессором BUS+. Надеюсь, кто-то здесь может указать мне направление, чтобы это исправить. И пост здесь.