Ich experimentiere mit GPU Berechnungen zum ersten Mal und hoffte auf eine große Beschleunigung, natürlich. Jedoch mit einem grundlegenden Beispiel in Tensorflow war es tatsächlich schlimmer:Tensorflow Matmul Berechnungen auf GPU sind langsamer als auf CPU
Auf CPU: 0, dauert jeder der zehn Läufe im Durchschnitt 2 Sekunden, GPU: 0 dauert 2,7 Sekunden und GPU: 1 ist 50% schlechter als CPU: 0 mit 3 Sekunden.
Hier ist der Code:
import tensorflow as tf
import numpy as np
import time
import random
for _ in range(10):
with tf.Session() as sess:
start = time.time()
with tf.device('/gpu:0'): # swap for 'cpu:0' or whatever
a = tf.constant([random.random() for _ in xrange(1000 *1000)], shape=[1000, 1000], name='a')
b = tf.constant([random.random() for _ in xrange(1000 *1000)], shape=[1000, 1000], name='b')
c = tf.matmul(a, b)
d = tf.matmul(a, c)
e = tf.matmul(a, d)
f = tf.matmul(a, e)
for _ in range(1000):
sess.run(f)
end = time.time()
print(end - start)
Was ich hier beobachte? Kann die Laufzeit hauptsächlich durch das Kopieren von Daten zwischen RAM und GPU bestimmt werden?
Versuchen Sie, die Matrizen zu erhöhen und die GPU-Nutzung in 'nvidia-smi' gegenüber der CPU-Nutzung in' top' zu sehen. – sygi
@sygi danke, ich wusste nicht über 'nvidia-smi'. Es zeigt, dass GPU-Util nicht über 2% hinausgeht. Python scheint jedoch den größten Teil des Speichers zu beanspruchen. Der Stromverbrauch ist ziemlich stabil bei 40W/180W – stefan
So scheint es, dass der Code, den Sie geschrieben haben, nicht gpu-gebunden ist. Können Sie versuchen, 'a' und' b' in 'tf.random_uniform ([1000, 1000])' 'zu ändern? Was Speicher anbelangt, nimmt TF standardmäßig den gesamten GPU-Speicher (sick!), Aber es gibt eine Option, die übergeben wird, um die dynamische Zuweisung zu erzwingen. – sygi