Beowulf 中文HOWTO( 八 )



最後要说一些常发生的错误观念,我们经常说:一个程式被平行化,但是真实的情形是程式的同时部份才被平行化,从以上的说明,一个程式并没有平行化,平行化的效益是机器的特性 。;



4.5;撰写和移植平行软体;
一旦□决定需要平行计算,并且想要设计和架设一套Beowulf,根据上述的讨论来思考一些和□的应用程式有关的建议将是个很好的主意 。;

一般而言,有两件事□能够做的:;

直接架设第一类Beowulf,然後想办法让□的应用程式来适应这套系统,或者在Beowulf上直接跑一个现成的平行应用程式(必须注意上述所提的可携性和效能的议题) 。;
先思考一下□将要在□的Beowulf上跑的应用程式,然後估计何种类型的硬体和软体是□所需要的 。;
两种情形□都要考虑效能的议题,一般而言,有三件事□需要做:;

决定□的程式中的同时部份 。;
估计平行效能 。;
描述出程式中的同时部份 。;
让我们一一详述 。;


决定□的程式中的同时部份
这个步骤通常是要考虑将□的程式平行化,如何平行化将在第二个步骤,现在□要决定资料的关连性 。;

>从实际操作的角度来看,应用程式可能有二种形态的同时性:计算(数字的计算)和I/O(资料库) 。虽然大部分情形,计算和I/O同时性是相互正交的(orthogonal),但是有些程式是两者都需要,有些工具程式可以对现有的程式做同时性的分析,这些工具大部分是为Fortran程式语言设计的,使用Fortran语言有两种理由:很早以来,大部分的数字计算程式是用Fortran语言写的,另外Fortran是很容易分析的 。假如没有可利用的工具,这个步骤对现存的应用程式将是非常困难 。;


估计平行效能
没有工具程式的帮助,这个步骤将需要不断地尝试错误,或是根据旧有经验来猜测 。假如□心目中已经有特定的应用程式,想要决定这个应用程式是CPU限制(计算限制),还是硬碟限制(I/O限制),根据□的需求,□的Beowulf可能会有很大的差异 。举例来说,一个计算限制的问题可能需要一些很快的CPU,高速且低延迟的网路,但是一个I/O限制的问题可能需要较慢的CPU和高速乙太网路 。;

这个建议令大多数人觉得很讶异,一般的想法是处理器越快越好,这想法当然是正确的,但是□必须要有不受限制的预算经费,实际情形是要在有限的经费得到最高效能的系统,对一个I/O限制的问题,已有现成的规则(称作Eadline-Dedkov定律)可供利用 。;

对两套有相同累积CPU效能指数的平行电脑而言,一个拥有较慢处理器(一个较慢的处理器间的传输网路)对I/O主导的应用程式将会有较佳的效能 。;

要证明这项规则将会超出本文件的□围,□若觉得有趣,可以下载这篇论文;I/O主导应用程式在平行电脑上的效能考量(Performance;Considerations;for;I/O-Dominant;Applications;on;Parallel;Computers);(Postscript;格式;109K;);(ftp://www.plogic.com/pub/papers/exs-pap6.ps)

一旦□已经决定程式中的同时性是何种形态,□将需要估计一旦平行处理的话,效能将会如何 。参见;Software;有对软体工具的描述 。;

若没有这些工具,□可以透过这个步骤,自行考量,假如每次计算是以分钟计,资料传输则以秒计,那它将是很好的平行对象,但是记住,假如□将16分钟的计算时间拆成32份,而每份的资料传递需要数秒钟,那麽事情将变得严重 。;


描述出程式中的同时部份
有几种方法找出程式中的同时部份:;

明确地平行执行;
隐含地平行执行;
这二者主要的差别在於明确地平行化取决於使用者,隐含地平行化取决於编译器 。;

推荐阅读