声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5025|回复: 25

[Virtual.Lab] 【原创】使用虚拟机实现sysnoise多进程的并行计算

[复制链接]
发表于 2008-5-4 20:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
对于大型模型,sysnoise多进程的并行计算是个大问题。利用5.1假期就此做了些有益的测试,终于实现了同一台机器上、多个sysnoise进程的同时运行并与多CPU节点的一对一绑定。
在此,本人将解决方案在振动论坛上首发,并欢迎来email多多交流。若要转载,请注明:转载于振动论坛forum.vibunion.com
SNAG-0001.jpg

[ 本帖最后由 minetree 于 2008-5-4 21:32 编辑 ]

评分

2

查看全部评分

回复
分享到:

使用道具 举报

 楼主| 发表于 2008-5-4 21:00 | 显示全部楼层
SNAG-0002.jpg
 楼主| 发表于 2008-5-4 21:01 | 显示全部楼层
SNAG-0003.jpg SNAG-0004.jpg

[ 本帖最后由 minetree 于 2008-5-4 21:30 编辑 ]
 楼主| 发表于 2008-5-4 21:03 | 显示全部楼层
SNAG-0005.jpg
 楼主| 发表于 2008-5-4 21:04 | 显示全部楼层
SNAG-0006.jpg
 楼主| 发表于 2008-5-4 21:05 | 显示全部楼层
SNAG-0007.jpg
 楼主| 发表于 2008-5-4 21:11 | 显示全部楼层
由于本人手头没有合适的sysnoise56,也没能安装上,所以sysnoise56的相关测试尚没有做,十分遗憾。如果能同时使用sysnoise56的Pade迭代求解器,速度将实现最大化。

相关内容欢迎来email交流,本人可提供文章的相关pdf版本。(这里附件不能发pdf,我不知道怎么搞)
发表于 2008-5-5 20:01 | 显示全部楼层
非常感谢 minetree大侠的研究啊,简直就是雪中送炭,强烈建议楼主将本帖子作为精华帖,先下来研究一下,试试,不懂的再向楼主请教啊!
发表于 2008-5-5 20:15 | 显示全部楼层

回复 8楼 的帖子

呵呵,你先试试,如果可以提高计算速度,那么再加为精华贴也不迟。如果能给出你做的测试结果(两个窗口运行时间与一个窗口运行时间比),也加分哦。

[ 本帖最后由 w89986581 于 2008-5-5 20:16 编辑 ]
 楼主| 发表于 2008-5-5 21:03 | 显示全部楼层
呵呵,简单测试我已经做过,是对比VPC和Host的CAE速度。即:分别在服务器上用VPC和Host对同样的模型进行sysnoise的CAE,相关比对程度、速度和耗时如下。
测试所用模型:两者相同。
对比结果:
(1)两者计算结果一致;
(2)耗时:
VPC: 4mins 49seconds(VPC锁定CPU)
Host: 6mins 26seconds(sysnoise进程未锁定CPU结果)5mins 17seconds(sysnoise进程锁定CPU结果)


由此可见:
VPC上的CAE结果是可靠的;
在Host上计算,锁定CPU的CAE速度会加快,但仍赶不上在VPC上的速度。
所以,在实际操作中,可优先使用VPC锁定CPU进行CAE,以节省计算时间。

上述解决方案中,文一是针对单核平台进行的实践,实质上不会提高计算一个指定模型的速度(因为CPU速度就这么多);但,对于多核平台,使用附文的方法,则开始能成倍节省计算时间。
根据简单测试,我推断,只要CPU足够,要计算一个模型,可以这么做:将需要计算的频点等分成若干份(记为n),每份对应锁定一个CPU计算,这样,原来需要T时间完成的CAE任务,原理上可以在T/n时间内完成。当然,前提是平台的CPU节点数>=n。

进一步的深入测试(如:运行稳定性、VPC内存设置对CAE速度的影响等)和实施技巧有待大家在使用中不断交流。

[ 本帖最后由 minetree 于 2008-5-5 21:19 编辑 ]

评分

1

查看全部评分

发表于 2008-5-6 10:03 | 显示全部楼层
对楼主的这种方法,从昨天开始就一直在摸索,现在有几个疑问:
1  对于单核平台,楼主的意思是不是在vpc中计算的时候要比在host中计算的时候要快?
2  对于多核平台,楼主的意思好象是在系统中设置多个帐号,并在不同帐号下安装vpc,用远程桌面连接到多核平台,但是这样是不是每个进程计算的还是各自的内容啊!
    楼主的这种计算方法是否是人为的将计算按照参与计算的cpu个数分成n份,让每个vpc分别计算各自的一部分,最后再把结果合成起来?
    如果是这样,不知道最后的结果合成好做不好做?
上面只是我个人的感觉啊,跟楼主学习一下!呵呵

[ 本帖最后由 eight 于 2008-5-6 10:20 编辑 ]
 楼主| 发表于 2008-5-6 13:51 | 显示全部楼层

回复 11楼 的帖子

>>1  对于单核平台,楼主的意思是不是在vpc中计算的时候要比在host中计算的时候要快?

我的测试结果是这样

>>但是这样是不是每个进程计算的还是各自的内容啊!

是的,每个进程相互之间是独立的。可以同时计算不同的模型,也可以同时计算相同模型的不同部分,后者需要将结果最后组合起来。这个工作很简单,只需要将结果文件txt结果内容,按照最初的分部次序组合即可。当然,我一直做的是将频率分部,最后再组合结果。结果可靠,这个方法我一直在用,只不过是在不同计算机上同时算而已。现在可以在一个平台上实现。

>>楼主的这种计算方法是否是人为的将计算按照参与计算的cpu个数分成n份,让每个vpc分别计算各自的一部分,最后再把结果合成起来?

呵呵,正是的。相当于以前是一台电脑算,现在是n台机器同时多线程算一个任务。和FlashGet的工作模式一样。只是最后要人工组合结果。建议将分配每个CPU的CMD中,把存储的结果文件txt编号,以方便组合。

[ 本帖最后由 eight 于 2008-5-6 15:24 编辑 ]
发表于 2008-5-6 19:24 | 显示全部楼层
我还想了解一下关于最后结果文件的组合的情况,楼主如果有这方面的资料可以发给我点吗?谢谢!   mzh910@126.com
 楼主| 发表于 2008-5-6 20:21 | 显示全部楼层
比如,设定
CPU1计算出频段: Frequnecy 100 To 1000 Linstep 50,
输出结果:
Export Results Format Free
Frequnecy 100 To 1000 Linstep 50 File .\part1.txt
Return

CPU2计算出频段: Frequnecy 1050 To 2000 Linstep 50,
输出结果:
Export Results Format Free
Frequnecy 1050 To 2000 Linstep 50 File .\part2.txt
Return

这样,两个频段就可以同时计算出来了,节省一半的时间。然后在处理数据时,将part2.txt的结果全部copy到part1.txt后面就可以了,这样组合出来的数据就是Frequnecy 100 To 2000 Linstep 50 的所有结果,接下来在处理就是了。

要注意sysnoise结果文件(results)和potensial 数据排布格式不一样,results是频点-》场点格式,potensial 是场点-》频点格式

这些实际上是后期数据处理的事情,以上是我的处理方法,供参考。

[ 本帖最后由 minetree 于 2008-5-6 20:28 编辑 ]

评分

1

查看全部评分

发表于 2008-5-7 09:54 | 显示全部楼层
似乎明白了,努力试验中--------
很期待这样的计算方法,如果是这样应该可以大幅度提高计算速度
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-6 10:01 , Processed in 0.085838 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表