gpt4 book ai didi

c++ - 为什么 openMP 取消构造不取消工作共享区域?

转载 作者:搜寻专家 更新时间:2023-10-31 01:05:44 25 4
gpt4 key购买 nike

我预计变量“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

但是变量 i 的最大值为 9998,我想这意味着工作共享区域没有被取消。

最佳答案

默认情况下禁用取消,主要是出于性能原因。您必须通过将 cancel-var ICV 设置为 true 来专门启用取消支持。这样做的唯一方法是将环境变量 OMP_CANCELLATION 设置为 true,例如:

$ OMP_CANCELLATION=true ... ./omp_executable ...

关于c++ - 为什么 openMP 取消构造不取消工作共享区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22173656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com