gpt4 book ai didi

python - 为什么我的GPU代码运行速度比CPU慢很多

转载 作者:行者123 更新时间:2023-12-01 03:52:52 25 4
gpt4 key购买 nike

这是我们随处可见的标准示例代码之一......

import time
import numpy

import pycuda.gpuarray as gpuarray
import pycuda.cumath as cumath
import pycuda.autoinit

size = 1e7

t0 = time.time()
x = numpy.linspace(1, size, size).astype(numpy.float32)
y = numpy.sin(x)
t1 = time.time()

cpuTime = t1-t0
print(cpuTime)

t0 = time.time()
x_gpu = gpuarray.to_gpu(x)
y_gpu = cumath.sin(x_gpu)
y = y_gpu.get()
t1 = time.time()

gpuTime = t1-t0
print(gpuTime)

结果是:CPU 为 200 毫秒,GPU 为 2.45 秒...超过 10 倍

我在 win 10 上运行...对比 2015 上的 PTVS...

致以诚挚的问候...

斯蒂芬

最佳答案

看起来pycuda在您第一次调用cumath.sin()函数时引入了一些额外的开销(在我的系统上约为400ms)。我怀疑这是因为需要为被调用的函数编译 CUDA 代码。更重要的是,这种开销与传递给函数的数组的大小无关。对 cumath.sin() 的额外调用要快得多,因为 CUDA 代码已编译可供使用。在我的系统上,问题中给出的 GPU 代码运行时间约为 20 毫秒(重复运行),而 numpy 代码的运行时间约为 130 毫秒。

我自称不太了解 pycuda 的内部工作原理,因此有兴趣听听其他人对此的看法。

关于python - 为什么我的GPU代码运行速度比CPU慢很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37957129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com