我在我的程序中使用 openmp,但它并没有加快速度,而是减慢了速度。我的猜测是因为它每次在循环中使用 openmp 时都会产生线程。有没有办法在程序中产生一次线程。
问问题
1742 次
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 回答