Beowulf 中文HOWTO(10) 这个建议令大多数人觉得很讶异,一般的想法是处理器越快越好,这想法当然是正确的,但是□必须要有不受限制的预算经费,实际情形是要在有限的经费得到最高效能的系统,对一个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份,而每份的资料传递需要数秒钟,那麽事情将变得严重。 描述出程式中的同时部份 有几种方法找出程式中的同时部份: 明确地平行执行 隐含地平行执行 这二者主要的差别在於明确地平行化取决於使用者,隐含地平行化取决於编译器。 明确的方法 有一些基本的方法是要靠使用者专为平行电脑来修改原始码,使用者必须使用 PVM 或 MPI在程式内增加资讯, 或是使用POSIX绪(无论如何要牢记心中,绪无法在SMP主机板之间移动)。 明确的方法在实行和除错上最为困难,使用者通常在标准Fortran 77或 C/C++原始码中加入函式。MPI程式库加入一些函式,使得一些标准平行方法容易实行(例如分散和收集函式),另外还可以使用已经被平行化的标准程式库。无论如何要将可携性和效能之间的平衡牢记心中。 从历史上的理由,大多数数值计算的程式是用Fortran语言所写的,因此在平行计算中,Fortran是受最大的支援(工具、程式库等)。现在大多数的程式设计者都是用C语言,或是认为C语言可以执行地更快,而用C语言重新改写现存的Fortran应用程式。由於C语言最接近通用的机器语言,C语言较快可能是正确的,但是它也有一些重要的缺陷。C语言使用指标(pointer)会让资料相关性的决定极度困难,自动分析指标也是极度困难,假如□有现成的Fortran程式,并且未来想要变成平行程式□千万不要把它转成C语言。 隐含的方法 隐含方法是使用者放弃一些或全部放弃自行平行,改用编译器的一种方法,例如 FORTRAN 90, 高效能Frotran (High Performance Fortran,HPF), 大量协同平行(Bulk Synchronous Parallel,BSP)还有许多正在发展当中。 隐含方法仍要求使用者对於程式同时的特性提供一些资讯,但是编译器必须对如何平行地执行同时性做出许多决定,这些方法提供某种程度的可携性和效能,但是对一个平行编译器,仍然没有一个最好的方法来描述同时性的问题。 -------------------------------------------------------------------------------- --------------------------------------------------------------------------------