我正在尝试理解 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);
我认为它应该运行得更快......变量计数的值是 6 500 000(最大值)......第一个源代码需要 14 毫秒,第二个源代码需要 11 毫秒。
谁能给我解释一下,好吗?