// Á¦ ¸ñ: MPICH 1.2.5 ¼³Ä¡
// ÀÛ¼ºÀÚ: ±è¿µ´ë( http://www.howto.pe.kr )
º´·Ä ½Ã½ºÅÛÀÇ µÎ Å« ºÎ·ù´Â MPP(massively parallel processing)¿Í SMP (symmetric multiprocessing) ·Î
³ª´ ¼ö ÀÖÀ¸¸ç ¿©±â¼ MPP¶õ ÇÁ·Î±×·¥À» ¿©·¯ ºÎºÐÀ¸·Î ³ª´©¾î ¿©·¯ ÇÁ·Î¼¼¼°¡ °¢ ºÎºÐÀ» µ¿½Ã¿¡ ¼öÇà½ÃŰ´Â
°ÍÀ» ¸»ÇÑ´Ù. À̶§ °¢ ÇÁ·Î¼¼¼´Â °¢±â ¿î¿µÃ¼°è¿Í ¸Þ¸ð¸®¸¦ µû·Î °¡Áö°í ÀÏÀ» ¼öÇàÇÏ¸ç °¢ ÇÁ·Î¼¼¼°£¿¡´Â
¸Þ½ÃÁö ÆÐ½Ì°ú °°Àº ±â¹ýÀ» ÀÌ¿ëÇÏ¿© Åë½ÅÀ» ÇÑ´Ù. µû¶ó¼ ÇϳªÀÇ ÇÁ·Î±×·¥À» ¼öÇàÇϴµ¥ ¼ö ¹é ȤÀº ¼ö õ°³ÀÇ
ÇÁ·Î¼¼¼¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. MPPÀÇ ¼º´ÉÀ» Á¦´ë·Î ¹ßÈÖÇÏ·Á¸é, ÇÁ·Î±×·¥À» µ¶¸³ÀûÀ¸·Î ¼öÇàµÇ´Â ¿©·¯ ºÎºÐÀ¸·Î ³ª´©°í,
°¢ ÇÁ·Î¼¼¼°¡ ´Ù¸¥ ÇÁ·Î¼¼¼¿Í Á¤º¸¸¦ ÁÖ°í¹Þ´Â ÀÏÀ» ÃÖ´ëÇÑ È¿À²ÀûÀ¸·Î ÇÒ ¼ö ÀÖ´Â Çϵå¿þ¾î ±¸Á¶¿Í, À̸¦ µÞ¹ÞħÇÏ´Â
¿î¿µÃ¼°èÀÇ ¼º´ÉÀÌ Àß Á¶È¸¦ ÀÌ·ç¾î¾ß ÇÑ´Ù.
MPP ¸Þ½ÃÁö ÆÐ½ÌÀ» À§Çؼ PVM(Parallel Virtual Machine) À̳ª MPI(Message Passing Interface) API¸¦ »ç¿ëÇϴµ¥
PVM°ú MPI ¸ðµÎ ¸Þ¼¼Áö Àü´ÞÀ» µµ¿ÍÁÖ´Â Àû¿ëÀÌ °£ÆíÇÑ ¼ÒÇÁÆ®¿þ¾îÀÌ´Ù. ¿ª»çÀûÀ¸·Î º¼ ¶§ PVMÀÌ ¸ÕÀú °³¹ß µÇ¾ú°í
¿öÅ©½ºÅ×À̼ÇÀÇ ³×Æ®¿÷¿¡ ¸Â°Ô ¼³°èµÇ¾ú´Ù.
PVM Àº ºÐ»ê ÀúÀåÀ» Çϰųª ÇÏÁö ¾Ê°Å³ª¿¡ °ü°è¾øÀÌ ¸¹Àº º´·Ä ¼öÆÛÄÄÇ»ÅÍ¿¡ Àû¿ëµÇ¾îÁ® ¿Ô´Ù.
MPI´Â ±×¿Í´Â ´Þ¸® ¸¹Àº Çϵå¿þ¾î ÆÇ¸ÅÀÚ¿¡ ÀÇÇØ Áö¿øµÇ°í ÀÖÀ¸¸ç PVMº¸´Ù ´õ ¸¹Àº ±â´ÉÀ» Á¦°øÇÑ´Ù.
¸¹Àº °æ¿ì PVM°ú MPI µÑ Áß ¾î´ÀÇϳª¸¦ ½á¾ßÇÑ´Ù´Â ±ÔÄ¢Àº ¾ø´Ù. MPIÀÇ °æ¿ì Ç¥ÁØÀÌ Á¤ÇØÁ® Àֱ⠶§¹®¿¡ ¸¹Àº »ç¶÷µéÀÌ
MPI¸¦ ¼±È£ÇÑ´Ù. ÇÏÁö¸¸ PVMµµ »ç¿ëµÇ°í ÀÖ´Ù. ÀÌ ¹®¼´Â °¢ ¼Ò½º¿¡ °üÇÑ Á¤º¸¸¦ Æ÷ÇÔÇϰí ÀÖ´Ù.
MPI:
ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â µÎ°¡ÁöÀÇ MPI ¹öÁ¯ÀÌ ÀÖ´Ù.
MPICH(MPI Chameleon):
http://www-unix.mcs.anl.gov/mpi/mpich/
LAM-MPI:
http://www.mpi.nd.edu/lam/
PVM:
http://www.epm.ornl.gov/pvm/
1.MPICH ¹× ÆÐÄ¡ÆÄÀÏ ´Ù¿î¹Þ±â
ÀÌ ¼³Ä¡¹®¼´Â Linux(Redhat 7.3)¿¡¼ MPICH¸¦ ¼³Ä¡ÇÏ´Â °úÁ¤À» ´Ù·é´Ù(Windows NT/2000 ¹öÀüµµ ÀÖ´Ù)
¼³Ä¡ÀÛ¾÷Àº root ·Î ¿¹Á¦ ½ÇÇàÀº ÀÏ¹Ý °èÁ¤À¸·Î ÀÛ¾÷ÇÑ´Ù
http://www.mcs.anl.gov/mpi/mpich/download.html ¶Ç´Â
ftp://ftp.mcs.anl.gov/pub/mpi ¿¡¼ mpich.tar.gz ¸¦ ´Ù¿î¹Þ´Â´Ù
¶ÇÇÑ °ü·ÃµÈ patch fileÀº ¸ðµÎ ¹Þµµ·Ï ÇÑ´Ù(ÀÌ¹Ì ÆÐÄ¡°¡ Àû¿ëµÈ mpich.tar.gz À» ¹ÞÀº °æ¿ì´Â ÆÐÄ¡°¡ ÇÊ¿ä¾ø´Ù)
MPICHÀÇ °æ¿ì¿¡´Â LAM°ú ºñ±³ÇÏ¿© ´Ù¼öÀÇ platformÀ» Áö¿øÇÑ´Ù. À̰ÍÀÌ ÀåÁ¡ÀÌÀÚ µ¿½Ã¿¡ ´ÜÁ¡ÀÌ µÇ¾î, platform ¿¡
µû¶ó 4~5°³ Á¤µµÀÇ patch°¡ ÇÊ¿äÇÒ ¼öµµ ÀÖ´Ù. patch fileÀº µ¿ÀÏÇÑ site¿¡¼ È®º¸ÇÒ ¼ö ÀÖÀ¸¸ç, version 1.2.5ÀÇ
°æ¿ì Linux»ó¿¡¼ 7528, 7633, 7629, 7650 ÀÇ 4°³ÀÇ patch file ÀÌ ÀÖ´Ù.
patch file µéÀº ftp://ftp.mcs.anl.gov/pub/mpi/patch/1.2.5 ¿¡¼ ´Ù¿î ¹ÞÀ» ¼ö ÀÖ´Ù
2.´Ù¿î¹ÞÀº ÆÄÀÏÀ» unpack ÇØ¾ß Çϴµ¥ NFS(network file system) ÆÄƼ¼Ç¿¡ Ç®Áö¸»°í
·ÎÄ÷Π¸¶¿îÆ®µÈ ÆÄƼ¼Ç(¿¹, /tmp or /sandbox)¿¡¼ Ç®¸ç ÇØ´ç ÆÄƼ¼Ç¿¡ ÃÖ¼Ò 100MB ÀÌ»óÀÇ °¡¿ë ¿ë·®ÀÌ
ÀÖ¾î¾ß ÇÑ´Ù(³ªÁß¿¡ make install ÇÏ°Ô µÇ¸é º¸Åë /usr/local/mpich ¿¡ ¼³Ä¡µÈ´Ù)
% cd /tmp
% tar zxovf mpich.tar.gz
À̶§ »ý¼ºµÈ mpich directory·Î À§ÀÇ ´Ù¿î¹ÞÀº 4°³ÀÇ patch fileÀ» copyÇϰí, ´ÙÀ½ÀÇ ¸í·É¿¡ ÀÇÇØ
patch fileÀ» ÀüºÎ patch ÇÑ´Ù(ÀÌ¹Ì ÆÐÄ¡°¡ Àû¿ëµÈ mpich.tar.gz À» ¹ÞÀº °æ¿ì´Â ÆÐÄ¡°¡ ÇÊ¿ä¾ø´Ù).
% patch -p0 < 7528
% patch -p0 < 7633
% patch -p0 < 7629
% patch -p0 < 7650
¾Æ·¡´Â unpackÇÑ »óÅÂÀÇ µð·ºÅ丮¿Í ÆÄÀϵéÀÌ´Ù

3.configure
¿©±â¼ ¿ì¼± ./configure --help¿¡ ÀÇÇØ ¿©·¯ optionÀ» È®ÀÎÇÒ ¼ö Àִµ¥, option ¾øÀÌ default¸¸À¸·Î
configÇØµµ Å©°Ô ¹®Á¦´Â ¾ø´Ù. ´Ù¸¸ °æ¿ì¿¡ µû¶ó¼ Ưº°ÇÑ compiler¸¦ »ç¿ëÇÒ °æ¿ì°¡ Àִµ¥,
À̶§´Â -fc, -cc, -f90 -c++ µîÀÇ optionÀ¸·Î ÁöÁ¤ÇØÁØ´Ù.
±âº» device(ÀÌ ¿ë¾î´Â MPICH ȨÆäÀÌÁö¸¦ ÂüÁ¶)·Î ÇÒ °æ¿ì´Â ¾Æ·¡¿Í °°ÀÌ ½ÇÇàÇϰí
% ./configure --prefix=¼³Ä¡µð·ºÅ丮
Ȥ½Ã ÀÚµ¿À¸·Î ȯ°æÀ» ¼±ÅÃÇØÁֽà ¸øÇÑ´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÇØº»´Ù
% ./configure --with-device=ch_p4 --with-arch=LINUX --prefix=¼³Ä¡µð·ºÅ丮

¾Æ·¡¿Í °°Àº ¸Þ½ÃÁö°¡ ³ª¿À¸é configure°¡ Á¦´ë·Î ½ÇÇàµÈ °ÍÀÌ´Ù
...
creating Makefile
creating mpptestconf.h
creating mpid/ch_p4/Makefile
creating mpid/tests/Makefile
creating mpichconf.h
mpichconf.h is unchanged
*# --->
*# You should register your copy of MPICH with us by sending mail
*# to majordomo@mcs.anl.gov containing the message
*# subscribe mpi-users
*# This will allow us to notify you of new releases of MPICH.
*#
*# You can also check the MPICH home page at
*# http://www.mcs.anl.gov/mpi/mpich
*# ---<
Configuration completed.
4.make
½Ã½ºÅÛ ¼º´É¿¡ µû¶ó ¼öºÐ¿¡¼ ¼ö½Ã°£ ¼Ò¿äµÈ´Ù
% make
½ÇÇàÀÌ ¿Ï·áµÈ ÈÄ ¸Þ½ÃÁöÀÇ ¸Ç ¾Æ·¡ ºÎºÐ¿¡ ´ÙÀ½°ú °°Àº ¸Þ½ÃÁö°¡ ³ª¿À¸é Á¦´ë·Î ½ÇÇØµÈ °ÍÀÌ´Ù
Completed build of MPI. Check the output for errors Also try executing 'make
testing' in examples/test (This relies on mpirun, which currently works for
many but not all systems. For workstation networks, mpirun requires that you
first setup a "machines" file listing the machines available; this is covered
in the installation manual.)
5.·ÎÄÿ¡¼ ¿¹Á¦ µ¹·Áº¸±â
make install ÇϱâÀü¿¡ ·ÎÄà ¸Ó½Å¿¡¼ 4°³ÀÇ ÇÁ·Î¼¼½º·Î º´·Ä ½ÇÇàµÇ´ÂÁö ¾Æ·¡Ã³·³ Å×½ºÆ®ÇÒ ¼ö ÀÖ´Ù
% cd examples/basic
% make cpi
% ../../bin/mpirun -np 4 cpi

¸¸¾à ½ÇÇà½Ã ´ÙÀ½°ú °°Àº ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸¸³´Ù¸é Á¶Ä¡ÇÑ´Ù
.Connection Refused. -> rsh µ¥¸óÀÌ ½ÇÇà°¡´ÉÇÑÁö, ¹æÈº®ÀÌ rsh ¸¦ ¸·Áö´Â ¾Ê´ÂÁö ~/.rhosts À̳ª
/etc/hosts.equiv µîµîÀÇ rsh °ü·Ã ȯ°æÀ» ÀûÀýÈ÷ ¼³Á¤ÇÑ´Ù
.Permission denied. -> rsh ¸Þ¸óÀº ½ÇÇàÁßÀ̳ª rsh °ü·Ã ȯ°æÀÌ ÀûÀýÇÏÁö ¾ÊÀ»¶§ ¹ß»ýÇÑ´Ù
6.make install
configure ¼³Á¤½Ã --prefix ¿É¼ÇÀ¸·Î ÁöÁ¤ÇÑ ¼³Ä¡µð·ºÅ丮¿¡ ¼³Ä¡¸¦ ½ÃÀÛÇÑ´Ù
% make install
Á¤È®È÷ ¼³Ä¡°¡ µÇ¾úÀ¸¸é ¾Æ·¡¿Í °°Àº ¸Þ½ÃÁö°¡ º¸ÀδÙ

7.½ÇÁ¦ º´·Ä ȯ°æ¿¡¼ ¿¹Á¦ µ¹·Áº¸±â
½ÇÁ¦ º´·Ä ȯ°æ¿¡¼ MPIÀÇ ½ÇÇàÀº ÀÏ¹Ý °èÁ¤À¸·Î Çϵµ·Ï ÇÑ´Ù
¸ÕÀú MPI °¡ ¼³Ä¡µÈ µð·ºÅ丮ÀÇ share/machines.LINUX ÆÄÀÏÀ» ¿¾î MPI º´·Ä °è»ê¿¡ Âü¿©Çϴ ȣ½ºÆ®µéÀ»
Â÷·Ê·Î µî·ÏÇÑ´Ù(¿©±â¼´Â myhome °ú slave ¶ó´Â µÎ´ëÀÇ È¯°æÀ¸·Î Å×½ºÆ® ÇÏ¿´À¸¸ç ÀÚ±â ÀÚ½ÅÀº µî·ÏÇÏÁö
¾Ê´Â´Ù. ¿©±â¼´Â slave ¶ó´Â È£½ºÆ®¿¡¼ mpirun À» ÇÏ¿´´Ù)

¶ÇÇÑ MPI´Â rsh¸¦ ÀÌ¿ëÇϹǷΠÀϹݰèÁ¤ÀÇ È¨µð·ºÅ丮¿¡ .rhosts ÆÄÀÏÀ» 600 ÆÄÀÏ ±ÇÇÑÀ¸·Î ¸¸µç ÈÄ
MPI º´·Ä °è»ê¿¡ Âü¿©Çϴ ȣ½ºÆ®µé°ú °èÁ¤(µ¿ÀÏÇÑ °èÁ¤)µéÀ» µî·ÏÇÑ´Ù

MPI °¡ ¼³Ä¡µÈ µð·ºÅ丮ÀÇ ¿¹Á¦ Æú´õ¿¡¼ cpi¸¦ ½ÇÇàÇØ º»´Ù
% cd examples/basic
% make cpi
% ../../bin/mpirun -np 2 cpi
¹°·Ð rsh ¸¦ ÀÌ¿ëÇϹÇÈ£ ¸ðµç È£½ºÆ®ÀÇ µ¿ÀÏÇÑ °èÁ¤ÀÇ µ¿ÀÏÇÑ µð·ºÅ丮¿¡ cpi ½ÇÇàÆÄÀÏÀÌ ÀÌ¹Ì º¹»çµÇ¾î
ÀÖ¾î¾ß ÇÑ´Ù. ¾Æ·¡´Â ½ÇÇàÇÑ °á°úÀÌ´Ù

|
|