【发布时间】:2020-12-14 16:44:00
【问题描述】:
我想用多线程执行一个函数,而不使用主线程。所以这就是我想要的:
# pragma omp parallel num_threads(9)
{
// do something
# pragma omp for schedule(static,1)
for(int i = 0; i < 10; i++)
func(i); // random stuff
}
所以我希望 func() 仅由 8 个线程执行,没有主线程。这有可能吗?
【问题讨论】:
-
您确定要使用 1 的块大小进行调度吗?在大多数情况下,就缓存局部性而言,这是次优的。如果您没有充分的理由这样做,则应使用
static而不指定块大小,以便使用最大块大小。对于非静态调度,可能希望块大小为 1,因为通常期望不同的循环迭代包含不同数量的工作。 -
@dreamcrash 对我们解决方案之间的差异有什么想法吗? ;)
标签: c multithreading parallel-processing openmp