cuda-PyCuda在分配内存和将数据复制到设备的过程中是否比纯cuda慢?

cuda-PyCuda在分配内存和将数据复制到设备的过程中是否比纯cuda慢?,cuda,pycuda,Cuda,Pycuda,我正在使用一个1kB.png文件(即2048x2048 numpy数组)来测试我的PyCuda程序,它显示该程序大约花费了1.57s将数据分配并复制到设备 花这么长时间是正常的吗 我想知道PyCuda和Cuda C在分配和memcpy过程中是否有性能差异 (由于使用PyCuda时内核仍然是用C编写的,内核执行时间大约是0.17秒,所以我觉得做准备花费的时间太长了。) 分配和存储的代码 img_gpu = cuda.mem_alloc(img.nbytes) cuda.memcpy_htod(im

我正在使用一个1kB
.png
文件(即
2048x2048 numpy数组
)来测试我的
PyCuda
程序,它显示该程序大约花费了1.57s将数据分配并复制到设备

花这么长时间是正常的吗

我想知道
PyCuda
Cuda C
在分配和memcpy过程中是否有性能差异

(由于使用PyCuda时内核仍然是用C编写的,内核执行时间大约是0.17秒,所以我觉得做准备花费的时间太长了。)

分配和存储的代码

img_gpu = cuda.mem_alloc(img.nbytes)
cuda.memcpy_htod(img_gpu, img)

result_gpu = cuda.mem_alloc(result.nbytes)
cuda.memcpy_htod(result_gpu, result)

disX = np.array(disX).astype(np.int32)
disY = np.array(disY).astype(np.int32)

disX_gpu = cuda.mem_alloc(disX.nbytes)
cuda.memcpy_htod(disX_gpu, disX)

disY_gpu = cuda.mem_alloc(disY.nbytes)
cuda.memcpy_htod(disY_gpu, disY)

不,PyCUDA(在您使用它的方式上)和“原生”CUDA在性能上存在着可以忽略的差异

PyCUDA驱动程序模块是围绕CUDA驱动程序API的一个非常薄的包装器,您应该期望它们执行相同的操作。上下文建立和内存分配是非常昂贵的操作,尤其是在Windows WDDM平台上,而且您所测量的似乎只是标准延迟和设置开销