openmp将线程分配给某些代码块

时间:2018-09-23 08:18:04

标签: c++ multithreading openmp

在我的程序中,我需要按以下方式划分n个线程:

1)线程1正在做他的特定工作

2)n-1个其他线程都在做自己的工作

如果_threads == 1,则仅执行操作1)。

动作1)和2)是并行计算的

ScrollView

我想出以下解决方案

1)硬编码,以使id == 1的线程不会计算第二个块

2)就主线程的id = 0而言,我可以在第二个块中以i = 1开头使用void main(){ int number_of_threads; std::cin>>number_of_threads; omp_set_num_threads(number_of_threads); #pragma omp parallel if (number_of_threads>1) { #pragma omp master // no barrier at the end of master block single_calc(); #pragma omp ??(number_of_threads-1) //second block // this section of code is computed by n-1 processes } }

3)在#pragma omp for之外调用single_calc()(但我想控制计算此块的线程数量)

对此有任何优雅的解决方案吗?

0 个答案:

没有答案