python - 交换 PyCuda DeviceAllocation 对象是一个坏主意吗?

标签 python cuda pycuda

假设我们使用两个调用在设备上分配了相同数量的内存,如下所示:

pointerA = cuda_driver.mem_alloc(myArray.nbytes)
pointerB = cuda_driver.mem_alloc(myArray.nbytes)

然后我们将两个 DeviceAllocation 对象的相同数据复制到设备上。

cuda_driver.memcpy_htod(pointerA, myArray)
cuda_driver.memcpy_htod(pointerB, myArray)

交换两个 DeviceAllocation 对象是不是一个坏主意?例如,它们可以像这样交换:

tempPointer = pointerA
pointerA = pointerB
pointerB = tempPointer

最佳答案

不,这不是一个坏主意,恰恰相反。 PyCUDA 中的指针对象交换得到完全支持,并且通常是正确的做法。

一般来说,CUDA 代码中的大多数设备到设备的副本都是不必要的,可以通过指针交换来替​​换。唯一不起作用的情况是设备到设备传输仅将部分源内存复制到目标内存(反之亦然)。

关于python - 交换 PyCuda DeviceAllocation 对象是一个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44034221/

相关文章:

python - 空数据错误 : No columns to parse from file about streamlit

python - 如何处理 ImportError : cannot import name 'pytree' from 'jaxlib' of using jax?

debugging - 查询 GPU 上事件的 CUDA 内核集

c++ - CUDA 编译器对象到可执行文件

python - 使用 PyCuda 的遗传细胞自动机,如何有效地将每个细胞的大量数据传递给 CUDA 内核?

python - 设置 pycharm 运行 django unittest

python - 处理生成器中抛出的异常

ubuntu - CUDA 没有启用 CUDA 的 gpu

python - 使用 PyCUDA 连接 cuSOLVER-sparse

python - 异步内核启动后返回 pyCUDA 中的主机代码