cudaThreadSynchronize()要求

时间:2010-08-31 06:14:14

标签: c cuda

我有一个像这样的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;没有,结果是一样的吗?!? (理论上它不应该)

1 个答案:

答案 0 :(得分:4)

任何CUDA操作(特殊异步操作除外)都会自动导致cudaThreadSynchronize()。所以,结果应该是一样的。