1

我在我的程序中使用 openmp,但它并没有加快速度,而是减慢了速度。我的猜测是因为它每次在循环中使用 openmp 时都会产生线程。有没有办法在程序中产生一次线程。

4

1 回答 1

1

根据其他评论,您绝对应该提供代码。

通常,openMP 应用程序设计为运行的线程数是处理器数量的 1-4 倍。

对于任何有兴趣控制产生的线程数量的人,来自:https ://computing.llnl.gov/tutorials/openMP/

有多少线程?

并行区域中的线程数由以下因素决定,按优先顺序排列:

  • IF 条款的评估
  • NUM_THREADS 子句的设置
  • omp_set_num_threads() 库函数的使用
  • OMP_NUM_THREADS 环境变量的设置
  • 实现默认值 - 通常是节点上的 CPU 数量,尽管它可能是动态的(参见下一个项目符号)。

线程编号从 0(主线程)到 N-1

如何设置线程数环境变量的示例:

export OMP_NUM_THREADS=8

希望能帮助到你。

于 2012-10-31T06:53:45.737 回答