gpt4 book ai didi

c++ - OpenMP 线程数问题

转载 作者:搜寻专家 更新时间:2023-10-30 23:49:28 27 4
gpt4 key购买 nike

所以我正在为我的 OS 类做一些梯形规则的并行编程,这是一个家庭作业问题,但我不是在寻找源代码。

经过一番研究后,我决定使用每个线程来计算一个子区间。使用:

 g = (b-a)/n;
integral += (func(a) + func(b))/2.0;

# pragma omp parallel for schedule(static) default(none) \
shared(a, h, n) private(i, x) \
reduction(+: integral) num_threads(thread_count)
for (i = 1; i <= n-1; i++) {
x = a + i*g;
integral += func(x);
}

在我的积分函数中,func(x) 是我从文件中读入的函数。

所以我给我的教授发邮件问他想如何选择线程数。 (因为它们需要被 N 整除(对于梯形规则)

但他说我不需要定义它们,它会根据我机器上的核心数来定义它们......所以不用说我有点困惑。

最佳答案

您的教授是对的:默认情况下,OpenMP 会选择最佳线程数,通常是核心数。

您不必担心线程数会被 N 整除:OpenMP 会自动在线程之间分配迭代,如果它们不能被整除,一个线程最终会执行多一点或减少工作量。

关于c++ - OpenMP 线程数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com