i was expecting that variable "i" will reach a maximum value of 11 and then the "for" worksharing region will be cancelled ,code is:
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
but the variable i was holding max value of 9998 which i suppose means that worksharing region was not cancelled.
Cancellation is disabled by default, mostly for performance reasons. You must specifically enable cancellation support by setting the cancel-var ICV to
true
. The only way to do so is to set the environment variableOMP_CANCELLATION
totrue
, e.g.: