c++ - Enable/disable OpenMP locally at runtime -
is possible enable or disable openmp parallelisation @ runtime? have code should run in parallel under circumstances , not in parallel under different circumstances. @ same time, there other computations in other threads use openmp , should run in parallel. there way tell openmp not parallelise in current thread? know of omp_set_num_threads
, assume globally sets number of threads openmp uses.
an alternative can use add if
condition #pragma omp
constructs. these skip invocation openmp runtime calls derived pragmas whenever condition false.
consider following program uses conditionals based on variables t
, f
(respectively true , false):
#include <omp.h> #include <stdio.h> int main (void) { int t = (0 == 0); // true value int f = (1 == 0); // false value #pragma omp parallel if (f) { printf ("false: thread %d\n", omp_get_thread_num()); } #pragma omp parallel if (t) { printf ("true : thread %d\n", omp_get_thread_num()); } return 0; }
its output is:
$ omp_num_threads=4 ./test false: thread 0 true : thread 0 true : thread 1 true : thread 3 true : thread 2
Comments
Post a Comment