  Beowulf HOWTO

  Jacek Radajewski  Douglas Eadline
  v1.1.1, 22 November 1998
   : 缺, ospace@chollian.net <mailto:ospace@chollian.net>,
  kida@inet.cheju.ac.kr <mailto:kida@inet.cheju.ac.kr>
  Ͻ : 1999 5 ??

     ǻ  Ұϰ  α׷ֿ
  ⺻  ϴ  ܿ ٸ Ư   ũ
  ϰ ִ.
  ______________________________________________________________________

  

  1. Ӹ
     1.1 Disclaimer
     1.2 Ǳ
     1.3   
     1.4 ڵ鿡 
     1.5  

  2. 
     2.1   HOWTO  о ϴ°?
     2.2 ?
     2.3 з

  3.  
     3.1  ó ̴°?
     3.2 ٸ 带  ̿ ΰ?
     3.3  COW  ٸ?

  4. ý 
     4.1  꿡־  .
     4.2   
        4.2.1    ̻ CPU ʿѰ?
        4.2.2  ó 
           4.2.2.1 Single-tasking Operating System
           4.2.2.2 Multi-tasking Operating System:
           4.2.2.3 Multitasking Operating Systems with Multiple CPUs:
           4.2.2.4 Threads on a Multitasking Operating Systems extra CPUs
           4.2.2.5 Sending Messages on Multitasking Operating Systems with extra CPUs:
     4.3    
        4.3.1 ϵ 
        4.3.2 Ʈ API 
           4.3.2.1 ޽
           4.3.2.2 
        4.3.3 Ǯ׸ 
     4.4 ռ
     4.5  Ʈ ۼ 
        4.5.1 α׷  κ 
        4.5.2  ȿ 
        4.5.3 α׷  κ 
           4.5.3.1  
           4.5.3.2 Ͻ 

  5.  ڿ
     5.1 
     5.2 
     5.3 
     5.4 Ʈ
     5.5  ӽŵ
     5.6 ٸ ִ Ʈ
     5.7 

  6. ر׸
     6.1 sum.c
     6.2 sigmasqrt.c
     6.3 prun.sh

  ______________________________________________________________________

  1.  Ӹ

  1.1.  Disclaimer

  츮    Ȯ  , Ȥ ̸ μ
  Ͼ ִ  ؿ  å  ʴ´.  We will not
  accept any responsibility for any incorrect information within this
  document, nor for any damage it might cause when applied.
  1.2.  Ǳ

  Copyright ? 1997 - 1998 Jacek Radajewski and Douglas Eadline.  
      GNU General Public Licence .

  1.3.    

  Jacek Radajewski 1997⿡    ۾ Ͽ, 
  Douglas Eadline  Ͽ.     HOWTO
     þ , 1998 8 ޾ HOWTO,  
   HOWTO, ׸  ġ  HOWTO   
   .  HOWTO  1.0.0 1998 11 Linux
  Documentation Project(LDP) ǥ Ǿ. 츮  ۾ Ϻ
   ȭ Ʈ  ʼ Ǳ⸦ ٶ̴.

  1.4.  ڵ鿡 

  Jacek Radajewski Ʈũ ڷμ ϰ ְ, Ʈ
  Southern Queensland п ǻ ко߿  (?) ް
  ִ. Jacek  ù  1995̰, ù  ߴٰ Ѵ.
  Jacek ù  Ŭ͸ 1997 5 ,  ķ 
    ϰ ִ. ׻, Ӱ   ġ  ã ִ.
  jacek@usq.edu.au <mailto:jacek@usq.edu.au> e-mail  Jacek
     ִ.  Douglas Eadline ̱ ҽǺϾ(PA?)
  巹 Paralogic Principal Scientist President Ph.D̴.
  ״ Physical/Analytical Chemistμ ؿԾ, 1978⿡ ȭ
  ġ  ̱  ǻ͸ ó ϸ鼭  ɷ
   Դ. Eadline ڻ  оߴ ,  Ŭ͵,
  ׸  ˰  Ű ̴.  Eadline ڻ 
  ϰ ʹٸ deadline@plogic.com <mailto:deadline@plogic.com>
  email  ȴ.

  1.5.   

   HOWTO ۿ ־  ð ɷȰ, ᱹ ϼ ߴ.
  ̿ ֽ е鿡 縦 帰.  HOWTO   
  ⿩  帮 ʹ.  Becky ׳ ,  .  Tom
  Sterling, Don Becker, ׸ NASA ִ ٸ , ̵ 
   Ʈ ۵Ǿ.  Thanh Tran-Cong Faculty of
  Engineering and Surverying, topcat  ӽ   ְ
  ־.   supervisor CHristopher Vance,  ֵ 
  ־.   ģ Russell Waldron Ǹ α׷ , 
  Ʈ   ɰ  ־.  ?  My friend Russell
  Waldron for great programming ideas, his general interest in the
  project, and support.   ģ David Smith,    ־.
   ϸ Ʈ   ,  ǵ 
  ־.   ü, ׸  topcat ٸ 
  ӽŵ ϰ ִ  Ʈ Ű ϴ  е鿡
  縦 帰.

  2.  

  ǻͿ Ʈũ ϵ    ̵ ݵ ϰ
  ǰ, ſ  ǻ͵ CPU ð    Ư ֹ
  ƴ  ҵ   꿡  ý۵  
  ǿ Ǿ . ,   ӽ ɺ 
   ǻ  3-10   ϴ.   Ը
  ϴ.     ,  ϵ 븸 ϰ
  κ Ʈ  ̴.

  2.1.    HOWTO  о ϴ°?

    ּ  ü ִ    .
  ̿  ̳   ü ؿ Ʈŷ 
  ʼ  ƴϴ. ׷, İ   ִ  
  Ȳ Ǿ ־ Ѵ(ᱹ   ̵   
  ).           
   , ߸ Ǹ,  ְ ùٸ   ̴.
     ⺻ , ũ    
  ϴµ ִ.

  2.2.  ?

  : 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. (:̺κ 
  κ,  Ѱ谡  ^^;)     
  ̴. Grerdel̶  Ƴ ſ  , 밨 
   ̴̾߱.     ˰  ""κ ã
  ƶ.   ǻ ü ų ϴ 
  ŭ̳   ǰ  ̴.   NASA 
  ӽŰ    ׵ ý۸ ̿ Ѵ.
  ش ٸ   ڵ ϴ  ũ̼ǵ
  ̿ ϱ⵵ Ѵ.   Ǵ   ΰ
   ö,   ϸ Ʈ õ  
  ϸ:

       ִ  ǻ ̴. ̴
  ̴̳ ٸ Ʈũ    ϳ   ϳ
  ̻ Ŭ̾Ʈ  Ǿ ý̴. ̴   
  ִ PC  Ϲ ϵ , ǥ ̴ ͵, ׸
  ġ ̷. ̴  ֹ ϵ ҿ trivially
  reproducible  ʴ´. ,   ü,
  Parallel Virtual Machine (PVM) Message Passing Interface (MPI)
   Ϲ Ʈ  Ѵ.    Ŭ͵
  ϰ Ŭ̾Ʈ 忡  Ѵ. , Ŭ
  ְܼ ܺη ϴ Ʈ̵  Ѵ. Ŵ  ӽ
  ϳ ̻  带  ϴٸ ٸ  ܼ̳
  ͸ ̼ǰ  Ư ۾ þƼ óϰ Ѵ. κ
    ýۿ Ŭ̾Ʈ  ̰, ̵ 
  ϼ  .   忡  ǰ ȴ.
  ׸,  ׵  ҷ ϴ ϱ⸸ ϸ ȴ.
  ũ  Ŭ̾Ʈ  Ŭ̾Ʈ  ̵ IP ּҿ
  ̸  ˸  ̰͵  ʿ䰡 .  
  Cluster of Workstations (COM)  ū   
   ũ̼ǵ  ϳ ӽ · ۵Ѵٴ ̴.  
   Ŭ̾Ʈ  Ű峪 ͸   ʰ, 
   α̳ ϴٸ  ͹̳θ ؼ   ִ.
    忡 CPU ޸  ȾƳִ ó
  ŬͿ ȾƳ  ִ CPU + ޸ Ű  ̶  
  ִ.

   Ư Ʈ Ű, ο Ʈũ ̳ ֽ
  Ŀ ģ͵ ƴϴ.    ǻͷ
   ǻ͵ Ŭ͸ ̴. ,   ,
    ϰ,  ϰ  Ŀ , PVM MPI ̺귯,
  ׸     Ʈ Ű  ̴. 
  ߰ Ʈ  ̸ ̿ؼ ǥ   Ͽ
   Ŭ ӽ   ִ.  Ʈũ  
    Ŀǻ͵  ְ, ּ /home  ý NFS
  Ͽ ϰ ְ,  (rsh)    ŭ ſϰ ְ
  ִٸ,  ϳ  2   ӽ  ִٰ
    ִ.

  2.3.  з

   ý۵ پ κе Ǿ Դ.   
    -Ϲ  ( ϳ ڰ   )
  鵵  Դ. ý۵ ٸ ŸԵ鸦 ϰų   
  ӽſ  ϱ ؼ, 츮    з
  Ѵ: CLASS I :  ӽ Ŭ Ϲ "Ư ֹ
  ƴ" κ ȴ. Ϲ "Ư ֹ ƴ" κе ϱ
   "Computer Shopper"  ˻縦  ̴. (Computer Shopper
  PC ý۵ ҿ  1ġ β  / Ѵ.)
     :

  CLASS I  ּ   / ε 
    ϵ鿡 ߰  ִ ǰ    ӽ Ѵ.
  CLASS I ý :
      ǰ ̿Ͽ   ִ ϵ (  , 
       )
     ϳ ϵ ȸ翡  
      commodity Ǵ ̹
     Ϲ ǥؾ ⺻   (SCSI, ̴, .)
  CLASS I ý :
     ְ  ؼ CLASS II ϵ 䱸
  CLASS II 
  CLASS II Ʈ ٸ  Computer Shopper  迡  
     ӽ̶ ȴ. ̴  ͸ ƴϴ. δ,  ӽ
    зϻ ̴.
  CLASS II ý :
     ſ   !
  CLASS II ý :
     ̹  
     ϳ ϵ ȸ翡 
     CLASS I ý۵麸 

  ϳ CLASS ٸ    ʿ . ̴  ʿ
    ̴. ̷ з ý  ý۵鿡  Ǹ
   ϰ ϱ ̴. "ý "κп  䱸
    ý   ϴµ   ̴.

  3.   

  3.1.   ó ̴°?

     ǻ  ϱ   
    ſ    ̴. ׷, κ ý
  ڵ鿡 ͼ ̾ Ѵ.  ,  ý۰ 
    ϳ   ŬƮ  н ǻ
   ̴.   ü ϸ,    USQ Faculty of
  Sciences ǻ ǿ ߿ DEC Alpah ϷѴٰ .
    ǻʹ beldin̶ ϰ Ŭ̾Ʈ ӽŵ scilab01,
  scilab02, scilab03 scilab20 ִٰ .  Ŭ̾Ʈ
  Digital Unix 4.0 ü  īǺ ġǾ, 
    (/home) /usr/local NFS (Network File System) ؼ
  Ǿ .   Ŭ̾Ʈ  /etc/hosts.equiv Ͽ 
  ٸ  Ŭ̾Ʈ  Ʈ ԵǾ ־, 
  Ŭ̾Ʈ ٸ    (rsh)   ִ.  ӽ
   ǿ  NIS μ, ٸ ӽŵ   
  Ѵ.   scilab02 ֿܼ ɾƼ, αϸ, װ 
  scilab15 Ѵ ص  ȯ  ȴ. ̷  
  Ŭ̾Ʈ Ȱ   .    ӽſ 
   ü ġǾ  Ǿְ,  /home
  /usr/local  Ѵ δ   Ŭ̾Ʈ NFS
  ļ    ֱ ̴. NIS NFS    
  ϸ NIS NFS HOWTO о ٶ.

  3.2.  ٸ 带  ̿ ΰ?

  ݺ 츮 ý      ְ, ǻ
  ǿ ִ ӽ 밡 CPU Ŭ   ִ 
  ãƺ .     ӽſ α   ְ, ׵
  Ȩ 丮 α׷   ,    
      Ҽ ִ.  , 츮 1 10 
       ҷ Ѵ. ̸ Ϻ 
  sigmasqrt("ҽ ڵ" κ ƶ)  α׷ ۼ
  Ѵ. 1 10    ϴ  ϸ:

  [jacek@beldin sigmasqrt]$ time ./sigmasqrt 1 10
    22.468278
  real    0m0.029s
    user    0m0.001s
    sys     0m0.024s

  time ɾ  ۾ ϴ wall-clock(ġ ð) Ȯ 
  ִ.  ̵,   ϵ   ð(0.029)
  ɸ. ׷, 1 1 000 000 000   
  ҷ ϴٸ  ɱ? ̰  wall-clock ð ٽ
  غ.

  [jacek@beldin sigmasqrt"]$ time ./sigmasqrt 1 1000000000
    21081851083600.559000
  real    16m45.937s
    user    16m43.527s
    sys     0m0.108s

   α׷  ð  . ׷,  ϸ  
  ϴ ð      °ϴ  ϰԵ ̴. 
   ٲپ wall-clock ð ּҷ ɱ? Ȯ   
    ϵ    ϵ  ǻ͵鿡 ķ
  ϴ ̴. 츮 ۾ ũ 20 κ , 
    ؼ  忡   ϰ ߴ.  尡
  ۾ ġ  ȯҶ, 20   ؼ  ظ
  Եȴ.  ϱ   μ   
  (named pipe) ״.

  [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  ð .  ð  Ҷ   鰡
   ġ    ϴ ð Ѵ.  ð
   20   ʾ, ſ  ð̹Ƿ  
  ִ. 츮 ķ  Կ ǹ̽  ־  
   ̴.      ȭǴ  ڵ
   ڴµ ִ.  ̿   ſ 幰 ٸ 
  (PVM PMI API) ༺ ̷µ  Ѵ.

  3.3.   COW  ٸ?

  տ  ǻ  Cluster of Workstations(COW) Ϻ
  ̴. ׷,  Ư¡ ̰ COW  ٸ? ˾
  . ׷ ٸ  , Ʈ ణ Ư Ư¡
  . ,  ŬͿ  Ŭ̾Ʈ  쿡
  Ű, 콺,  ī, ׸   .  , ܼ
   , Ǵ ø ֿܼ Ŭ̾Ʈ    
   ؼ ̷. Ŭ̾Ʈ 尡 Ŭ ܺ ӽ
  ϰų, Ŭ ܺ ӽ Ŭ̾Ʈ 带  
  ʿ䰡  , Ŭ̾Ʈ  10.0.0.0/8 ̳ 192.168.0.0/13
  ּ  ((RFC 1918 www.alternic.net/rfcs/1900/rfc1918.txt.html
  <http://www.alternic.net/rfcs/1900/rfc1918.txt.html>)  缳 IP
  ּҵ Ϲ  Ѵ.   ° Ʈũ ī ܺη
  Ǵ ӽ  常   ִ. ý ϴ 
  Ϲ   ֿܼ  ϰų,  ũ̼ǿ
  ڳ̳  α  带 Ѵ.   󿡼
  ڰ ڵ带 ϰ  ϰ, ŬͿ ִ  鿡
   Ű ȴ. κ  COW 㿡  ϴµ
  ǰϰ,   ָ Ǳ⵵ Ѵ. ׷Ƿ,
    CPU ð ̿ϴ ̴. ٸ  
  Ϲ   ϱ   ӽ̰ ̷  °
  ȭǾ. ,  off-the-shelf ҵ ̷ ַ
   Ʈ ϱ 빮 /  ſ . 
  ý  ִ  ڰ  Ŭ ٶ󺼶
  ϳ  ũ̼  ̴ Ư¡  ִ.

  4.  ý 

  ϵ ϱ  ý  غ  .
   ý  ϱ  ⺻ 2 ϵ
  δ:   峪 ǻ ; ǻ 
  ϱ . ϵ ϴµ ־  ġ
  Ʈ   ̺귯 API ̴. Ʈ 
  ڼ    Ĺݺο ٷ ϰڴ.    ׷
    ݸ鿡,  ý Ҷ   ߿ 
   ִ.   (Ǵ )  ٸ ؼ  
  ֱ⶧,    ϰڴ.(?)   Ǵ Ҹ а
   ,   پ Ѿ ,  ϵ  ϱ
   "ռ"̶  д  ϴ ̴.

  4.1.   꿡־  .

      信    ̴.  
  а  Ϻ ٷ  ̴.  ̳ʿ
  ڿ ߿      ̴. 
   ϰ Կ ־,   ־ 
     ߿ ϰ ǰ  ̴.  
  Ư ؼ  ǻʹ  ڵ  Ͽ
  ֱ  ɽ ϴ  䱸Ѵ.  Ϲ, 
   õ  ϱ  ͸ ƴϴ.  ,
   ϱ⸸ ϸ,    ̰ ǰ 
   ǰ   ̴.  ߿  μ ӵ
  " "ʹ ޶, " " μ ӵ ü ý
  ɰ ȿ ϴ  ߿ ϳ̴.

  4.2.    

     ¸  ִ.    
    غ  ߿ϴ.     
    ϰ, ӽ Ϸ ߿   
  ӽ Ͽ ġ Ѵ.

  4.2.1.     ̻ CPU ʿѰ?

     ߿ϴ. 8 CPU  μ
  Ѵٰ ϸ "over-kill"ó 鸮,  ׷.  ,
  ͺ̽,  α׷, Ǵ Ʈ ǥ ؼ
  Ѱ?  CPU ִٸ   ̴.  ùķ̼,
  ü ڵ, Ǵ Ÿ ̴ Ǯ׸ Ѱ? ̷ Ȳ
   CPU ¥  ȴ. ,  CPU   
  Ǯ  Ѵ:    : "   Ǵ  
  CPU ʿѰ,  986 ͺ- Ĩ ⸦ ٸ Ѵ."
  ̷ δ:

  1. Ƽ ׽ŷ  ü ,  ͵    
      ִ. ϳ ̻  CPU     ִ 
     "ļ" Ѵ.

  2. μ ӵ  18     Ǿ Դ. ׷,
     ޸ ӵ ϵ ũ ӵ Ѱ? ϰԵ ̷ ӵ
     CPU ӵ ŭ̳   ߴ. ָ   
     Ǯ׸ "out of cache memory access" ϵ ũ 
     䱸Ѵٴ ̴. ࿡ ־ ̷  ϱ ؼ 
      ȸϴ   ؾ Ѵ.

  3. ϱ⸦ μ ӵ 2005 ķδ 18  2 
       ̶ Ѵ. ̷  غϱؼ ſ
     ɰ ֹ ִ.

  4. Ǯ׸ ,   2 500   ӵ
      ų  ִ(    ). ̿   
     μ ϴ  Ұϴ. ǻ  ſ
      ֹ μ ϴ Ϳ  "commodity-off-the-
     shelf" CPU   ִ.

      Ѱ  ̳ I/O Ѱ  ؼ ӵ
     Ѵٸ,  غ  ٶϴ.   ٴ
       ϱ  ķ  ذϴ  ſ
     ߿  ؾ ̴. ̷  ޴뼮, , ׸
     Ǯ׸ ݿ  ȿ شȭ  ִ.   
     , ģ    þ ٿ ⸦  
     "  "  ٷ ڴ.

  4.2.2.   ó 

   ū  տ 8   Բ ִٰ . 
   ϳ CPṴ   ǻ α׷̶ .
  ǻ α׷ ũ( )   䱸 ũ̴. 
  analogy    Ҷ ǰ Ѵ.

  4.2.2.1.  Single-tasking Operating System

  ϳ   ̰() ѹ ϳ  óѴ.

  : MS DOS

  4.2.2.2.  Multi-tasking Operating System:

  ϳ    ,  ѹ  䱸 κи ó
  Ѱ   䱸 Ϻθ óѴ. ΰ    
  ó , ƹ ٿ ٸ,     ̴.

  : UNIX, NT using a single CPU

  4.2.2.3.  Multitasking Operating Systems with Multiple CPUs:

   Կ   밡 ִ.  䱸 ε 
  밡 óϰ    ̵ϰ ȴ. ̸ SMP (Symetric
  Multi- processing) Ѵ.      ,
  Ѱ  븦 ϴ      Ѵ.

  : UNIX and NT with multiple CPUs

  4.2.2.4.  Threads on a Multitasking Operating Systems extra CPUs

  䱸 ߿ "break-up"̶  ִٸ, ѹ   븦
  Ͽ    ̵  ִ. ,   븦
  ҷ " 䱸 "ð 鿩 ϱ   
    ִٰ . ̷δ  "n"   
     ִ(⼭ "n"   ). ⳳ  հ踦
   Ҷ, ٸ ""  븦 ų  Ͽ  
  ȯ Ѵ. ׵  ã  ٸ  븦 Ÿ ,
  ׵    óϱ⸦ Ѵ.(?) ׷ 󸶳  
  밡 迡 ־ ϰ  ҿ ġؾ ȿΰϴ ѿ
  εġ ȴ.  Amdals Ģ Ǯ׸ ӵ α׷ 
   Ϸ κ ؾ ȴٴ ̴.  :  忡
   CPU  UNIX  NT  ȭ α׷ .

  4.2.2.5.  Sending Messages on Multitasking Operating Systems with
  extra CPUs:

    ־,  ڿ 8 븦 ߰Ͽ. ο 
     ʹ  ֱ , ⳳ ̵ 
  հ    ؼ ȭ Ͽ Ѵ. ̷
  Ÿ ⳳ  ſ ־ ߰ (ð) 
  ,  Ѵٸ, ̰  ƴϴ.  븦 ʿ
   ŭ ¥ ū 䱸 ִٸ,  ð   븦
  Ͽ ӵ Ű  ߰ 尡 ߻  
  ؾ Ѵ.   쿡   Ʋ Ѱ 
  (Ǵ   )  ִٰ  ִ( 
  (Ǵ ) ȭ ؼ ؾ Ѵ).  뿡 ۾ϴ
   ⳳ ȭ ؼ  ⸦   ִٸ, ׵ 
  ֵ  .

  : One or several copies of UNIX or NT with extra CPUs
    on the same or different motherboard communicating through messages.

   ó Ȯ    ý   ǥ
  ϰ ִ. Ѱ CPU(Ǵ  ) ŵ ٸ ̴.

  4.3.     

        Ÿ ִ. ϰ 
   ,  ο õ ⺻  ϴµ
  ϴ.

  4.3.1.  ϵ 

     ϴ ⺻  ǻ:

  1. ޽  ϴ  ޸ ӽ( Ŭ͵)

  2. ޸𸮸  ϴ  ޸ ӽŵ(SMP ӽŵ) 
       ̴ Ͽ  CPU ӽ  ̱⿡
      ޸ ӽ̱⵵ ϴ. 4 way SMP ڽ  ޸ ӽ̰
        ִ. -  Ǯ׸  ޸𸮸
     ̿Ͽ Ѵ. ǻ 迡 Ѵٸ,  ޸ ӽŵ
     (  )   CPU ȮҼ ִ ݸ鿡 
     ޸ ӽŵ CPU ޸  Ͽ ̴.  ׷,
     "ȥ"  ޸ ӽ     ޸ ӽŵ
       ִ. ̷ ȥ ӽ ڿԴ Ѱ Ŵ SMP
     ӽ ̰, ۷ι ޸𸮴 α׷ӿ   
     CPU鿡 Ǿ ٸ Ͻõ  ֱ  NUMA (non
     uniform memory access) ӽ̶ Ѵ. ׷,  ܰ迡
     NUSA ӽ  ޸ Ǯ ̿ ޽ Ͽ߸
     Ѵ.  ,  ϴ  ҷμ SMP ӽ
      ϴ.   CLASS I  2  4  CPU
       ý  ϴµ ȴ.  
     ٷ  CPU  Ѵ. ڴ (
     ) Ư SMP μ Ư  Ҵ  . ׷,
     ڴ ΰ  μ  μ  
     ְ, Ѱ CPU ýۿ     ִ.

  4.3.2.  Ʈ API 

  α׷ ༺ ǥϴ ⺻ ǥ   :

  1. μ鰣 ޽  

  2. ü   ٸ  ,  2  а
     ȴ.  ǥ ϵ ʷ  ʿ ٴ
      ϴ  ߿ϴ.  ޽  Ѵٴ SMP, NUMA-SMP,
     ׸ ŬͿ  Ǿ ִ. - ߿ ȿ̰
     ޴뼺 ϰڰ ̴ ߿  ̴.(?)

  4.3.2.1.  ޽

  , ޽   ʱ  ޸  ǻ ο
  Դ.   ҿ ͸ ϴ ݸ鿡 ޽
   縦  . Ǿ  ִ ޽鿡 ð
  ӵ ޽  𵨿   ڰ ִ. ޽ 
  ϴ.  :  Ϳ  μ.  ޽  API
  PVMǴ MPI̴.  ޽   ޽ ȿ
  ȴ. Ѵ SMP ӽŰ ӽŵ Ŭ ̿  ۵Ѵ.
  SMP ӽſ ޽  μ    ݴ
   Ŭ͵   ߴٸ ӽŵ ߰ Ǯ׸ Ȯ
     ִ.

  4.3.2.2.  

   ü   ޸ SMP (Symmetrical Multiprocessing)
  α׷  κе ̿    ޸ Ű ȭ 
  ϰ  ϱ Ͽ ߵ.   ޸𸮸 Ͽ
   ϱ  SMP ý۵鿡  ۵Ѵ. ̷ 
  ڴ ۷ι Ϳ  ͸ иؾ Ѵ. ׷ ,
  α׷  ۵ ʴ´. ޽ ϸ, μ()
   ͸ ϱ    簡 ȴ. ׷,
  cache coherence ̶ 尡 ̰ Ǿ.  SMP 
   Ǵ NUMA  Ѵ.   ġ 
     ȾҾ. ޽  带  
   (syntron.com/ptools/ptools_pg.htm
  <http://syntron.com/ptools/ptools_pg.htm>), 尡 ޽ ̿Ͽ
  Ͽ   ȿ̰ ȴ.   ɿ  ¸
  ְ ִ:

              SMP ӽ       ӽŵ Ŭ     Ȯ强
                                
              -----------     -------------------  -----------
    ޽                    ſ          ſ 
      ſ              *             *

  * ġ NUMA  䱸.

  4.3.3.  Ǯ׸ 

   CPU ķ Ǯ׸ ϱ ؼ  κ Ȯ
  ɰ Ѵ. ǥ  CPU Ǯ׸  μ  CPU Ǯ׸
      ̴. α׷ ɰ  
  ,  ڵ "plug and play" ۵  ʴ´. Ǯ׸
    ڵ , ص ưų, ˰  
  Ұ 쵵   ִ.  Ʈ   ʿ
  ռ  ¤.
  4.4.  ռ

   꿡  κ   亯 : " 
  Ǯ׸ ޷ִ."    ,  ʿ䰡
  ִ°  ſ ߿  ϳ ִ -  Ļ .
  ̷ Ǹ        ϱ ؼ ̴:
  α׷  κ   Ǵ ̴.  α׷ 
  κе ׵  κ  ð и ó 
  ȴ.  ̷  ſ ߿ϴ. ֳϸ, ༺ α׷
  Ӽ̰ ȿ PARALLELISH ӽ Ӽ̱ ̴. ̻,
       ľ Ѵ.  ɿ  
   ӵ    ð̴. (, ð cache
  coherency  ȭ SMP Ǯ׸ ִ.)  Ϲ  
  ׽Ʈ  , , ׸ ð,   ʴ.
  ̷   "obviously parallel"̶ Ѵ. ٸ Ǯ׸
  Ŀ α׷  κ ׷ ϰ   ִ 
  ƴϱ⿡  α׷   ϴ  Ǳ⵵ Ѵ. ׷
   α׷ ٸ  κп    ߸
  ȴ. ª Ⱓ  ð   ð ؾ Ѵ.
  ׷ ,  κ   ȿ̴.  α׷
  ӹ α׷  κе ķ ؾ ϴ Ͱ  ƾ
    ϴ ̴.   Ǯ׸ ȿ   ִ.
   ׷ α׷ Ȳ  ְ ִ.

             | *
             | *
             | *
     % of    | *
     appli-  |  *
     cations |  *
             |  *
             |  *
             |    *
             |     *
             |      *
             |        ****
             |            ****
             |                ********************
             +-----------------------------------
              communication time/processing time

  Ϻ  ǻͿ /ó    ̰, 
  ̵ ķ  Ǿ .  ޸𸮸  ִ 
   ǻͿ  ׷ ִ ȿ  ȴ.
     ,  ȿ Ư  ǻͿ   ð
  ó ð  ̱    ׷ 
  ܵα ٶ. Ǯ׸  ǻ͵ ̿ ̵  ־
  , ٸ ÷ ȿ   .  Ϲ
  ̽İϸ鼭 ȿ  α׷  ʴ´.

   ׷   ٸ Ѱ   ִ.   ȿ
  /ó  ϴ ̱ ,     
  κи (,   Ǵ ó    ϳ) ȭŰ
  κ  Ư α׷   ̶ 븦 ׻ 
   ִ  ƴϴٶ ̴. żӵ   ¿ ó
  ӵ ȭ α׷ ġ     ִ. ,
  żӵ ״ ä CPU ӵ ι Ǵ  Ų 
      ȿ̾ α׷ κ 
  ϵ ϴ   ȿ 쵵 ִ. ڸ 
  Ľκ   Ű  ӵ   
  ִٴ ̴.   ư, ȭϸ ȿ κ ļϰ
  Ǹ ᱹ α׷ ְ ӵ  ϰ ȴ. ̷ , 
   μ ߰Ͽ ļŰ  α׷ ӵ
   ȴ.( α׷ ְ ӵ  ϱ ؼ
  ο CPU ߰ ƾ Ѵ.)  ׷,   ϵ
  ȯ ؾ   ƾ  ˰ ־ Ѵ. ׷
  ,  ӽ ռ Ǯ׸ ´ ؾ ʿ䰡 ִ.
  CPU ӵ, Ϸ, ޽  API, Ʈũ   
   캼 ʿ䰡 ִ. Ǯ׸   ü ̾߱⸦
  ִ  ƴ ϶. α׷ ߿ κ   ,
   κп       . ־ ý۴ؼ, 
   ڵ ȿ ȭ  .   Ϲ ظ
   .  "ȭ α׷"̶ , δ α׷
  CONCURRENT κθ ġϰ ִ. ȿ PARALLELIZATION ӽ
  Ӽ̴.

  4.5.   Ʈ ۼ 

    ʿѴٰ ߰  ϰ ϱ⸦
  Ѵٸ,   ǵ       .
  Ϲ    ؾ Ѵ:

  1. CLASS I  غ Ŀ  Ǯ׸ װͿ °
     ۼ . ƴϸ  ۵ϴ  Ǯ׸ ຸ
     (׷ տ ߴ ̵ ȿ  ض)

  2.   Ǯ׸ 캸 ʿ ϴ ϵ
     Ʈ ¿  򰡸 غƶ.

     ̷  ,   ȿ   캼 ʿ䰡
     ִ.  Ϲ     غ ʿ䰡 ִ:

  1. α׷  κ 

  2.  ȿ 

  3. α׷  κ  ! ݺ ̵ 캸.

  4.5.1.  α׷  κ 

   ܰ ϰ "α׷ ȭϱ"̶ ϱ⵵ Ѵ.
  Parallelization   ° ܰ迡  ̴.  ܰ迡
     ʿ䰡 ִ.  > 忡, Ǯ׸ 
    ¸ ̰ ִ:  (number crunching) I/O
  (ͺ̽).  쿡  I/O ༺ orthogonal,
  Ǯ׸  ٸ 䱸Ѵ.  Ǯ׸   м  
  ִ  ִ. ̵ κ  Ʈ  ۼǾ.
  Ʈ ϴ ֵ   : κ crunching Ǯ׸
  Ʈ ۼǾ мϱⰡ .  ٸ,  ܰ 
  Ǯ׸  ټ  ̴.

  4.5.2.   ȿ 

    ,  ġų  Ŀ  
   ؾ ̴. Ư Ǯ׸ ϰ  CPU Ѱ(
  ) ϵ ũ Ѱ(I/O ) غƶ.  䱸
    䱸  ſ پϴ.  ,  Ѱ迡
    ſ  CPU    ð Ʈũ
  ʿ Ѵ. ݸ鿡 I/O Ѱ    CPU  ̴ 
  ȿ ۵ Ѵ.  ̷ ǰ  κ  
  Ѵ. ֳϸ,  δ   μ ׻ 
  ٶ  ̴.   Ѱ谡 ٸ ´  ,
   ý 뿡 ־  ִ. I/O Ѱ  ؼ 
  ˷ Ģ(Eadline-Dekov Ģ̶ Ҹ) ִµ   ȴ: 
    CPU    ־    ǻͿ, 
  μ(׸ Ƹ μ  Ʈũ ̴) I/O
   Ǯ׸ ؼ     ̴.  ̷ Ģ 
    ߿  , ̰ ִٸ Performance
  Considerations for I/O-Dominant Applications on Parallel Computers
  (Postscript format 109K ) (www.plogic.com/pub/papers/exs-pap6.ps
  <ftp://www.plogic.com/pub/papers/exs-pap6.ps>)  ޾Ƽ 
  ȴ.   Ǯ׸  ¸   ߾ٸ,
  ķ   󸶳 ȿ ִ  ʿ䰡 ִ. Ʈ
     "Ʈ" ƶ.     
   ܰ踦 ġ  ؾ ̴.  Ѱ  д
  ϰ ʴ   ߴٸ, parallelization 
   Ŀڰ Ǿ Ѵ.(?) ׷ ؾ   16 ɸ 32
  κ иϿٸ, ׸  κ   ϴµ  
  ð ɸٸ,        ̴. ϱ
   ȯ  ̴.

  4.5.3.  α׷  κ 

  α׷  κ ϱ    ִ:

  1.   

  2. Ͻ  

     ̵  ֿ   ļ ڿ  
     ǰ, Ͻ ļ Ϸ   ȴ.

  4.5.3.1.   

  ⺻   ǻ͸  ر׸ Ư κ ڰ
  ؾ߸ Ѵ. ڴ ݵ PVM̳ MPI ߰ϰų POSIX
  带 ϴ 带 ߰ؾѴ. (׷  صξ
     SMP  ̷ ̵  .)   
   Ⱑ ſ   ִ.  ڰ ǥ
  Ʈ 77̳ C/C++ ر׸  Լ Ҹ  ؾ
  Ѵ.  MPI ̺귯  ǥ      ִ
   Լ  ִ.(, ִ/ Լ).  ߰
   ǻ   ǥ ̺귯 ̿ϴ ͵ ϴ.
  ׷, ָ  ̵ ȿ ̴.  
  ؼ   cruching ڵ FORTRAN ۼǾ  ִ.
  ̷ ؼ FORTRAN  꿡 ־   
  (, ̺귯, )  ִ.  C ϰ ִ
   α׷ӵ C  Ŵٴ   FORTRAN
  Ǯ׸ C ۼϰ ִ. ̷   ӽ ڵ忡 C
     ,  ֿ   ִ. C
      ϴµ ־ ص ư
  .  ڵ м ص ƴ.  Ʈ α׷
   ְ  ķ óҷ Ѵٸ, C ٲ .

  4.5.3.2.  Ͻ 

  Ͻ  ڰ ϱ  ȭ  Ϻ(Ǵ )
  ؾ Ѵ. Ʈ 90   Ʈ(High Performance
  FORTRAN: HPF), Bluk Bynchronous Parallel (BSP), ׸ ٸ 
  ü ӵ  ߿ ִ.  Ͻ  ڰ ׵
  Ǯ׸       䱸, Ϸ
     ķ ϴ°     
  ̴.   ̵ ȿ  ܰ踦 , 
  ǻͿ     ϴ "  " 
  ƴϴ.

  5.   ڿ

  5.1.  

   ϸ Ʈ. beowulf-request@cesdis.gsfc.nasa.gov
  <mailto:beowulf-request@cesdis.gsfc.nasa.gov> ޽ subscribe
  ־    ȴ.   Ȩ www.beowulf.org
  <http://www.beowulf.org>

  ?  Extreme Linux www.extremelinux.org <http://www.extremelinux.org>

  ?  Extreme Linux Software from Red Hat www.redhat.com/extreme
  <http://www.redhat.com/extreme>

  5.2.  

   HOWTO ֱ  ?  The latest version of the Beowulf HOWTO
  www.sci.usq.edu.au/staff/jacek/beowulf <
  http://www.sci.usq.edu.au/staff/jacek/beowulf>

  / ý  ?  Building a Beowulf System
  www.cacr.caltech.edu/beowulf/tutorial/building.html
  <http://www.cacr.caltech.edu/beowulf/tutorial/building.html>

  Jacek   ?  Jacek's Beowulf Links
  www.sci.usq.edu.au/staff/jacek/beowulf
  <http://www.sci.usq.edu.au/staff/jacek/beowulf>

   ġ  HOWTO (DRAFT) ?  Beowulf Installation and
  Administration HOWTO (DRAFT) www.sci.usq.edu.au/staff/jacek/beowulf
  <http://www.sci.usq.edu.au/staff/jacek/beowulf>

    ó HOWTO ?  Linux Parallel Processing HOWTO
  yara.ecn.purdue.edu/~pplinux/PPHOWTO/pphowto.html
  <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.

  www.beowulf.org/papers/HPDC96/hpdc96.html <
  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.

  www.beowulf.org/papers/AA97/aa97.ps
  <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.

  www.beowulf.org/papers/IPPS96/ipps96.html
  <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.

  www.beowulf.org/papers/HPDC95/hpdc95.html
  <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.

  www.beowulf.org/papers/ICPP95/icpp95.html <
  http://www.beowulf.org/papers/ICPP95/icpp95.html>

  ?   Ʈ ִ 

  www.beowulf.org/papers/papers.html
  <http://www.beowulf.org/papers/papers.html>

  5.4.  Ʈ

  ?  PVM - Parallel Virtual Machine www.epm.ornl.gov/pvm/pvm_home.html
  <http://www.epm.ornl.gov/pvm/pvm_home.html>

  ?  LAM/MPI (Local Area Multicomputer / Message Passing Interface)
  www.mpi.nd.edu/lam < http://www.mpi.nd.edu/lam>

  ?  BERT77 - FORTRAN conversion tool  <http://www.plogic.com/bert.html>
   Ʈ  ִ  Ʈ
  beowulf.gsfc.nasa.gov/software/software.html <
  http://beowulf.gsfc.nasa.gov/software/software.html>

  Jacek -ƿ ?  ftp.sci.usq.edu.au/pub/jacek/beowulf-utils
  <ftp://ftp.sci.usq.edu.au/pub/jacek/beowulf-utils>

  bWatch - Ŭ   ?  bWatch - cluster monitoring tool
  www.sci.usq.edu.au/staff/jacek/bWatch
  <http://www.sci.usq.edu.au/staff/jacek/bWatch>

  5.5.   ӽŵ

  ?  ƹ߷ 140  μ, 36GB ޸𸮷  Ǿ, Top 150
  Ͽ 144° ϸ, Ƹ 迡    ӽ
  ̴.  swift.lanl.gov/avalon/ <http://swift.lanl.gov/avalon/>

  ?  MPACTR 14 4 CPU Ƽ  200 14GM ޸𸮷 ̷.
  megalon.ca.sandia.gov/description.html
  <http://megalon.ca.sandia.gov/description.html>

  theHIVE ٸ    ǻ̴. theHIVE 64 
  128 CPU ӽŰ 4GB ޸𸮷 .
  megalon.ca.sandia.gov/description.html
  <http://megalon.ca.sandia.gov/description.html>

  MAGI Ŭ - ſ ִ Ʈ   .
  noel.feld.cvut.cz/magi/ <http://noel.feld.cvut.cz/magi/>

  5.6.  ٸ ִ Ʈ

  ?  SMP Linuxwww.linux.org.uk/SMP/title.html
  <http://www.linux.org.uk/SMP/title.html> ?  Paralogic - Buy a
  Beowulfwww.plogic.com <http://www.plogic.com>

  5.7.  

  ?   -   legends.dm.net/beowulf/index.html
  <http://legends.dm.net/beowulf/index.html>

  ?    www.lnstar.com/literature/beowulf/beowulf.html
  <http://www.lnstar.com/literature/beowulf/beowulf.html>
  6.  ر׸

  6.1.  sum.c

  /* Jacek Radajewski jacek@usq.edu.au <mailto: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 <mailto: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
  <mailto: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&

