我有一个像这样的cuda程序:
for (int i=0;i<100000;i++) {
if (i%2 == 0) {
bind_x(x) // bind x to texture
kernel_code<<A,B>>(M,x,y) // calculate y = M*x
}
else {
bind_x(y)
kernel_code<<A,B>>(M,y,x) // calculate x = M*y
}
cudaThreadSynchronize();
if (i%2 == 0)
unbind_x(x)
else
unbind_x(y) // unbind x from texture
}
我听说如果我没有把cudaThreadSynchronize();
cpu继续运行而不等待内核结束那么......我应该在unbind_x()之前调用cudaThreadSynchronize()
。我试着用&amp;没有,结果是一样的吗?!? (理论上它不应该)
答案 0 :(得分:4)
任何CUDA操作(特殊异步操作除外)都会自动导致cudaThreadSynchronize()
。所以,结果应该是一样的。