Pun*_*han 3 c c++ parallel-processing process openmp
我原以为变量“i”将达到最大值 11,然后“for”工作共享区域将被取消,代码是:
omp_set_num_threads(11);
#pragma omp parallel
{
#pragma omp for
for(i=0;i<9999;i++){
printf("%d by %d \n",i,omp_get_thread_num());
if(i>11) //2
{
#pragma omp cancel for
}
}//for
}//parallel omp pragma
Run Code Online (Sandbox Code Playgroud)
但是我持有最大值 9998 的变量我认为这意味着工作共享区域没有被取消。
默认情况下禁用取消,主要是出于性能原因。您必须通过将cancel-var ICV设置为 来专门启用取消支持true。这样做的唯一方法是将环境变量设置OMP_CANCELLATION为true,例如:
$ OMP_CANCELLATION=true ... ./omp_executable ...
Run Code Online (Sandbox Code Playgroud)