【问题标题】:cuda - Is PyCuda slower than pure Cuda in the process of allocating memory and copying data to device?cuda - 在分配内存和将数据复制到设备的过程中,PyCuda 是否比纯 Cuda 慢?
【发布时间】:2017-10-31 19:24:48
【问题描述】:

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

花这么长时间正常吗?

我想知道PyCudaCuda 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)

【问题讨论】:

    标签: cuda pycuda


    【解决方案1】:

    不,PyCUDA(以您使用它的方式)和“本机”CUDA 之间的性能差异可以忽略不计。

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

    【讨论】:

      猜你喜欢
      • 2017-03-23
      • 2013-01-03
      • 2019-01-02
      • 2013-06-06
      • 1970-01-01
      • 2011-11-06
      • 2010-09-22
      • 2012-09-29
      • 2015-04-22
      相关资源
      最近更新 更多