关于kernel函数的同步

如题,如果有下面的情况:
kernel1<<<block1,thread1>>>();
kernel2<<<block2,thread2>>>();

执行,中间要不要写cudaDeviceSynchronize();来进行同步啊。
资料上说不用写,是隐式同布的,可不写的话每次结果都一些小的不一样。
求大神正视听。

你不需要手工同步的。显然的。

至于你的结果说不加入cudaDeviceSynchronize()会不同,那显然不是这里导致的。

楼主显然错误的将原因归结于此了。

你说呢?

是否在他们中间加入cudaDeviceSynchronize(),结果不变,不是你因为什么隐式同步。

而是因为,无论你加不加,后一个kernel和前一个总是顺序执行的,前面的不执行完,后面的是不会执行的。

所以中间加不加同步完全不影响结果。

请你三思。