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 variable OMP_CANCELLATION
to true
, e.g.:
$ OMP_CANCELLATION=true ... ./omp_executable ...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With