【问题标题】:openMP reduction and thread number controlopenMP 减少和线程数控制
【发布时间】:2015-05-30 04:26:45
【问题描述】:

我使用 OpenMP 作为:

#pragma omp parallel for reduction(+:average_stroke_width)
for(int i = 0; i < GB_name.size(); ++i) {...}

我知道我可以使用:

#pragma omp parallel for num_threads(thread)
for(int index = 0; index < GB_name.size(); ++index){...}

使用reduction时如何控制线程数?

【问题讨论】:

  • 你的意思是要设置多少线程参与reduction过程?

标签: openmp


【解决方案1】:

使用reduction时如何控制线程数?

这两个子句可以一起使用:

#pragma omp parallel for reduction(+:average_stroke_width) num_threads(thread)
for(int i = 0; i < GB_name.size(); ++i) {...}

请注意,reduction 涉及所有线程,因此您不能有 8 个线程的并行循环,然后仅使用 4 个线程执行归约。归约结合了所有线程中的局部值,因此它们都需要参与。

【讨论】:

    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 2017-01-16
    • 2013-12-23
    • 1970-01-01
    • 2014-09-12
    • 2014-03-14
    • 2017-05-07
    • 1970-01-01
    相关资源
    最近更新 更多