2012-02-03 44 views
2

我的程序有兩個內核,第二個內核應該使用已經上傳的輸入數據和第一個內核的結果,所以我可以保存內存傳輸。我將如何歸檔這個?如何讓PyCUDA重用早期內核的內存?

這是我啓動我的內核:

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

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

回答

1

在pycuda除非你明確要求它,你將無法傳輸數據和從設備。 例如,如果分配存儲器和一些數據與傳送到GPU:

result = float64(zeros((height,width)) 
result_device = gpuarray.to_gpu(result) 

可變result_device是在GPU上的數據的引用。您可以將result_device傳遞給任何其他內核,而不會將內存傳輸回CPU。 在這種情況下,當您撥打電話時,內存傳輸將再次發生:

result = result_device.get()