Почему моя Python программа работает быстрее на процессоре, чем на GPU с CUDA? - PullRequest
1 голос
/ 22 февраля 2020

Итак, я следовал этому учебнику, в основном запустив этот код в Python (3.7.4) на Windows 10:

import numpy as np
from timeit import default_timer as timer
from numba import vectorize

@vectorize(['float32(float32, float32)'], target='cuda')
def pow(a, b):
    return a ** b

def main():
    vec_size = 100000000

    a = b = np.array(np.random.sample(vec_size), dtype=np.float32)
    c = np.zeros(vec_size, dtype=np.float32)

    start = timer()
    c = pow(a, b)
    duration = timer() - start

    print(duration)

if __name__ == '__main__':
    main()

Проблема: Результаты, отличающиеся от результатов в руководстве (в котором используется 1050Ti)

Когда для цели установлено значение 'cuda', что означает, что она работает на моем GTX 970 (драйвер 441.41), программе требуется ~ 0,6 секунды, чтобы запустить. Но если установить значение «параллельный», то есть многоядерный процессор (i5 4690k), потребуется всего ~ 0,1 секунды. Даже если установить для него значение «cpu», чтобы оно использовало только 1 процессорное ядро, оно работает быстрее, чем GPU, за ~ 0,4 секунды.

Так, возможно, я как-то неправильно настроил свой GPU? Насколько я могу судить, вся установка инструментария CUDA не пошла не так.

Кроме того, когда я запускаю эту вещь, в Windows Диспетчер задач я вижу небольшой рост графика на короткое время. количество времени ( Изображение ), поэтому кажется, что он использует графический процессор, но, возможно, не так идеально, как мог бы.

Я действительно не знаю, что я могу сделать здесь - Google К сожалению, не привело меня к решению. Любые предложения о том, что здесь происходит? Могу ли я проверить это по-другому? В случае, если я не могу решить это: есть ли хорошие альтернативы CUDA?

...