建站必读
网站建设知识
网站推广研究
网络营销与策划
网站案例评析
网络安全知识
ASP技术
PHP技术
JSP技术
.NET技术
当前位置:
首页
->
建站必读
->
.NET技术
使用.net Remtoing进行并行计算
使用.net Remtoing并行计算
摘要,本文分析了一个使用.net romoting进行并行计算PI值的程序,
并给出结果及性能分析。
在MSDN上发现一篇文章是介绍如何使用.net Remoting进行并行计算的,刚好本人对并行计算很有兴趣,于是仔细地分析了一下此程序的代码。原文及程序可以在此处获得。由于觉得原文只是作了一个大致的讲解,有很多细节只是掩藏在源代码中,所以在花了很多时间分析完源程序后,才对原文有了很深的理解,疏理出一些内容出来和大家分享。
一. 概述
.NET Remtoing用于在远程服务器和客户机之间互相调用对象,这些对象是存在于同一AppDomain中的。它使用Soap或二进制的方式传递消息(即要调用的对象),传送协议为HTTP或TCP。
二. Remoting如何实现并行计算?
.NET Remoting与并行计算好像是两个不同的概念,前者更类似于分布式计算和Web Service,而后者实际上是计算粒度更小的任务,但它将一个计算任务分配给多个节点计算,然后汇总成一个结果返回。
根据以上思想,实现上将分布的对象的粒度设计小一点即可实现并行计算。并行计算的一个关键因素是进程(或子任务)间通讯,而我们把.net remoting中的对象间通讯作为进程间通讯即可。
本例并行计算Pi的小数点,精确到N位。使用.net remoting可以如下实现。在每个节点上运行相同的程序,但每个节点计算不同位置的小数位,如NodeA计算小数点后1-9位,NodeB计算10-18位,NodeC计算19-27位,这样最终汇总的结果就可以有1-27位。由于是并行计算,比起单机计算,时间要快上很多倍,其加速比与每台节点的速度及整个通信网络的速度有关。计算模型如下图所示:
三. 并行算法
要进行并行计算,首先要设计好并行算法和通讯模式。由于我们只是在PC机群进行并行计算,所以采用了最简单的主从式并行模型,即由一个主进程负责任务的分发,结果的归约,将子任务平均分配到每个节点上计算。
但实际上本文中使用的并不是平均分配任务,而是更好的任务池工作方式。即每个节点计算完一个子任务后,会向主进程申请新的任务,一直到任务全部计算完为止,这样的好处是计算能力越强的节点计算的任务也越多。比起平均分配来说可以提高总体的计算和减少同步时间。
四. 程序结构
此程序主要由以下几个包组成,
l 4.1) ServerLoader
用于加载提供可远程调用的服务器对象,指定调用使用的网络协议和端口,以便于在局域网中被调用,然后侦听来自客户端的请求,在服务器上处理此请求并返回结果。
简单来说即每个节点都必须运行ServerLoader程序,以向外界声明可被调用的对象(即Plouffe_bellard.dll中的对象)。
以下代码为调用配置文件:
String ConfigFilePath = Path.GetDirectoryName(Application.ExecutablePath) + ServerLoader. exe.config";
RemotingConfiguration.Configure(ConfigFilePath);
配置文件为:ServerLoader.exe.config
<configuration>
<system.runtime.remoting>
<application name = "ServerLoader">
<service>
<wellknown
mode="SingleCall"
type="PB.Plouffe_Bellard,Plouffe_Bellard"
objectUri="Plouffe_Bellard"/>
</service>
<channels>
<channel ref="tcp server" port="9000"/>
</channels>
</application>
</system.runtime.remoting>
</configuration>
l 4.2) Plouffe_bellard
这就是.NET Remoting中的实际被调用的远程对象,它被置于每个节点上。它是继承自System.MarshalByRefObject,这样的派生对象从来都不会离开它的应用域,客户就可以通过代理对象调用远程对象的方法。
它是用来计算圆周率PI的小数点位数的程序,Plouffe_Bellard算法具有很好的并行性,它可以指定要计算的小数点的位置,如第二节所述。
其函数形式为:
public class Plouffe_Bellard : System.MarshalByRefObject
{
public String CalculatePiDigits(int n)
{ … }
}
l 4.3)DigitsOfPi
此子基础上为整个项目核心部分,可作为客户端程序运行。它主要实现主界面UI处理、节点配置,多线程创建与同步,计算任务分配与
本站关键词:
|东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计||东莞google推广|东莞关键词推广|东莞网站推广策划|东莞域名申请|东莞主机申请|东莞空间申请|做网站|设计网站|东莞虚拟主机|东莞asp空间|东莞主机托管|东莞画册设计|
域名注册
|
虚拟主机
|
网站建设
|
网站推广
| 广告设计
|
帮助中心
|
软件中心
|
关于腾达
东莞市腾达信息工程有限公司 本站网络实名: 东莞网站建设
地址:东莞市新城市中心区第一国际B座610 邮编:523007
电话:0769-22026071 22026072 传真:0769-22026076
24小时服务热线:13712032014
© 2002~2005 腾达网络 版权所有
粤ICP备 05018777号