在cuda线程上可以执行多少指令是否有限制?例如,如果我在下面运行此代码,总计大约1000万次空循环的迭代,它永远不会到达最后一个printf(具有相同迭代次数的单个循环的结果相同)。但是,如果我削掉两个内部循环,只留下10.000次迭代,那就确实如此。这是什么原因? :)
不应该空代码能够永远运行吗?内核调用和函数如下所示:
//The call in main()
simStepGPU <<< 1, 128>>>();
cudaDeviceSynchronize();
__global__ void simStepGPU(Particle *array, int len) {
//printf("START OF THREAD");
for (int it = 0; it < 100; it++) {
for (int it2 = 0; it2 < 100; it2++) {
for (int it3 = 0; it3 < 100; it3++) {
for (int it4 = 0; it4 < 100; it4++) {
}
}
}
}
printf("END OF THREAD");
}
这是我的第一篇stackoverflow帖子,所以请你好。