目录

并行计算的效率与核心数

计算机的多核心CPU,例如64核,就相当于有64个人。主频高,表示单人的办事能力高,但可能不同品牌的CPU,评价机制不一样。

软件之间互相影响吗?

比如提交了3个A软件的作业,每个作业使用16核;然后B软件提交3个作业,每个作业使用16核。相当于64个人要干16*3+16*3=96件事,CPU的核心只能在不同事情之间来回切换,效率当然受影响!

可以提交无数个作业吗?

如果计算机只有64核,但是提交的作业,所需的核数超过了64,那么CPU就只能在不同的作业间暂停、切换,从而导致效率低下!

一般计算,都最好留一个空闲核心,用于系统本身正常工作,例如打开桌面,打开文件夹,阅读文件,打开网页等等。所有核心都被占据,必然导致电脑非常卡!请有此常识!

一个作业使用核数越多越快吗?

打扫一个教室,可能1个人半小时打扫完毕,4个人可能几分钟完成。但是要求一千个人来打扫这件教室,会更快吗?你需要先开个大会,交代清楚每个人何时做何种事情,然后是嘈杂的互相交流信息、等待其他人完工轮到自己……整个过程做完,可能半天就过去了。笼统的比喻来说,沟通的这个过程,就是节点间通信,大部分时间消耗在这里了。通信更高效,能一定程度上提高效率,尤其是调用核数较多时。

总的来说,效率随核心数增加,一般呈现先增高,后降低的趋势。小的作业,效率最高点的核心数较小,大型作业效率最高点的核心数较大。故意把作业搞大,以增大核数,这是不可能提高效率的。

什么是大作业、什么是小作业

对DFT而言,几十个原子就是比较大的作业,而且精度越高,作业越大。对力场而言,一般几千原子属于较小体系。对ReaxFF而言,一般每1000原子用1个核心就可以了,2个核心效率略有提升。

ReaxFF这种分子动力学计算,对CPU需求并不太大,但是体系越大,使用核数越多,内存的需求越大,而DFT计算一般是CPU和内存都会高占据。

硬盘读写速度对计算效率的影响

一般对于工作站、台式机、笔记本,这种影响可以忽略。对于集群,文件夹所在的硬盘分为两种类型:

  1. “本地”,也就是位于各个节点,和CPU挨着
  2. “NFS共享区域”,一般每个用户的主文件夹,例如一般/home/username文件夹就属于这个区域,你可以认为这个区域并不在本地,所有节点都需要通过网络去访问它

软件在计算的过程中,会有大量的临时文件的读、写过程,如果这个过程,是发生在第二种区域,那么很显然就会大大拖慢计算速度。因此一般临时文件非常不建议存到这种区域里面。一般/tmp文件夹属于第一种,但是就需要集群管理员,设置一些自动定期清理/tmp文件的功能,避免/tmp堆满文件。

另外,硬盘本身的转速也会影响计算效率,因此临时文件读写区域,一般建议放在具有高速读写能力的那块硬盘上。

软件安装位置会影响计算效率吗?

一般不影响。因为计算开始,程序被读入本地内存,在CPU中执行,跟硬盘位置就没有太大关系了。

网络对并行计算效率的影响