首页 新闻 会员 周边

c#分布式计算相关

0
悬赏园豆:10 [已解决问题] 解决于 2017-04-24 12:44

假设有
List<decimal> list = new List<decimal>(int.MaxValue);
需要求list所有元素的累加和(假设和不超出decimal的范围)
想法是将list分成N份,由N个服务器各自计算一部分,最终合并结果.
.net下是否有现成的框架可用?

Ace001的主页 Ace001 | 菜鸟二级 | 园豆:216
提问于:2017-04-21 10:46
< >
分享
最佳答案
0

单机跑这个还好吧,如果对时间要求不高的话应该也就小时级完成。

你非要分布式算的话针对你这个极为特殊的场景其实用不上任何框架,你只需要多搞几台机器确保每台机器拿到不同范围的数据就完了(前面搞一台做任务分割),临时数据随便找个缓存中扔一下。

收获园豆:10
Daniel Cai | 专家六级 |园豆:10424 | 2017-04-21 11:51

我看分布式计算的定义:

所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。

 

跟我这个例子应该很相似啊,还是我理解错了.

Ace001 | 园豆:216 (菜鸟二级) | 2017-04-21 12:38

@Coder007: 没错啊,我给你的方案也是把数据拆到不同机器上来算的,比如int段你拆成2^10个子段,下面的进程自己去拿任务做,计算完了把数据推到缓存中或直接对缓存中已有结果做累加。最后所有任务计算完了结果就出来了。

Daniel Cai | 园豆:10424 (专家六级) | 2017-04-21 15:52

@Daniel Cai:看了下Hadoop的介绍貌似可以干这事儿(没深入了解不知是否可行),.net下就木有类似的框架吗,自己写的话稳定性也是问题. 

Ace001 | 园豆:216 (菜鸟二级) | 2017-04-21 16:35
其他回答(3)
0

list .AsParallel().ForAll(a=> {//要操作的代码 });

吴瑞祥 | 园豆:29449 (高人七级) | 2017-04-21 11:06

这是要累死一台机器啊,这么大的list得计算到啥时候,请看标题

支持(0) 反对(0) Ace001 | 园豆:216 (菜鸟二级) | 2017-04-21 11:17
0

这一天尚未来临。等到有一天这事情高中学历水平就能听懂,并能做的话,那么人工智能已经能做了,C#已经灭亡了。

爱编程的大叔 | 园豆:30839 (高人七级) | 2017-04-21 12:53

小学僧表示不敢说话.默默问下大侠,针对该问题如果对计算时间有要求的话是否有好的解决方案.

支持(0) 反对(0) Ace001 | 园豆:216 (菜鸟二级) | 2017-04-21 13:05

@Coder007: 你问的方式很学生,或者说很通用,基本上可以定义为百万、千万投入级别的问题,

也许你适合到微软研究院啥的去工作,或者自己研究一下人工智能啥的。

普通的几百元,几千元的解决方案,最简单的就是在数据库里面sum,这就很快了。

在内存里面的话,你内存够,单机应该也没啥太大问题。

我并不是在讽刺你或者啥,只是感觉这种问题问大学老师适合,社区问不是很适合...

分布式不是普通人能搞的...你能搞的话,十万月薪没有问题。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2017-04-21 13:26
0

需要框架干嘛,自己实现就好了

狼爷 | 园豆:1204 (小虾三级) | 2017-04-22 11:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册