为什么我的Python程序在具有CUDA的CPU上比在GPU上运行得更快?

时间:2020-02-22 18:36:25

标签: python numba

因此,我遵循了this教程,基本上是在Windows 10上以Python(3.7.4)运行此代码:

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)中的结果不同

当target设置为'cuda'时,这意味着它正在我的GTX 970(驱动程序441.41)上运行,程序需要约0.6秒的时间运行。 但是,如果将其设置为“并行”,即CPU(i5 4690k)上有多个内核,则只需约0.1秒。 即使将其设置为“ cpu”,因此它仅使用1个cpu内核,它的运行速度比GPU快,约0.4秒。

那么我是否可能以某种方式错误地配置了我的GPU?据我所知,CUDA工具包的整个安装都没有错。

此外,当我运行该程序时,在Windows任务管理器中,我看到图形在短时间内略有上升(Image),因此它确实使用了GPU,但可能不是尽可能地理想。

我真的不知道我在这里能做什么-不幸的是,谷歌没有带领我找到解决方案。关于这里发生的事情有什么建议吗?我可以用其他方式测试吗?万一我不能解决这个问题:CUDA有什么好的替代品吗?

0 个答案:

没有答案