
                               Beowulf HOWTO
                                       
Jacek Radajewski and Douglas Eadline

   v1.1.1, 22 November 1998
     _________________________________________________________________
   
   ļBeowulfԼܹͶ׫дƽгʽṩһЩ֪ʶ
   һЩȤļվӡ
     _________________________________________________________________
   
1. ǰ

     * 1.1 
     * 1.2 Ȩ
     * 1.3 йHOWTO
     * 1.4 йЩ
     * 1.5 л
       
2. 

     * 2.1 ˭ҪĶHOWTO
     * 2.2 ʲBeowulf
     * 2.3 
       
3. ܹ

     * 3.1 ʲ
     * 3.2 Чڵ㣿
     * 3.3 BeowulfCOWͬ
       
4. ϵͳ

     * 4.1 ƽмı
     * 4.2 ƽмķ
     * 4.3 ƽмļܹ
     * 4.4 ԣSuitability
     * 4.5 ׫дֲƽ
       
5. BeowulfԴ

     * 5.1 
     * 5.2 ļ
     * 5.3 
     * 5.4 
     * 5.5 Beowulf
     * 5.6 Ȥվ
     * 5.7 ʷ
       
6. ԭʼ

     * 6.1 sum.c
     * 6.2 sigmasqrt.c
     * 6.3 prun.sh
     _________________________________________________________________
   
1. ǰ

1.1 

   ǽԱļвȷѶߵʹɵʧ
   
1.2 Ȩ

   ļİȨCopyright &copy; 1997 - 1998Jacek Radajewski
   Couglas EadlineGNU General Public Licenceɢ޸ıļ
   
   
1.3 йHOWTO

   Jacek Radajewski1997ʮһ¿ʼдļܿDouglas EadlineҲ
   УBeowulf HOWTOɳƪļ1998·ֳ
   Beowulf HOWTOBeowulf ܹHOWTO Beowulfװ HOWTO1998
   ʮһʮһBeowulf HOWTO 1.0.0汾Linux ļƻϷϣֻ
   Beowulf ļƻĵһ
   
1.4 йЩ

     * Jacek Radajewski ԱڰʿѧԿѧ
       Jacek1995һνӴLinux1997꽨Լĵһ
        BeowulfȺʱʼоҵº͸õķ
       ϵͳ ͸ʼϵ [1]jacek@usq.edu.au
     * Douglas Eadline ʿҲParalogic˾Ķ³Ҫѧҡ
       ԭѧ1978꽨˵һ̨ڻѧϣ 
       ʼԵEadlineʿȤLinuxBeowulfȺ
       ƽalgorithms͸ʼϵ [2]deadline@plogic.com
       
1.5 л

   ʱڵ׫дɣرлѶԱļİæ͹ס
   
     * Becky İֺ֧½⡣
     * Tom Sterling, Don Becker, NASA Beowulfƻѡ
     * Thanh Tran-Cong ͼtopcat Beowulf ĻеĽְԱ
     * ṩཨָʦChristopher Vance
     * ҵ Russell Waldron ṩʽĵӺĵĲ뼰֧֡
     * ҵ David Smith У塣
     * Beowulf mailing listϵṩķӦ顣
     * иLinuxҵϵͳtopcatBeowulfʹ׼
       ѡ
       
2. 

   ȡõĵԺ·ӲЧҼ۸񲻶ϻ䣬Щ混
   ۵ĵװƽеԾͱ÷ǳУҪǮڼ۸߰ĳ
   ϡʵBeowulfԵļ۸ЧܱǴͳԵʮBeowulf
   scaleҲ׽ãֻ踺Ӳ豸ķã븺
   ķá
   
2.1 ˭ҪĶHOWTO

   HOWTOƸLinuxҵϵͳЩʶˣBeowulfҵϵͳ
   ʶ·˽ⶼǱģǶƽмЩǾ
   кôģϾҪЩĶļHOWTOļ޷
   Beowulfص⣬ϣṩһЩ뷨쵼ȷķ
   ļĿṩصı֪ʶһЩĲοļ
   
2.2 ʲBeowulf

   Famed was this Beowulf: far flew the boast of him, son of Scyld, in
   the Scandian lands. So becomes it a youth to quit him well with his
   father's friends, by fee and gift, that to aid him, aged, in after
   days, come warriors willing, should war draw nigh, liegemen loyal: by
   lauded deeds shall an earl have honor in every clan. BeowulfӢ
   дʷʫһӵӢŷ򣬺ս
   GrendelĹ£ μ [3]History ҵйرŷ¼
   
   BeowulfĶܺͽ߻Beowulfʹһ࣬ЩΨ
   NASAԭͻͬųΪBeowulfҲΪֻҪһȺվִƽгʽ
   ͿԳΪBeowulfҶBeowulfĶǽ춶֮䣬ҪBeowulf
   mailing listϵһЩʼ
   
   BeowulfһƽмĵȺܹͨһ̨ŷ˺һ̨
   ͸̫··ӵϵͳ混۵Ӳ壨װ
   Linuxĸ˵ԣ׼̫·ͽʽκӲ
   豸ǿ졣Beowulfʹȡõ壬Linuxҵϵͳ
   PVM(Parallel Virtual Machine)MPI(Message Passing Interfaceŷ
   ˿Ⱥṩû˵ҲǵȺĿ̨ͨѶբ
   ṩӵĳڡ͵BeowulfȺֻܲһ̨ŷˣЩ
   ض;̨վûڴǲ
   ԽԽáûŷ˹滮ͿƣֻǱɵĹ
   һӲû˵ļܹû֪ԵIPλַƣһ
   ֱŷ˸֪ΪֹBeowulf͹վȺĲBeowulfȽ
   һ̨̨վڴ󲿷û˲Ҫм̺өĻ
   ֻҪ͸Զ˵ʽնөĻ룬Beowulfû˿Ϊ
   ϣǶһȺڣģ鱻Ƕϡ
   
   Beowulfض׼ոµ·˻µĺĺͣBeowulf
   һ״LinuxԳɳƽеԵļȻ׼
   ޸ĹĺġPVMMPIʽԼ滮ߣBeowulfܹ١
   ع滮ϵͳκҲֻLinux׼׼ҪĸͿԽ
   һױ׼Beowulfж̨ѾLinuxԣҿ͸
   NFS/home ϵͳִrshremote shellsָӵ
   һ̨򵥵˫ڵBeowulf
   
2.3 

   BeowulfϵͳѾɸֲͬɣΪЧܵĿһЩƷܱ豸
   ֻһѾΪ춽˵۸ֲͬ͵ϵͳ
   м򵥵ķ෽ʽ:
   
   һBEOWULF:
   
   ȫƷֱӴϷ۵ɣõԹ
   Computer Shopper϶׼ƷֱӴϷ۵
   һÿ³־һӢݽֵܸϵͳĿ¼
   ϶׼:
   
   A һBeowulfһֻٱֹԻȫҵ
   Ŀ¼ҵ
   
   һϵͳĺô:
     * Ӳ豸кܶԴ۸͡ά
     * ضһӲ幩Ӧ
     * Linux֧Ԯʽ
     * ͨһ׼SCSIEthernetȣ
       
   һϵͳȱ:
     * ҪڶϵͳӲнϺõЧ
       
   ڶBEOWULF
   
   κûͨԹ϶׼Ļ֮ⲢһǼ£ֻǷ
   һ֡
   
   ڶϵͳĺô:
     * Ч൱غ
       
   ڶϵͳȱ :
     * ʽĹӦ
     * ضһӲ幩Ӧ
     * ܱȵһϵͳ
       
   ûһ㣬ȫƾʹߵԤ㣬ַിϣý
   ۸Ӽͷϵͳ½ڽһϵͳ
   Ҫ
   
3. ܹ

3.1 ʲ

   ΪBeowulfԼܹʵķǾһʵġǴ
   ϵͳϤġǾһUNIXʵңһ̨ŷ˺һȺ
   ˣ׼˵һλʿѧѧԺDEC Alphaѧʵ
   ΪŷΪ beldin û˻ֱΪ scilab01, scilab02,
   scilab03, һֱ scilab20. ÿ̨ûڲװDigital Unix 4.0ҵϵͳ
   ʹߵռ䣨/home /usr/local ͸NFS·ϵͳ
   ŷϻãÿû˶Խŷˣû˶
    /etc/hosts.equiv ڣÿû˶Զ˲ǣrsh
   ŷҲʵҵNISŷеĻͬʺϣĳ
   scilab02Ŀ̨ǰ룬ŷ˻scilab15. һͬ
   ĻеûͬԭеĻװ͹滮ͬ
   ҵϵͳʹߵ/home  /usr/local ʵ϶λŷϣ
   ͸NFS롣NISNFSһ ѶϢ [4]NIS  [5]NFS HOWTOs.
   
3.2 Чڵ㣿

   ǶϵͳܹЩǿʹüʵڿɹʹ
   CPUκ˿Եκһ̨ÿԼĿ¼ִгʽ
   Ҳ͸Զ˲spawnͬĳʽ˵
   Ҫ110ƽܺͣд˸򵥵ĳʽΪ
   sigmasqrt μ [6]source code) Ϊ˵õִµĲ
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 10
22.468278

real    0m0.029s
user    0m0.001s
sys     0m0.024s

   time ָԸִгʽʱ䣨ʵʾʱ䣩ǿԿ
   ֻ˺̵ܶʱ䣨0.029룩11,000,000,000
   ƽܺͣԿ¼ʱ
   
[jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 1000000000
21081851083600.559000

real    16m45.937s
user    16m43.527s
sys     0m0.108s

   ִгʽʱǳãһԵμӿִеʱ
   ǸθıִгʽķʽԼִʱ䣿ԵĴ𰸾ǽ
   ֳСͬʱеĵִУǿԽӷĹ
   ֳɶʮݣÿһοŵĹеĽڵɼ
   㣬ʮ͵õĴ𰸡ִгʽ֮ǰ
   ҪмǺŵ͹ܣегдǵĽ
   
[jacek@beldin sigmasqrt]$ mkfifo output
[jacek@beldin sigmasqrt]$ ./prun.sh & time cat output | ./sum
[1] 5085
21081851083600.941000
[1]+  Done                    ./prun.sh

real    0m58.539s
user    0m0.061s
sys     0m0.206s

   ǻ˴Լ58.5룬ʱǴӿʼеĽڵ㶼ɼ㣬
   д͹ܣʱ䲢ὫʮǸʱǳض
   ԺԲơǿԿƽмЧظĽִгʽʵ
   ƽйԼ17ʹ˶ʮCPUĿЧ൱ġ
   ĿҪչʾͬʱƽгʽ򵥵ķʵʲϣ˼򵥵ġ
   ǺټģɣPVMMPI APIsƽеĹ
   
3.3 BeowulfCOWͬ

   ļʵһվȺCluster of WorkstationsCOW
   BeowulfкβͬCOWкβ죿ʵ϶û𣬲Beowulf
   ЩͬɫһBeowulfȺûûм̡ʾ
   өĻеû˵ķʽǴŷˡضƶ˻пƶ˾Զ
   ӵ룬Ϊû˶ԣӵȺԻǴͷĵֱӵ
   ûûбҪģûͨʹ˽еIPλַ10.0.0.0
   10.0.0.8192.168.0.0192.168.0.16μRFC 1918
   [7]http://www.alternic.net/rfcs/1900/rfc1918.txt.html). ͨΨһҪõ
   ڶ·ӵĻŷˣʹ׵Ⱥķֱӽ
   ŷˣǴӸ˹վʹtelnetԶ˵ŷˡһŷˣ
   ʹ߿Ա༭ͱǵĳʽҲڵȺڵûг̡
   εCOWִƽм㣬ǲʹùվĩʱ䣬
   ʹáõCPUͨBeowulfרƽм㣬ҶЩƽмѻ
   ۵彨BeowulfҲṩϺõļ۸Чܱȣ
   Beowulfһֵһϵͳӡ󣬺ʹ߽BeowulfȺһ̨
   ùվ
   
4. ϵͳ

   ڹκӲ豸֮ǰ˼ҪϵͳǷǳҪģ
   һBeowulfϵͳӲ豸 : 㽫ʹõĽڵƵԵĻͺ
   ӽڵķʽֻһӰҪѡӲ豸ͨѶó
   ʽAPIϸӲ豸ͨѶ۽ڱļͷ
   
   ѡԲʱмҪƾģΪƽмĿѧ
   Ϊкַܶʽͣ飬㲻뿴һЩϣ
   ڣǽӲ豸ľ֮ǰĶ [8]
   ԣSuitability 
   
4.1 ƽмı

   ṩһЩƽмĻ֪ʶƽмѧͼϸ
   ֻƽмBeowulfߺʹصһЩ顣
   
   ҪƺͽԼBeowulfмĹ
   н÷ǳҪԣһBeowulfԿɱ
   أһЩؾ͵ϸһ˵ƽмǣⲢ̫˽⣬
   ȷˣһ˽Щ⣬˵ڴʵɹʵ֡
   ѭ磬ٶΨһҪأƽеУٶ
   ֻǾϵͳЧܺЧ֮һ
   
4.2 ƽмķ

   ƽмɷֳɺüͣʹ߹۵㣬ÿ͵ȱ㶼Ҫ
   ½ڳṩƽм㷽Ĺ۵㣬ָBeowulf֡
   
  ΪʲҪһϵĴ?
  
   شǺҪģð˿CPU鴦ƺеɱţ
   ʵҲweb serverdatabaserendering program
   project schedulerCPUӵֵģΣ
   ѧdata mining applicationЩ״£CPUҪ
   ģȷദ⡣
   
   ͨǡΪʲҪĿCPUҿԵȼٵ986֡
   мԭԻش:
    1. ʹö๤ҵϵͳԿͬʱܶ飬ֻҪһϵ
       CPUͿԴﵽȻƽл
    2. ٶÿʮ˸¾һǼӲٶأܲ
       أǵٶӵزûCPU죬ǱǵãӦ嶼
       õcacheļӲƽлǿ԰ЩƵһַ
    3. Ԥ2005֮ᣬٶȽÿʮ˸¾һҪﵽ
       ٶȵƣм仹ϰ
    4. ƽм2500ٶȵʱ죩ȫִеӦó
       ʽ޷һʹһʹرƳ촦
       ĳԣҲöȡõCPUɡ
       
   Ϊƣcomputer boundƣI/O bound
   ҪٶȣƽֵÿǵķΪƽмкܶ෽ʽƽеؽ
   ⽫Ҫ˼ҪľЩӰӦóʽĿЯԡ
   Чܺʱ䡢ԼǮ
   
   ˽ƽмļ֮ǰȿϤƽмʵ
   ڵǰų
   
  ƽм̵
  
   뿴һ̨ǰа̨ͬʱʹĴ̵꣬ÿһ
   CPUÿ˾һԳʽԳʽĴСĶѣÿ
   ѡĶ٣ȵķʽҪ˵ƽмĹ
   
  ҵϵͳ
  
   ֻһ̨̨򿪣һֻܴһˡ
   
    : MS DOS
   
  ๤ҵϵͳ
  
   ֻһ̨򿪣һδһѡһݣȻƵ¸
   ˣѡһݣÿƺͬʱƶû
   ӣܿͻֵ㡣
   
    : UNIXʹõһCPUNT
   
  CPUҶ๤ҵϵͳ
  
   ǽ򿪣ÿ˶һ̨ʱŶӵĶ
   ƶغܿ죬ΪSMPԳʽг̡Ȼж򿪣Ǿ첻
   ֻһ̨һˡ
   
    : UNIXʹöCPUNT
   
  ๤CPUthread
  
   罫ѡĿ̨ͬʱʹüʣͿԸһ㡣
   ǵü˺ܶණΪ㻨ڲĿʱɶ̨
   ϣԱǰNN̨ԱҪõ
   ݵСʱǿ͸̸ܿؽҪ
   ѶԴ̽ѰҪϣʹùЩ
   ζЩƣҲҵڸطЧطǫ̈
   
   
   AmdalsҲʹӦóʽٶȽѭʽĲݡ
   
    NUIXͬϵĶCPUNTִжmulti-threaded
   ʽ
   
  ڶ๤ҵϵͳCPUѶϢ
  
   Ϊ˸Чܣͷ˰̨Ϊµʵǰ̨Զ
   Աõ绰СƸǰ̨˴⣬϶ʱĸ
   Ǽ紫ʱ̣ܶ⡣ҪĶܶ࣬Ҫ
   еʱʹĽʵٶ֮ǰʱ为
   뿼ǽȥʱĳЩ̵ڸֻһ̨ÿ
   ֻ͸绰ϵʱڵλþͲҪˡ
   
   ̨UNIXCPUNTͬһϣ˴໥
   ϵ
   
   ˵Ȼ׼ƽϵͳ˵ǲ
   һCPUĴǸ⡣
   
4.3 ƽмļܹ

   ƽмķͼܹ½ڽܣȻܹ㷺Ҳ
   BeowulfƵһЩ⡣
   
  Ӳܹ
  
   Ӳжֻƽеԣ
   
    1. м֮ԽѶBeowulf Ⱥ
    2. ͸崫ϣSMP
       
   ͵BeowulfһȺCPUɣ͸̫·ӣԳΪ
   4 way SMPһ̨ƽм㣬ƽеӦ
   ͸崫ϡԵԷ۵м
   ʵCPUϿԺܶ࣬ǹ춼ĹϵCPU
   ĿƵġ
   
   Ӷ̨ǿеģЩʽʹ߿
   һ̨͵SMPNUMAnon uniform memory access
   Ǿȼ룩Ϊʹ߿һ壬еCPU
   ֲͬӳ٣latenciesĳ̶ֳϣий
   ֮Ǳ뻥ഫѶϢ
   
   SMPмļڵ㣬пܵġ͵ĵ
   һжŻĿCPUʹͨԽĳɱ
   LinuxڲιЩCPU׶Σʹ޷ָҪִ
   ĹĸCPU𣬵ʹ߿ͬʱִжɵг̣һ
   г̣threaded processesϣЧܱһCPUϵͳá
   
  APIܹ
  
   жַʽڳʽڱֳͬʱԣ
    1. ڴ֮ʹѶϢ͡
    2. ʹϵͳ
       
   бַõġһע⣬ͬʱҪɵ
   ӲƣѶϢSMPSMP͵Ⱥʹã
   ЧܺͿЯҪ⡣
   
  ѶϢ
  
   ʷĹ۵ѶϢݵļӦмƽеԵƹ
   ҪʱѶϢҪҪѶϢӳٺٶȱѶϢ
   ģʽءѶϢʵ൱򵥣һЩϺʹݵĿĵأ
   һ㳣ѶϢݵAPI [9]PVM  [10]MPIѶϢݿһ̨SMP
   ͵ȺЧʹѶϢѶϢһ̨SMPϵĺôǣδ
   һҪʹõȺֻҪ׵ӻ
   
  
  
   ҵϵͳķչҪΪSMPʽͬʱĲݿк
   ع崫ݺͼͬSMPϵͳִеزΪ͸
   壬ԭʹ߱뽫صϴж
   ʽȷִСѶϢݣΪг
   ϿԱ⣬Linux֧ԮPOSIX춺չһ
   ̨SMP⣬ΪCPUһԵɸ
   Чչ̨SMPǳʱһ
   Linuxǲ֧ԮġѶϢ֮ϣ (
   [11](http://syntron.com/ptools/ptools_pg.htm))ѶϢһ
   ͱЧѡ
   
   ǺЧйصѶ
          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·ȵȡע⣬ֻʶӦóʽǲģָʽм
   صĲݣǡ֪ݵĴݻѣضϵͳĴ
   ʱ޷óʽ޷Чƽл
   
   Ҫ˵һЩĴǾ˵һʽƽлʵ
   ǳʽͬʱݲűƽлϵ˵һʽûƽлƽ
   лЧǻԡ
   
4.5 ׫дֲƽ

   һҪƽм㣬ҪƺͼһBeowulf
   ˼һЩ͡ӦóʽйصĽ齫Ǹܺõ⡣
   
   һԣ¡ܹģ
    1. ֱӼһBeowulfȻ취áӦóʽӦϵͳ
       BeowulfֱһֳɵƽӦóʽעĿЯԺ
       Чܵ⣩
    2. ˼һ¡ҪڡBeowulfܵӦóʽȻƺ͵Ӳ
       ǡҪġ
       
   ΡҪЧܵ⣬һԣ¡Ҫ
    1. ĳʽеͬʱݡ
    2. ƽЧܡ
    3. ʽеͬʱݡ
       
   һһ
   
  ĳʽеͬʱ
  
   ͨҪǽĳʽƽлƽлڵڶ裬ڡ
   ҪϵĹԡ
   
   >ʵʲĽǶӦóʽж̬ͬʱԣ㣨ֵļ
   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 ) [12](ftp://www.plogic.com/pub/papers/exs-pap6.ps)
   
   һѾʽеͬʱǺ̬ҪһƽдĻ
   ЧܽΡμ [13]Software ж幤ߵ
   
   ûЩߣ͸裬пÿμԷӼƣ
   ϴƣǺܺõƽж󣬵Ǽס16ӵļ
   ʱ32ݣÿݵϴҪӣ齫ء
   
  ʽеͬʱ
  
   мַҳʽеͬʱݣ
    1. ȷƽִ
    2. ƽִ
       
   ҪĲȷƽлȡʹߣƽлȡ춱
   
   
  ȷķ
  
   һЩķҪʹרΪƽе޸ԭʼ룬ʹ߱ʹ
   [14]PVM  [15]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 FortranHPF), Эͬƽ
   УBulk Synchronous ParallelBSP)ڷչС
   
   Ҫʹ߶춳ʽͬʱṩһЩѶǱ
   ƽеִͬʱЩṩĳ̶ֳȵĿЯԺЧܣ
   ǶһƽбȻûһõķͬʱԵ⡣
   
5. BeowulfԴ

5.1 

     * Beowulf mailing list. ֻҪʼĵ
       [16]beowulf-request@cesdis.gsfc.nasa.gov ʼ
       subscribe 
     * Beowulf ҳ [17]http://www.beowulf.org
     * Extreme Linux [18]http://www.extremelinux.org
     * RedHatվϵExtreme Linux 
       [19]http://www.redhat.com/extreme
       
5.2 ļ

     * Beowulf HOWTO°汾
       [20]http://www.sci.usq.edu.au/staff/jacek/beowulf.
     * һBeowulfϵͳ
       [21]http://www.cacr.caltech.edu/beowulf/tutorial/building.html
     * Jacek Beowulf 
       [22]http://www.sci.usq.edu.au/staff/jacek/beowulf.
     * BeowulfװάHOWTO
       [23]http://www.sci.usq.edu.au/staff/jacek/beowulf.
     * LinuxƽмHOWTO
       [24]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.
       [25]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.
       [26]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.
       [27]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.
       [28]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.
       [29]http://www.beowulf.org/papers/ICPP95/icpp95.html
     * Papers at the Beowulf site
       [30]http://www.beowulf.org/papers/papers.html
       
5.4 

     * PVM - Parallel Virtual Machine
       [31]http://www.epm.ornl.gov/pvm/pvm_home.html
     * LAM/MPI (Local Area Multicomputer / Message Passing Interface
       [32]http://www.mpi.nd.edu/lam
     * BERT77 - FORTRAN conversion tool
       [33]http://www.plogic.com/bert.html
     * Beowulf software from Beowulf Project Page
       [34]http://beowulf.gsfc.nasa.gov/software/software.html
     * Jacek's Beowulf-utils
       [35]ftp://ftp.sci.usq.edu.au/pub/jacek/beowulf-utils
     * bWatch - cluster monitoring tool
       [36]http://www.sci.usq.edu.au/staff/jacek/bWatch
       
5.5 Beowulf

     * Avalon  140̨Alpha ɣ36GB壬Beowulf
       ٶȸߴ47.7GflopsȫǰٿĻ114
       [37]http://swift.lanl.gov/avalon/
     * Megalon-A Massively PArallel CompuTer Resource (MPACTR)14̨˵
       ɣÿ̨ĿPentium Pro200ܹ14GB
       [38]http://megalon.ca.sandia.gov/description.html
     * HIVE - Highly-parallel Integrated Virtual Environment һ׸
       Beowulfԣ64ڵ㣬128Ŵ4GB塣
       [39]http://newton.gsfc.nasa.gov/thehive/
     * Topcat һױȽС͵Ļܹ16Ŵ1.2GB塣
       [40]http://www.sci.usq.edu.au/staff/jacek/topcat
     * MAGI cluster ǸȤվȤᡣ
       [41]http://noel.feld.cvut.cz/magi/
       
5.6 Ȥվ

     * SMP Linux [42]http://www.linux.org.uk/SMP/title.html
     * Paralogic - Buy a Beowulf [43]http://www.plogic.com
       
5.7 ʷ

     * Legends - Beowulf [44]http://legends.dm.net/beowulf/index.html
     * The Adventures of Beowulf
       [45]http://www.lnstar.com/literature/beowulf/beowulf.html
       
6. ԭʼ

6.1 sum.c

/* Jacek Radajewski jacek@usq.edu.au */
/* 21/08/1998 */

#include <stdio.h>
#include <math.h>

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 jacek@usq.edu.au */
/* 21/08/1998 */

#include <stdio.h>
#include <math.h>

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 jacek@usq.edu.au
# 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&

References

   1. mailto:jacek@usq.edu.au
   2. mailto:deadline@plogic.com
   3. file://localhost/tmp/zh-sgmltools.25358/Beowulf-HOWTO.txt.html#history
   4. http://sunsite.unc.edu/LDP/HOWTO/NIS-HOWTO.html
   5. http://sunsite.unc.edu/LDP/HOWTO/NFS-HOWTO.html
   6. file://localhost/tmp/zh-sgmltools.25358/Beowulf-HOWTO.txt.html#sigmasqrt
   7. http://www.alternic.net/rfcs/1900/rfc1918.txt.html
   8. file://localhost/tmp/zh-sgmltools.25358/Beowulf-HOWTO.txt.html#suitability
   9. http://www.epm.ornl.gov/pvm
  10. http://www.mcs.anl.gov/Projects/mpi/index.html
  11. http://syntron.com/ptools/ptools_pg.htm
  12. ftp://www.plogic.com/pub/papers/exs-pap6.ps
  13. file://localhost/tmp/zh-sgmltools.25358/Beowulf-HOWTO.txt.html#software
  14. http://www.epm.ornl.gov/pvm
  15. http://www.mcs.anl.gov/Projects/mpi/index.html
  16. mailto:beowulf-request@cesdis.gsfc.nasa.gov
  17. http://www.beowulf.org/
  18. http://www.extremelinux.org/
  19. http://www.redhat.com/extreme
  20. http://www.sci.usq.edu.au/staff/jacek/beowulf
  21. http://www.cacr.caltech.edu/beowulf/tutorial/building.html
  22. http://www.sci.usq.edu.au/staff/jacek/beowulf
  23. http://www.sci.usq.edu.au/staff/jacek/beowulf
  24. http://yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html
  25. http://www.beowulf.org/papers/HPDC96/hpdc96.html
  26. http://www.beowulf.org/papers/AA97/aa97.ps
  27. http://www.beowulf.org/papers/IPPS96/ipps96.html
  28. http://www.beowulf.org/papers/HPDC95/hpdc95.html
  29. http://www.beowulf.org/papers/ICPP95/icpp95.html
  30. http://www.beowulf.org/papers/papers.html
  31. http://www.epm.ornl.gov/pvm/pvm_home.html
  32. http://www.mpi.nd.edu/lam
  33. http://www.plogic.com/bert.html
  34. http://beowulf.gsfc.nasa.gov/software/software.html
  35. ftp://ftp.sci.usq.edu.au/pub/jacek/beowulf-utils
  36. http://www.sci.usq.edu.au/staff/jacek/bWatch
  37. http://swift.lanl.gov/avalon/
  38. http://megalon.ca.sandia.gov/description.html
  39. http://newton.gsfc.nasa.gov/thehive/
  40. http://www.sci.usq.edu.au/staff/jacek/topcat
  41. http://noel.feld.cvut.cz/magi/
  42. http://www.linux.org.uk/SMP/title.html
  43. http://www.plogic.com/
  44. http://legends.dm.net/beowulf/index.html
  45. http://www.lnstar.com/literature/beowulf/beowulf.html
