24小时热门版块排行榜    

查看: 768  |  回复: 1
本帖产生 1 个 1ST强帖 ,点击这里进行查看

love5264

木虫 (正式写手)

[求助] Parallel options设置求助

siesta-3.1 Parallel options

cpu:i7 2600 4核
看了手册上关于BlockSize 和 ProcessorY的说明,请问这两项应该怎么设置啊?

我用的默认设置,计算时输出文件显示 这两项分别是24 和 2
如果自己指定应该设为什么?

此外 编译设定 single precision 和 double precision 哪个计算更快?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

谋定而动
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
回帖置顶 ( 共有1个 )

zhangguangping

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
liliangfang: 金币+2, 谢谢指教 2012-05-04 20:55:34
fzx2008: 1ST强帖+1 2012-05-04 20:59:25
fzx2008: 编辑内容 2012-05-04 20:59
love5264: 金币+20, ★★★★★最佳答案, 学习了,非常感谢! 2012-05-05 03:44:48
我所了解的siesta的并行有三个地方:
1.是基函数的并行
2.是grid的并行
3.是k点的并行

首先说说第3中,这种并行效率非常高,但是前提是k点的数目比起所用的核数要多的多,这种情况一般出现在对于金属体系的计算上:体系比较小,因此基函数比较少,而要想得到比较好的结果,需要的k点数目非常多,所以这个时候k点一般来说是比核数多的多(起码比起基函数相对于核数来说要多的多),这种情况下,建议用Diag.ParallelOverK  T.
但是采用了这个选项不是说所有的地方都是采用k点并行了,如果涉及到计算“能带”,“体系的波函数”这些计算的时候,程序还是采用的是对于轨道的并行。如果你的体系设置了NonCollinearSpin T,那么也不能使用这个选项。

从上面来看,用户碰到的大多数的计算的并行应该是在(1)基函数的并行框架下。

基函数的并行下,需要确定每一个核上面分得的基函数的数目,这个量是由BlockSize控制的。程序会将计算中用到的基函数的数目按照BlockSize的数目依次打包,并且轮回地发送到各个核上去计算。如果这个数目太小,那么这个分发将会很频繁,大家之后,在并行计算的时候,如果每次分给核的任务太少,那么这个分发任务的时间就显得很大,这个就降低了计算效率。但是如果每次给核分配的任务太多,对于依赖于基函数的计算来说,计算量的大小并不是严格与基函数的数目成正比。所以会出现虽然基函数的数目每一个核上一样多,但是计算量却相差很大,这也出现了负载不均衡,造成并行效率不高。因此这个数目需要合适的选择。如果输入文件中没有设置该选项的话,程序对于这个参数会做一个选择:
如果基函数数目>24*np,那么BlockSize为24,
如果基函数数目<=24*np,那么BlockSize=(基函数数目-1)/np+1
其中np表示核的数目。

同时,有些数据是grid类型的,也就是说是空间格点的文件。对于这些数据的计算,并行是针对格点并行的,因为每一个格点上面的数据会和每一个基函数相关。程序会把整个体系的大小按照LatticeVectors的形状和大小以及Meshcutoff的值来沿着三个晶包矢量对体系打网格。而格点对于各个核的分配是在Y和Z方向的划分。所以将核的数目也做成一个2D的网格,要求ProcessorY能够被核数整除因为ProcessorZ的值由np/ProcessorY得到。具体的再怎么将grid格点分配到各个节点,这个我还不懂。你可以看看程序。对于ProcessorY的寻找,程序也会自动给出一个值,但是只对np是2或3或5的倍数的np起作用,否则ProcessorY=1。

对于这两个参数,我都是让程序自动给出。这个参数不同的任务应该是不同的。如果想找最优值的话,估计任务都算出来好几遍了。

上面仅仅是个人的理解,如有理解不对的地方,请专家指教.

[ Last edited by fzx2008 on 2012-5-4 at 20:59 ]
弘德明志博学笃行
2楼2012-05-04 20:50:25
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 love5264 的主题更新
信息提示
请填处理意见