【发布时间】:2017-10-31 19:24:48
【问题描述】:
我正在使用一个 1kB 的 .png 文件(即 2048x2048 numpy array)来测试我的 PyCuda 程序,它显示该程序花了大约 1.57s 来分配和复制数据到设备。
花这么长时间正常吗?
我想知道PyCuda和Cuda C在分配和memcpy过程中是否有性能差异?
(由于使用PyCuda时内核还是C语言编写的,内核执行时间大约为0.17s,所以我觉得准备时间太长了。)
分配和memcpy的代码
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)
【问题讨论】: