Beowulf 中文HOWTO( 七 )



SMP机器效能;;;;;;电脑群效能;;;;;比例增加程度;
---------------;;;;;----------------;----------------
讯息;;好;;;;;;;佳;佳

绪;;;佳;;;;;;;不良*;;;;不良*

*;要求昂贵的驽马技术 。


应用软体架构
为了在多CPU下平行地跑应用程式,在同时部份必须被分开来,一个标准的单CPU应用软体不会比它在多处理器下跑的快,有些工具和编译器可以做这种工作,但是将程式平行化可不是“随插即用“ 。这完全和程式有关,有些程式很容易平行化,有些是极度困难,有些情形受限於algorithm的相关性而根本不可能做到平行 。;

在讨论软体议题之前,先要介绍合适性的观念 。;


4.4;合适性(Suitability);
关平行计算的大多数问题都有相同的答案:;

全和应用程式本身有关 。;

在我们进入这个议题之前,有一个非常重要的不同点需要□清□同时(CONCURRENT)和平行(PARALLEL)之间的差异性,为了方便讨论起见,我们先定义这二个观念:;

程式内同时的部份是指可以单独个别计算的部份 。;

程式内平行的部份是指那些可以在同一时间内分别由不同处理器执行的同时部份 。;

二者相异的地方是非常重要,因为同时是程式本身的特性,而有效的平行则是机器的特性,理想状况下,较快的效能肇因於平行执行,平行效能的限制因素在於计算节点之间的传递速度和延迟(延迟也会出现在绪SMP应用软体,主要来自於快闪(cache)的一致性) 。大多数通用的平行测试套件都有很高的平行性,传递和延迟都不是瓶颈,这类问题可以称作“显而易见的平行“(obviously;parallel),其他的应用软体就没那麽简单,平行地执行程式中的同时部份可能会造成程式跑得较慢,抵消掉其他同时部份所得到的效能 。简单说,传递所花费的时间必须从俭省的计算时间补偿,否则平行执行同时部份会很不经济 。;

程式设计者的工作是要决定程式哪些同时的部份应该平行化,哪些则不要 。这将会决定应用程式的效能,下面的图对程式设计者做了些总结 。;



占应用程
式的百分比

|;*
|;*
|;*
|;*
|;;*
|;;*
|;;*
|;;*
|;;;;*
|;;;;;*
|;;;;;;*
|****
|;;;;****
|********************
-----------------------------------
传递时间;/;计算时间

在一个理想的平行电脑,传递和计算二者相当,任何同时都可以平行化,很不幸地,真实的平行电脑(包括共享记忆体机器)都像上图所示 。当设计Beowulf时,使用者必须牢记这图,因为对一特定平行电脑,平行效能决定於传递时间和计算时间之比,应用程式可能可以在各种平行电脑上执行,但是不能保证一定会有较佳的效能 。;

一般来说,没有既可携性又有效能的平行程式 。;

上图还有其他的延伸议题,当效能取决於传递和计算比,改变比值中的某一项不表示一定可以提高效能 。改变处理器的速度,但不改变传递的速度,程式可以有没直觉性的效果 。举例来说,CPU速度提升二倍或三倍,但保持传递速度,可能使□的程式有较好的平行效果,比循序执行更有效,that;is,;it;may;now;be;faster;to;run;the;previousloy;PARALLEL;parts;as;SEQUENTIAL 。更进一步,平行地执行没有效率的部份,可以使□的程式无法达到最快的速度,因此,藉由增加更快的处理器,□可以让程式慢下来(□正让新的CPU不用它最快的速度执行程式) 。;

升级到更快的CPU可能反而降慢□的程式速度 。;

因此,必须知道□是否可以用平行硬体环境,□必须对□的程式在一特定电脑上的可适性有相当的认识,□必须知道相当多的议题,包括CPU速度、编译器、讯息传递的API、网路等等 。请注意,只认识应用程式是不够的,□必须指出程式中计算量最重的部份,但是□不知道这个部份的传递花费,对特定系统,它的传递所花的时间可能无法让程式无法有效地平行化 。;

推荐阅读