drewtu2
drewtu2

Reputation: 86

Spanning OpenMP parallel regions across multiple functions/objects

Is there a way to span an OpenMP parallel region across multiple functions?

void run()
{
    omp_set_num_threads(2);
    #pragma omp parallel
    {
        foo();
        #pragma omp for
        for(int i = 0; i < 10; ++i)
        {
           //Do stuff here
        }

    }
}

void foo()
{
    #pragma omp for
    for(int j = 0; j < 10; ++j)
    {
        // Have this code be run as a worksharing loop by the OMP threads
        // spawned in run
    }
}

In this example, I want the threads started in the omp parallel region in the run function to enter foo, and run it as a working sharing loop, the same way they would run the for loop in run. Is this what happens by default or does each thread run the loop independently? How do you test for each?

In my example, function foo and run are member functions is separate classes.

Thanks!

Upvotes: 0

Views: 708

Answers (1)

Jim Cownie
Jim Cownie

Reputation: 2859

What you describe as your desire is how OpenMP works.

Upvotes: 2

Related Questions