免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2358 | 回复: 5

关于并行计算的讨论--最近大家火气大,转移下话题,欢迎讨论 [复制链接]

论坛徽章:
0
发表于 2009-12-19 00:03 |显示全部楼层
近来对这个比较感兴趣,做了个初步的尝试。
注:本人纯属兴趣,没有研究这方面的发展。
初步的想法是将若干个计算过程分解成相互关联影响至最低的水平的一些计算式,并存储于各个节点中,然后按照节点之间的上级,下级,串行,并行关系,同样做成节点,然后每个节点创建一个线程去做一个流程:
1:逐个判断上级或者相关节点的计算是否完成;完成转到2,否则等待,并记录本节点未完成,或处于等待状态
2:执行本节点的计算式;判断是否继续,如继续则转到3:否则中断,并记录本节点未完成。
3:计算本节点的传播影响;逐个判断与本节点的结果相关的其他节点是否可以执行,可以则选中相关节点,转向1,否则转向4
4:逐个判断是否可以驱动下级节点,可以则选中该节点,转向则1,否则退出。
这样就形成一个递归或者循环的过程。
关系图如下:

节点流程1--计算a的设置如下:
运行时将计算1-2+3/4*5-(6*pow(2.0,2.0)),将自己的计算结果设置成-21.250000

节点流程2--计算f(x)的设置如下:
运行时将计算 -a / 100 + a*100, 将自己的计算结果设置成-2125.212500

节点流程3--计算a + f(x)设置如下
运行时计算 流程1--计算a * 流程2--计算f(x)的值,并将自己的计算结果设置成45160.765625

当计算节点节点流程3--计算a + f(x)时,根据汇聚条件,将等待所有上级节点计算完毕,然后才进行计算,节点流程2--计算f(x) 由于需要 节点流程1--计算a 的值,所以需要等待 节点流程1--计算a 的计算完成。最终完成整个计算过程。
不知俺这草莽做法是否符合并行计算的普遍做法,欢迎讨论

[ 本帖最后由 nicolas.shen 于 2009-12-19 10:57 编辑 ]

论坛徽章:
0
发表于 2009-12-19 00:08 |显示全部楼层
本人比较菜,还没用C或者C++实现,目前只是用C#实现了,计算用解释来执行,效率低得很,想法是流程可以编译成C或者C++或者汇编代码,效率会高很多。

论坛徽章:
0
发表于 2009-12-19 10:33 |显示全部楼层
我只知道平行世界~ LZ,我们来讨论一下量子力学、相对论啥的吧~

论坛徽章:
0
发表于 2009-12-19 10:58 |显示全部楼层
不好意思,打错字了,这个。。。在这儿讨论物理不恰当吧

论坛徽章:
0
发表于 2009-12-19 16:14 |显示全部楼层
貌似视频解码框架很多这样的设计

每次计算依赖关系太低效了,你可以先把计算顺序串行化啊,之后每轮计算时,顺序不用变

论坛徽章:
0
发表于 2009-12-19 16:41 |显示全部楼层
我以前做过类似的,我的一个师兄的博士论文也是这方面的。
不过我没看懂他的文章,我的想法就是一棵树的并行版后序遍历。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP