我在我的程序中使用openmp,但不是加速它放慢速度。我的猜测是它因为它每次在循环openmp中使用产生线程。有没有办法在程序中生成一次线程。
答案 0 :(得分: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
希望它有所帮助。