OpenFOAM并行计算中,物理核心数与线程的关系



  • 各位老师,我想问个问题,目前,我有一台服务器计算资源,计算规模为256核心,512线程。在OpenFOAM的并行计算中,最多是可以256核心数并行。从性能监视器中可以看出,cpu并没有全部参与计算,大约有一半的cpu在进行计算,所以,这是不是说明,256核心并行时,并没有启用全部的线程,只使用了256个线程?我如何让512个线程同时工作呢?谢谢各位老师


  • 自由表面模型副教授 OpenFOAM教授

    @Mr-Shan 数值计算不要超过物理核心数,虽然你看到有一半线程空闲,但是没啥球用的,都用了效率反而下降。



  • @队长别开枪 为什么超线程没有用呢?这和我的认知有点不一样啊:xinlei:


  • OpenFOAM教授

    高性能计算一般都会在BIOS中关闭超线程,以物理核心数为准。


  • 自由表面模型副教授 OpenFOAM教授

    @Mr-Shan 怎么说呢,貌似是说超线程技术可以使单个物理核心执行多个控制流程,会使操作系统认为核心数目是实际物理核心数的两倍,对于非计算密集型程序性能提升很明显,不过不幸的是一个物理核心内部处理浮点运算的组件只有一套,可以被两个线程共享,所以其中一个在执行浮点运算的时候另外一个必须等待,就好比八车道高速只设置了四个收费站,每两个车道共享一个,肯定堵啊,还不如关掉四个,还能省下线程调度,I/O的额外开销。这是我个人的理解。不过也不要在BIOS里关闭超线程,可以跑并行的时候额外看个小电影,不然真的卡死。
    :chigua:
    参考资料:https://blog.csdn.net/xlinsist/article/details/54562571http://bbs.keinsci.com/thread-2105-1-1.html


Log in to reply