Я только начинаю с Theano и Deep Learning. Я экспериментировал с примером из учебника Theano (http://deeplearning.net/software/theano/tutorial/using_gpu.html#returning-a-handle-to-device-allocated-data). Пример кода показан здесь:Понимание Theano Пример с точки зрения ядер GPU/нитей
from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time
vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in xrange(iters):
r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
print('Used the cpu')
else:
print('Used the gpu')
Я пытаюсь понять выражение, определяющее «vlen»,
vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
Я нигде не могу найти в тексте, который относится к числу ядер GPU указанный в этом примере, и почему было выбрано 30. Я также не могу понять, почему было использовано значение 768 потоков. Мой GPU (GeForce 840M) имеет 384 ядра. Могу ли я предположить, что если я заменил 384 вместо значения 30, я буду использовать все 384 ядра? Также должно быть зафиксировано значение 768 потоков?
Я уверен, что цель комментария состоит в том, чтобы предположить, что размер проблемы, который должен быть создан ('vlen'), должен/должен быть достаточно большим, чтобы быть« интересным »на графическом процессоре. Коды CUDA, включая основы theano, которые используют CUDA, обычно не указывают количество ядер или количество потоков на ядро (я могу только предположить здесь, что «core» = «SM», что не является обычным определением, но единственное, что имеет смысл). В конце концов, 'vlen' здесь в конечном счете - это просто число, длина массива. Если вы запустите код как есть, он будет использовать все ваши ядра GPU. В любой из них нет волшебства (10,30,768). –
Вот почему у меня возникло затруднение с определением «vlen». Кажется, нет никаких оснований выражать это, почему. Это на самом деле кажется вводящим в заблуждение. – crayguy
Да, и это довольно сложно, так как это часть учебника. – crayguy