计算化学公社

标题: 形象地比喻并行计算 [打印本页]

作者
Author:
stishovite    时间: 2024-5-24 09:36
标题: 形象地比喻并行计算
本帖最后由 stishovite 于 2024-5-25 07:54 编辑

这个帖子发到这个板块不一定合适,请社长定夺迁移。

大家好,我是计算新手,对很多概念不熟悉,经过一段时间的学习和自己的理解,有感而发,对计算的一些事情做了比喻,如下:

计算=吃饭
计算类型=吃不同的饭(米饭、面条、饺子等,下面以米饭为例)

几个物理核算=几个人吃
单个物理核的计算速度=每个人咀嚼的速度
CPU缓存=每个人一次能放入口中的食物量

每个核心占用的内存=每个碗的容量
计算总内存占用=碗的数量*碗的容量

一个离子步(优化一步)=吃一口米
一个电子步(SCF迭代一轮)=咀嚼一次
优化收敛条件=把饭吃得多干净
SCF收敛条件=把米嚼多碎

至于计算受力、预测新构型之类的,则相当于“吞咽”。

完成计算=吃完所有的饭

双路CPU计算=两个队伍的人吃饭
Intel MPI,OpenMPI,MPICH等软件,制定并实施吃饭的策略,例如,几个人吃,几个人吃一碗,吃饭顺序等。


对于CP2K而言,
popt=被限定为一个人同时吃一碗(NUM_OMP_THEADS=1)
psmp=可以定义几个人同时吃一碗 (取决于NUM_OMP_THEADS=几)


注意:
1、提高计算速度(吃饭速度),需要增加核数(吃饭人数)和主频(咀嚼速度);
2、每个物理核占用的内存(每个碗的容量)和计算类型(吃什么饭)有关;
3、增加核数(吃饭人数)以后,如果每个核(每个人)分配一个计算任务(只能吃一碗饭),内存占用(人数*碗容量)就比较大;
4、为了节省内存占用(碗数*碗的容量),可以让多个物理核(多个人)同时处理一个任务(同时吃一碗饭);
5、总计算速度并不总是和物理核心数呈正比,因为同时吃饭的人多了以后,由于之间相互协调的时间也增加了。

实际的并行计算还有许多复杂的细节,需要在实践中不断深入学习,请大家拍砖指正和补充完善,帮助新手尽快建立对并行计算的直观理解。








作者
Author:
LittlePupil    时间: 2024-5-24 23:21
本帖最后由 LittlePupil 于 2024-5-24 23:27 编辑

在其它因素相同的情况下,收敛条件决定了收敛步数,但你这里“嚼多碎”与“嚼几口(粒)”并无直接关系,比拟不类,不妨这样说:
一个离子步(优化一步)=吃一口米
一个电子步(SCF迭代一轮)=咀嚼一次
优化收敛条件=把饭吃得多干净
SCF收敛条件=把米嚼多碎
至于计算受力、预测新构型之类的,则相当于“吞咽”。

吃饭顺序并非由MPI所决定,而是由队列系统决定的。
另外,关于“几个人同时吃一碗”,你这里出现了两种相互矛盾的说法,第二种更贴切一些。
作者
Author:
stishovite    时间: 2024-5-25 07:55
LittlePupil 发表于 2024-5-24 23:21
在其它因素相同的情况下,收敛条件决定了收敛步数,但你这里“嚼多碎”与“嚼几口(粒)”并无直接关系,比 ...

谢谢您的补充指正,我已在帖子中修改。




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3