我想了解CUDA流,我已經做了我的第一個程序與流慢,但它是比通常的內核函數慢...CUDA流比平時內核
這是爲什麼代碼慢
cudaMemcpyAsync(pole_dev, pole, size, cudaMemcpyHostToDevice, stream_1);
addKernel<<<count/100, 100, 0, stream_1>>>(pole_dev);
cudaMemcpyAsync(pole, pole_dev, size, cudaMemcpyDeviceToHost, stream_1);
cudaThreadSynchronize(); // I don't know difference between cudaThreadSync and cudaDeviceSync
cudaDeviceSynchronize(); // it acts relatively same...
比:
cudaMemcpy(pole_dev, pole, size, cudaMemcpyHostToDevice);
addKernel<<<count/100, 100>>>(pole_dev);
cudaMemcpy(pole, pole_dev, size, cudaMemcpyDeviceToHost);
我thounght它應該運行得更快...變量count的值是6 500 000(最大)... 第一源代碼需要14毫秒conds和第二個源代碼需要11毫秒。
有人可以向我解釋嗎?
是什麼讓你覺得第一個應該比第二個更快? – talonmies
另外,對於流,您可能需要cudaStreamSychronize(),但在這種情況下不會影響性能。 – talonmies