如何告诉PyCUDA重用来自早期内核的内存?

如何告诉PyCUDA重用来自早期内核的内存?,pycuda,Pycuda,我的程序有两个内核,第二个内核应该使用已经上传的输入数据和第一个内核的结果,这样我可以保存内存传输。我该如何存档 以下是我启动内核的方式: result = gpuarray.zeros(points, dtype=np.float32) kernel( driver.In(dataT),result,np.int32(points), grid = (blocks,1), block = (block_size, 1, 1), ) 在pycuda中,除非您明确请

我的程序有两个内核,第二个内核应该使用已经上传的输入数据和第一个内核的结果,这样我可以保存内存传输。我该如何存档

以下是我启动内核的方式:

result = gpuarray.zeros(points, dtype=np.float32)  

kernel(
    driver.In(dataT),result,np.int32(points),
    grid = (blocks,1),
    block = (block_size, 1, 1),
)

在pycuda中,除非您明确请求,否则不会向设备传输数据。 例如,如果您分配内存并使用以下命令将一些数据传输到GPU:

result = float64(zeros( (height,width) )
result_device = gpuarray.to_gpu(result)
变量结果_设备是对GPU中数据的引用。您可以将结果_设备传递给任何其他内核,而无需将内存传输回CPU。 在这种情况下,当您调用以下命令时,将再次发生内存传输:

result = result_device.get()