У меня есть программа 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();
, процессор продолжит работу, не дожидаясь окончания ядра, так что ... Должен ли я вызватьcudaThreadSynchronize()
перед unbind_x ().Я пытаюсь запустить с & без, результат тот же?!?(А по идее не должно)