被平行化的标准程式库。无论如何要将可携性和效能之间的平衡牢记心中。 从历史上的理由,大多数数值计算的程式是用Fortran语言所写的,因此在平行计算中,Fortran是受最大的支援(工具、程式库等)。现在大多数的程式设计者都是用C语言,或是认为C语言可以执行地更快,而用C语言重新改写现存的Fortran应用程式。由於C语言最接近通用的机器语言,C语言较快可能是正确的,但是它也有一些重要的缺陷。C语言使用指标(pointer)会让资料相关性的决定极度困难,自动分析指标也是极度困难,假如□有现成的Fortran程式,并且未来想要变成平行程式□千万不要把它转成C语言。 隐含的方法 隐含方法是使用者放弃一些或全部放弃自行平行,改用编译器的一种方法,例如 FORTRAN 90, 高效能Frotran (High Performance Fortran,HPF), 大量协同平行(Bulk Synchronous Parallel,BSP)还有许多正在发展当中。 隐含方法仍要求使用者对於程式同时的特性提供一些资讯,但是编译器必须对如何平行地执行同时性做出许多决定,这些方法提供某种程度的可携性和效能,但是对一个平行编译器,仍然没有一个最好的方法来描述同时性的问题。 -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 5. Beowulf资源 5.1 起点 Beowulf mailing list. 只要电子邮件寄到
[email protected] ,在邮件内容填上 subscribe 。 Beowulf 网页 http://www.beowulf.org Extreme Linux http://www.extremelinux.org 在RedHat网站上的Extreme Linux 软体 http://www.redhat.com/extreme 5.2 文件 Beowulf HOWTO最新版本 http://www.sci.usq.edu.au/staff/jacek/beowulf. 架设一个Beowulf系统 http://www.cacr.caltech.edu/beowulf/tutorial/building.Html Jacek的 Beowulf 连结 http://www.sci.usq.edu.au/staff/jacek/beowulf. Beowulf安装维护HOWTO http://www.sci.usq.edu.au/staff/jacek/beowulf. Linux平行计算HOWTO http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html 5.3 相关论文 Chance Reschke, Thomas Sterling, Daniel Ridge, Daniel Savarese, Donald Becker, and Phillip Merkey A Design Study of Alternative Network Topologies for the Beowulf Parallel Workstation. Proceedings Fifth IEEE International Symposium on High Performance Distributed Computing, 1996. http://www.beowulf.org/papers/HPDC96/hpdc96.html Daniel Ridge, Donald Becker, Phillip Merkey, Thomas Sterling Becker, and Phillip Merkey. Harnessing the Power of Parallelism in a Pile-of-PCs. Proceedings, IEEE Aerospace, 1997. http://www.beowulf.org/papers/AA97/aa97.ps Thomas Sterling, Donald J. Becker, Daniel Savarese, Michael R. Berry, and Chance Res. Achieving a Balanced Low-Cost Architecture for Mass Storage Management through Multiple Fast Ethernet Channels on the Beowulf Parallel Workstation. Proceedings, International Parallel Processing Symposium, 1996. http://www.beowulf.org/papers/IPPS96/ipps96.html Donald J. Becker, Thomas Sterling, Daniel Savarese, BrUCe Fryxell, Kevin Olson. Communication Overhead for Space Science Applications on the Beowulf Parallel Workstation. Proceedings,High Performance and Distributed Computing, 1995. http://www.beowulf.org/papers/HPDC95/hpdc95.html Donald J. Becker, Thomas Sterling, Daniel Savarese, John E. Dorband, Udaya A. Ranawak, Charles V. Packer. BEOWULF: A PARALLEL WORKSTATION FOR SCIENTIFIC COMPUTATION. Proceedings, International Conference on Parallel Processing, 95. http://www.beowulf.org/papers/ICPP95/icpp95.html Papers at the Beowulf site http://www.beowulf.org/papers/papers.html 5.4 软体 PVM - Parallel Virtual Machine http://www.epm.ornl.gov/pvm/pvm_home.html LAM/MPI (Local Area Multicomputer / Message Passing Interface http://www.mpi.nd.edu/lam BERT77 - FORTRAN conversion tool http://www.plogic.com/bert.html Beowulf software from Beowulf Project Page http://beowulf.gsfc.nasa.gov/software/software.html Jacek's Beowulf-utils FTP://ftp.sci.usq.edu.au/pub/jacek/beowulf-utils bWatch - cluster monitoring tool http://www.sci.usq.edu.au/staff/jacek/bWatch 5.5 Beowulf机器 Avalon 是由 140台Alpha 处理器组成,36GB记忆体,可能是最快的Beowulf机器,计算速度高达47.7Gflops,在全世界前五百快的机器中排名第114。 http://swift.lanl.gov/avalon/ Megalon-A Massively PArallel CompuTer Resource (MPACTR)由14台个人电脑组成,每台电脑内有四颗Pentium Pro200处理器,总共有14GB记忆体 http://megalon.ca.sandia.gov/description.html HIVE - Highly-parallel Integrated Virtual Environment 是另一套高速的Beowulf超级电脑,有64个计算节点,共计128颗处理器,4GB记忆体。 http://newton.gsfc.nasa.gov/thehive/ Topcat 是一套比较小型的机器,总共有16颗处理器和1.2GB记忆体。 http://www.sci.usq.edu.au/staff/jacek/topcat MAGI cluster 是个有趣的网站,内有许多有趣的连结。 http://noel.feld.cvut.cz/magi/ 5.6 其他有趣的网站 SMP Linux http://www.linux.org.uk/SMP/title.html Paralogic - Buy a Beowulf http://www.plogic.com 5.7 历史 Legends - Beowulf http://legends.dm.net/beowulf/index.html The Adventures of Beowulf http://www.lnstar.com/literature/beowulf/beowulf.html -------------------------------------------------------------------------------- 6. 原始码 6.1 sum.c /* Jacek Radajewski
[email protected] */ /* 21/08/1998 */ #include #include int main (void) { double result = 0.0; double number = 0.0; char string[80]; while (scanf("%s", string) != EOF) { number = atof(string); result = result + number; } printf("%lf\n", result); return 0; } 6.2 sigmasqrt.c /* Jacek Radajewski
[email protected] */ /* 21/08/1998 */ #include #include int main (int argc, char** argv) { long number1, number2, counter; double result; if (argc < 3) { printf ("usage : %s number1 number2\n",argv[0]); exit(1); } else { number1 = atol (argv[1]); number2 = atol (argv[2]); result = 0.0; } for (counter = number1; counter <= number2; counter++) { result = result + sqrt((double)counter); } printf("%lf\n", result); return 0; } 6.3 prun.sh #!/bin/bash # Jacek Radajewski
[email protected] # 21/08/1998 eXPort SIGMASQRT=/home/staff/jacek/beowulf/HOWTO/example1/sigmasqrt # $OUTPUT must be a named pipe # mkfifo output export OUTPUT=/home/staff/jacek/beowulf/HOWTO/example1/output rsh scilab01 $SIGMASQRT 1 50000000 > $OUTPUT < /dev/null& rsh scilab02 $SIGMASQRT 50000001 100000000 > $OUTPUT < /dev/null& rsh scilab03 $SIGMASQRT 100000001 150000000 > $OUTPUT < /dev/null& rsh scilab04 $SIGMASQRT 150000001 200000000 > $OUTPUT < /dev/null& rsh scilab05 $SIGMASQRT 200000001 250000000 > $OUTPUT < /dev/null& rsh scilab06 $SIGMASQRT 250000001 300000000 > $OUTPUT < /dev/null& rsh scilab07 $SIGMASQRT 300000001 350000000 > $OUTPUT < /dev/null& rsh scilab08 $SIGMASQRT 350000001 400000000 > $OUTPUT < /dev/null& rsh scilab09 $SIGMASQRT 400000001 450000000 > $OUTPUT < /dev/null& rsh scilab10 $SIGMASQRT 450000001 500000000 > $OUTPUT < /dev/null& rsh scilab11 $SIGMASQRT 500000001 550000000 > $OUTPUT < /dev/null& rsh scilab12 $SIGMASQRT 550000001 600000000 > $OUTPUT < /dev/null& rsh scilab13 $SIGMASQRT 600000001 650000000 > $OUTPUT < /dev/null& rsh scilab14 $SIGMASQRT 650000001 700000000 > $OUTPUT < /dev/null& rsh scilab15 $SIGMASQRT 700000001 750000000 > $OUTPUT < /dev/null& rsh scilab16 $SIGMASQRT 750000001 800000000 > $OUTPUT < /dev/null& rsh scilab17 $SIGMASQRT 800000001 850000000 > $OUTPUT < /dev/null& rsh scilab18 $SIGMASQRT 850000001 900000000 > $OUTPUT < /dev/null& rsh scilab19 $SIGMASQRT 900000001 950000000 > $OUTPUT < /dev/null& rsh scilab20 $SIGMASQRT 950000001 1000000000 > $OUTPUT < /dev/null& --------------------------------------------------------------------------------
[1] [2] 下一页
(出处:http://www.sheup.com)
上一页 [1] [2]