私はPyCuda
プログラムをテストするために1kB .png
ファイル(すなわち2048x2048 numpy array
)を使用しています。このプログラムは約1.57sというデータを割り当ててデバイスにコピーしたことを示しています。cuda - PyCudaは純粋なCudaよりもメモリの割り当てとデータのデバイスへのコピー処理に時間がかかりますか?
このような長い時間がかかるのは正常ですか?
私は、PyCuda
とCuda 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)