if (tid == 0) printf("threadIdx.x: ");
printf("%2d ", tid);
想请问:
对于线程束中的不同线程,为什么第二行一定在第一行之后执行?
对于线程束中的不同线程,为什么会顺序执行第二行?
我尝试加入如下代码
int k = 0;
if (tid == 0) {
for ( int i = 0; i < 100000000; i++ ) {
k = k + 1;
}
}
if (tid == 0) printf("threadIdx.x: ");
printf("%2d ", tid);
if (tid == 0) printf("\n");
您好,请教几个问题。 我的显卡是2080Ti
当我读到,109页
10.3 更多线程束内的基本函数
中的Listing 10.2
(如下)输出是
其中的
想请问:
但是仍然如下输出,我期待线程0应该是最晚执行完成的。
书中106页讲
从伏特架构开始,引入了独立线程调度(independent thread scheduling)机制。 每个线程有自己的程序计数器。
我的理解是线程之间的执行顺序应该是随机的。这也正是线程束内同步函数 _syncwarp()
存在的意义。