2012-02-03 6 views
2

私のプログラムには2つのカーネルがあり、2番目のカーネルは既にアップロードされた入力データと最初のカーネルの結果を使用する必要があります。どのようにアーカイブするのですか?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), 
) 

答えて

1

あなたが明示的に要求しない限り、あなたは、デバイスにとの間でデータを転送しません。あなたは、メモリを割り当てるとしてGPUに一部のデータを転送する場合 例えば、:

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

変数result_deviceは、GPU内のデータへの参照です。 result_deviceを他のカーネルに渡すには、メモリ転送をCPUに戻す必要があります。 この場合、電話をかけたときにメモリ転送が再度行われます。

result = result_device.get() 
関連する問題