|
|
|
C++ ¸ÖƼ½º·¹µù Á¤º¹Çϱâ : °ß°íÇϸ鼵µ º´·Ä¼º°ú º´Ç༺À» °¡Áö´Â ¾ÖÇø®ÄÉÀÌ¼Ç ÀÛ¼º¹ý
|
|
|
¸¶¾ß Æ÷½¬, ±èÁ¡°©
¤Ó
¿¡ÀÌÄÜÃâÆÇ
¤Ó
Mastering C++ Multithreading
|
|
|
|
- Á¦ÈÞ¸ô ÁÖ¹® ½Ã °í°´º¸»ó, ÀϺΠÀ̺¥Æ® Âü¿© ¹× ÁõÁ¤Ç° ÁõÁ¤, ÇÏ·ç/´çÀÏ ¹è¼Û¿¡¼ Á¦¿ÜµÇ¹Ç·Î Âü°í ¹Ù¶ø´Ï´Ù.
-
-
-
¸ÖƼ½º·¹µå¿Í º´Ç༺¿¡ ´ëÇÑ ±íÀÌ ÀÖ´Â ³íÀÇ¿Í ±× ±¸Çö ¹æ¹ýÀ» ´Ù·ç°í, ¿øÀÚÀû µ¿ÀÛÀÇ º»ÁúÀ» ÀÌÇØÇÏ°í ÄÚµå ÃÖÀûÈ¿¡ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¹è¿î´Ù. ºÐ»ê ÄÄÇ»Æà ȯ°æ¿¡¼ ¸ÖƼ½º·¹µå ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÇöÇÏ°í ¸ÖƼ½º·¹µùÀ» äÅÃÇÑ C++ ±â¹ÝÀÇ GPGPU ¾ÖÇø®ÄÉÀÌ¼Ç ¼³°è ¹æ¹ýÀ» ÀÍÈù´Ù.
-
-
¡Ú ÀÌ Ã¥¿¡¼ ´Ù·ç´Â ³»¿ë ¡Ú
¡á ´Ù¾çÇÑ ¿î¿µÃ¼Á¦°¡ ÇöÀç ¸ÖƼ½º·¹µùÀ» ±¸ÇöÇÏ´Â ¹æ½Ä
¡á »õ·Î¿î ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼³°è ½Ã ÃÖÀûÀÇ ¸ÖƼ½º·¹µù API ¼±ÅÃ
¡á ¹ÂÅؽº¿Í ½ºÇɶôÀÇ »ç¿ë, ±× ¿ÜÀÇ µ¿±âÈ °³³ä ÆľÇ
¡á ½º·¹µå °£ÀÇ ¾ÈÀüÇÑ µ¥ÀÌÅÍ Àü´Þ ¹æ¹ý
¡á ´Ù¾çÇÑ C++ ÅøüÀÎÀÌ Á¦°øÇÏ´Â API Áö¿ø ¼öÁØ
¡á ¸ÖƼ½º·¹µå ÄÚµåÀÇ ÀϹÝÀûÀÎ ¹®Á¦ ÇØ°á ¹× ºüÁö±â ½¬¿î ÇÔÁ¤ ÆľÇ
¡á ¿øÀÚÀû µ¿ÀÛÀÇ º»ÁúÀ» ÀÌÇØÇÏ°í À̵éÀ» ÄÚµå ÃÖÀûÈ¿¡ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ý
¡á ºÐ»ê ÄÄÇ»Æà ȯ°æ¿¡¼ÀÇ ¸ÖƼ½º·¹µå ¾ÖÇø®ÄÉÀÌ¼Ç ±¸Çö
¡á ¸ÖƼ½º·¹µùÀ» äÅÃÇÑ C++ ±â¹ÝÀÇ GPGPU ¾ÖÇø®ÄÉÀÌ¼Ç ¼³°è
¡Ú ÀÌ Ã¥ÀÇ ´ë»ó µ¶ÀÚ ¡Ú
¸ÖƼ½º·¹µù°ú º´ÇàÀû 󸮿¡ ´ëÇÑ Áö½ÄÀ» ³ÐÈ÷°íÀÚ ÇÏ´Â C++ Áß±Þ °³¹ßÀÚ¸¦ ´ë»óÀ¸·Î ÇÑ´Ù. ÀÌ Ã¥À» º¸·Á¸é ¸ÖƼ½º·¹µù¿¡ ´ëÇÑ ±âº»Àû °æÇèÀÌ ÀÖ¾î¾ß ÇÏ°í ¸í·ÉÇà¿¡¼ C++ °³¹ß ÅøüÀÎÀ» ´Ù·ç´Â µ¥ Àͼ÷ÇØ¾ß ÇÑ´Ù.
¡Ú ÀÌ Ã¥ÀÇ ±¸¼º ¡Ú
1Àå, ¡®¸ÖƼ½º·¹µù °ËÅ䡯¿¡¼´Â C++¿¡¼ÀÇ ¸ÖƼ½º·¹µùÀ» ¿ä¾àÇÏ°í ¼÷ÁöÇÏ°í ÀÖ¾î¾ß ÇÒ °³³äÀ» »ìÆ캻´Ù. C++ÀÇ 2011³â °³Á¤¾È¿¡ Ãß°¡µÈ ³×ÀÌƼºê ½º·¹µù Áö¿øÀ» »ç¿ëÇÏ´Â ±âº» ¸ÖƼ½º·¹µù ¿¹Á¦¸¦ »ìÆ캻´Ù.
2Àå, ¡®ÇÁ·Î¼¼¼¿Í OS¿¡¼ÀÇ ¸ÖƼ½º·¹µù ±¸Çö¡¯¿¡¼´Â 1Àå¿¡¼ ³íÀÇÇÑ Çϵå¿þ¾î ±¸Çö¿¡¼ Á¦°øµÇ´Â ±âº» ±â´ÉÀ» ¹ÙÅÁÀ¸·Î, OS°¡ ¾î¶»°Ô ÀÌµé ±â´ÉÀ» »ç¿ëÇØ ¾ÖÇø®ÄÉÀ̼ǿ¡¼ À̵éÀ» ÀÌ¿ëÇÏ´ÂÁö ¾Ë¾Æº»´Ù. ¾ÖÇø®ÄÉÀ̼ǰú ½º·¹µå°¡ ¼·Î °£¼·ÇÏÁö ¾Êµµ·Ï ÇÁ·Î¼¼½º¿Í ½º·¹µå°¡ ¸Þ¸ð¸®¿Í ÇÁ·Î¼¼¼¸¦ »ç¿ëÇÏ´Â ¹æ¹ýµµ ³íÀÇÇÑ´Ù.
3Àå, ¡®C++ ¸ÖƼ½º·¹µù API¡¯¿¡¼´Â OS ¼öÁØÀÇ API(Win32¿Í POSIX µî)¿Í ÇÁ·¹ÀÓ¿öÅ©(Boost¿Í Qt, POCO µî)¿¡¼ Á¦°øµÇ´Â ´Ù¾çÇÑ ¸ÖƼ½º·¹µù API¸¦ ¾Ë¾Æº»´Ù. ÀÌµé °¢ API¸¦ ½ÇÇà, ´Ù¸¥ API¿Í ºñ±³ÇØ ±× Â÷ÀÌÁ¡À» ¾Ë¾Æº¸°í µ¶ÀÚÀÇ ¾ÖÇø®ÄÉÀ̼ǿ¡¼ °¡Áú ¼ö ÀÖ´Â Àå´ÜÁ¡À» »ìÆ캻´Ù.
4Àå, ¡®½º·¹µå µ¿±âÈ¿Í Åë½Å¡¯¿¡¼´Â ¾Õ¼ ¹è¿î ÁÖÁ¦¿¡ ´ëÇØ C++ 14 ¹öÀüÀÇ ³×ÀÌƼºê ½º·¹µù API¸¦ »ç¿ëÇØ ±¸ÇöµÈ °í±Þ ¸ÖƼ½º·¹µù ±¸ÇöÀ» ¾Ë¾Æº»´Ù. À̸¦ ÅëÇØ ¿©·¯ ½º·¹µå°¡ ½º·¹µå ¾ÈÀü¼º ¹®Á¦¾øÀÌ Åë½ÅÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ÀÌÇØÇÑ´Ù. ¹ÂÅؽº¿Í ¶ô, Á¶°Ç º¯¼ö¸¦ Æ÷ÇÔÇÑ ¿©·¯ À¯ÇüÀÇ µ¿±âÈ ¸ÞÄ¿´ÏÁò °£ÀÇ Â÷ÀÌÁ¡µµ ´Ù·é´Ù.
5Àå, ¡®³×ÀÌƼºê C++ ½º·¹µå¿Í ±âº» ¿ä¼Ò¡¯¿¡¼´Â ½º·¹µå¿Í º´Ç༺, ·ÎÄà ½ºÅ丮Áö¸¦ ºñ·ÔÇØ ÀÌ API¿¡¼ Áö¿øµÇ´Â ½º·¹µå ¾ÈÀü¼ºÀ» ´Ù·é´Ù. 4ÀåÀÇ ¿¹Á¦¿¡ ¹ÙÅÁÀ» µÎ°í C++ 11°ú C++ 14 ¹öÀüÀÇ ¿ÏÀüÇÑ ±â´É ¼¼Æ®¿¡ ÀÇÇØ Á¦°øµÇ´Â ±â´ÉÀ» »ç¿ëÇØ ½º·¹µå ¾ÈÀü¼ºÀ» È®ÀåÇÏ°í ÃÖÀûÈÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù.
6Àå, ¡®¸ÖƼ½º·¹µå ÄÚµåÀÇ µð¹ö±ë¡¯¿¡¼´Â ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¸ÖƼ½º·¹µå ¼º´ÉÀ» ºÐ¼®ÇÏ°í ÇÖ½ºÆÌÀ» ŽÁöÇϸç, º´ÇàÀû Á¢±ÙÀ¸·Î ¹ßÇàÇÏ´Â ¹®Á¦¸¦ ÇØ°áÇÏ°í ¹æÁöÇϱâ À§ÇØ Valgrind(Memcheck¿Í DRD, Helgrind µî) °°Àº ÅøÀ» »ç¿ëÇÏ´Â ¹æ¹ýÀ» ½ÀµæÇÑ´Ù.
7Àå, ¡®¸ð¹ü ½ÇÀü »ç·Ê¡¯¿¡¼´Â ÈçÈ÷ °Þ´Â ÇÔÁ¤°ú ³Á¦¸¦ ´Ù·é´Ù. ¹®Á¦¸¦ À¯¹ßÇϱâ Àü¿¡ »çÀü¿¡ ÆľÇÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù. ¶ÇÇÑ ¿¹Á¦¸¦ ÀÌ¿ëÇØ ¸î °¡Áö ÀϹÝÀûÀÎ »óȲ°ú ¿¹¿ÜÀûÀÎ »óȲÀ» »ìÆ캻´Ù.
8Àå, ¡®¿øÀÚÀû µ¿ÀÛ - Çϵå¿þ¾î¿Í ÀÛ¾÷Çϱ⡯¿¡¼´Â ¿øÀÚÀû µ¿ÀÛ¿¡ ´ëÇØ ¼¼ºÎÀûÀ¸·Î ´Ù·é´Ù. ¿øÀÚÀû µ¿ÀÛÀÌ ¹«¾ùÀ̸ç ÃÖÀûÀ¸·Î »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù. ¿©·¯ CPU ¾ÆÅ°ÅØó¿¡¼ ¾î¶² ÄÄÆÄÀÏ·¯ Áö¿øÀÌ ÀÌ·ïÁö´ÂÁö »ìÆ캸°í Äڵ忡 ¿øÀÚÀû µ¿ÀÛÀ» ±¸ÇöÇÒ ¶§ ½Ã°£À» ÅõÀÚÇÒ °¡Ä¡°¡ ÀÖ´ÂÁö Æò°¡Çغ»´Ù. ¶ÇÇÑ ÀÌ·± ÃÖÀûÈ·Î ÀÎÇØ ÄÚµåÀÇ À̽ļºÀÌ ¾î¶»°Ô Á¦ÇѵǴÂÁö ¾Ë¾Æº»´Ù.
9Àå, ¡®ºÐ»ê ÄÄÇ»Æÿ¡¼ÀÇ ¸ÖƼ½º·¹µù¡¯¿¡¼´Â ÀÌÀü Àåµé¿¡¼ ¹è¿î ¿©·¯ ³»¿ëÀ» ¸ÖƼ½Ã½ºÅÛ°ú Ŭ·¯½ºÅÍ ¼öÁØÀÇ ½Ã½ºÅÛ¿¡ Àû¿ëÇغ»´Ù. O...penMPI ±â¹ÝÀÇ ¿¹Á¦¸¦ ÀÌ¿ëÇØ ÄÄÇ»ÅÍ Å¬·¯½ºÅÍ ³»ÀÇ ³ëµå°°ÀÌ ¿©·¯ ½Ã½ºÅÛ¿¡¼ ¸ÖƼ½º·¹µùÀ» ¼öÇàÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù.
10Àå, ¡®GPGPU¿¡¼ÀÇ ¸ÖƼ½º·¹µù¡¯¿¡¼´Â GPGPU ¾ÖÇø®ÄÉÀ̼Ç(CUDA¿Í OpenCL µî)¿¡¼ ¸ÖƼ½º·¹µù »ç¿ë¹ýÀ» »ìÆ캻´Ù. OpenCL ±â¹ÝÀÇ ¿¹Á¦¸¦ »ç¿ëÇØ º´·Ä·Î ÀÛ¾÷À» ½ÇÇàÇÏ´Â ±âº»ÀûÀÎ ¸ÖƼ½º·¹µå ¾ÖÇø®ÄÉÀ̼ÇÀ» ¾Ë¾Æº»´Ù. ÀÌÀü Àåµé¿¡¼ ¹è¿î ³»¿ëÀ» ºñµð¿À Ä«µå¿Í ±× ÆÄ»ý Çϵå¿þ¾î(¿¹¸¦ µé¾î ·¢-¸¶¿îÆ®(rack-mounted) º¤ÅÍ ÇÁ·Î¼¼¼ Çϵå¿þ¾î)¿¡¼ ó¸®ÇÒ ¼ö ÀÖµµ·Ï À̸¦ Àû¿ëÇÑ´Ù.
¡Ú ¿Å±äÀÌÀÇ ¸» ¡Ú
¾ðÁ¨°¡ºÎÅÍ ¸ÖƼ½º·¹µå°¡ ¾ø´Â ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀ» »ó»óÇϱâ Èûµé¾îÁ³´Ù. Á¦ÇÑµÈ ÄÄÇ»Æà ȯ°æ¿¡¼ ÁÖ¾îÁø ƯÁ¤ ÀÛ¾÷À» °¡Àå È¿À²ÀûÀ¸·Î ¼öÇàÇÏ´Â ¿©·¯ ¹æ½Ä °¡¿îµ¥, ¸ÖƼ½º·¹µå´Â º´Ç༺°ú º´·Ä¼º Ãø¸é¿¡¼ °¡Àå ¶Ù¾î³ ÇÁ·Î±×·¥ ±â¹ý Áß ÇϳªÀÏ °ÍÀÌ´Ù. ÀÌ Ã¥Àº ¸ÖƼ½º·¹µù°ú º´Ç༺ÀÇ ±âº» °³³äÀ» ÆľÇÇÏ°í À̸¦ C++¿¡ È¿À²ÀûÀ¸·Î Àû¿ëÇÏ´Â ¹æ¹ýÀ» ¾Ë·ÁÁØ´Ù.
¶ÇÇÑ ¸ÖƼ½º·¹µùÀÇ ¾ÈÀüÇÏ°íµµ È¿À²ÀûÀÎ ±¸ÇöÀ» À§ÇØ ÇʼöÀûÀÎ ³»¿ëÀ» ´Ù·é´Ù. Áï, ¿î¿µÃ¼Á¦¿Í ÇÁ·¹ÀÓ¿öÅ©°¡ À̵鿡 ´ëÇÑ Àú¼öÁØ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý°ú ÇÔ²² ÀÌµé °³³äÀÌ Çϵå¿þ¾î ¼öÁØ¿¡¼ µ¿ÀÛÇÏ´Â ¹æ¹ýÀ» ½Éµµ ÀÖ°Ô ´Ù·ç¸ç, ½º·¹µå °£ µ¿±âÈ¿Í Åë½Å, º´Ç༺ C++ ¾ÖÇø®ÄÉÀ̼ÇÀÇ µð¹ö±ë, C++¿¡¼ °¡Àå ¸ð¹üÀûÀÎ ÇÁ·Î±×·¡¹Ö »ç·Ê µîÀ» ´Ù·é´Ù.
¸¶Áö¸·À¸·Î ¿øÀÚÀû µ¿ÀÛÀÇ º»ÁúÀ» ÀÌÇØÇÏ°í À̵éÀ» ÄÚµå ÃÖÀûÈ¿¡ À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ½ÀµæÇϸç, ºÐ»ê ÄÄÇ»Æà ȯ°æ¿¡¼ ¸ÖƼ½º·¹µå ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÇöÇÏ°í ¸ÖƼ½º·¹µùÀ» äÅÃÇÑ C++ ±â¹ÝÀÇ GPGPU ¾ÖÇø®ÄÉÀÌ¼Ç ¼³°è ¹æ¹ýÀ» ÀÍÈù´Ù. ƯÈ÷, 10Àå¿¡¼ ´Ù·ç´Â GPGPU ¾ÖÇø®ÄÉÀÌ¼Ç ¼³°è ¹æ¹ýÀº ÃÖ±Ù ºñÆ®ÄÚÀΠä±¼°ú °ü·ÃÇØ ±×·¡ÇÈ Ä«µåÀÇ Ç°±Í Çö»ó°úµµ ±× ±Ë¸¦ °°ÀÌÇÑ´Ù´Â Á¡¿¡¼ ÁÖ¸ñÇÒ ¸¸ÇÏ´Ù.
ÀÌ Ã¥Àº ±× ºÐ·®¿¡ ºñÇØ ´Ù·ç´Â ³»¿ëÀÇ ½Éµµ¿Í ÁÖÁ¦°¡ »ó´çÈ÷ ±¤¹üÀ§ÇÏ¸ç ¶§·Ð Æ÷°ýÀûÀÌ°íµµ ¶§·Ð ¸Å¿ì Á¤±³ÇÏ´Ù. °³¹ßÀÚ ¿©·¯ºÐ, ÀÌÁ¦ Áغñ°¡ µÇ¾ú´Ù¸é ¾ÈÀü¶ì¸¦ ´Ü´ÜÈ÷ Á¶ÀÌ°í ¸ÚÁø ÁúÁÖ¸¦ ½ÃÀÛÇغ¸ÀÚ!
-
-
1Àå. ¸ÖƼ½º·¹µù °ËÅä
__½ÃÀÛÇϱâ
__¸ÖƼ½º·¹µå ¾ÖÇø®ÄÉÀ̼Ç
____¸ÞÀÌÅ©ÆÄÀÏ
__±× ¹ÛÀÇ ¾ÖÇø®ÄÉÀ̼Ç
__¿ä¾à
2Àå. ÇÁ·Î¼¼¼¿Í OS¿¡¼ÀÇ ¸ÖƼ½º·¹µù ±¸Çö
__ÇÁ·Î¼¼½º¿Í ½º·¹µåÀÇ Á¤ÀÇ
____x86¿¡¼ÀÇ Å½ºÅ©(32-ºñÆ®¿Í 64-ºñÆ®)
____ARM¿¡¼ÀÇ ÇÁ·Î¼¼½º »óÅÂ
__½ºÅÃ
__¸ÖƼ½º·¹µùÀÇ Á¤ÀÇ
____Çø°ÀÇ ºÐ·ù
____´ëĪ ´ë ºñ´ëĪ ¸ÖƼÇÁ·Î¼¼½Ì
____´À½¼Çϰųª ´Ü´ÜÇÏ°Ô °áÇÕµÈ ¸ÖƼÇÁ·Î¼¼½Ì
____¸ÖƼÇÁ·Î¼¼½Ì°ú ¸ÖƼ½º·¹µùÀÇ °áÇÕ
____¸ÖƼ½º·¹µù À¯Çü
__½ºÄÉÁÙ·¯
__¿¹Á¦ ¾ÖÇø®ÄÉÀÌ¼Ç ÃßÀû
__»óÈ£ ¹èÁ¦ ±¸Çö
____Çϵå¿þ¾î
____¼ÒÇÁÆ®¿þ¾î
__¿ä¾à
3Àå. C++ ¸ÖƼ½º·¹µù API
__API °³¿ä
__POSIX ½º·¹µå
____À©µµ¿ì Áö¿ø
____Pthreads ½º·¹µå °ü¸®
____¹ÂÅؽº
____Á¶°Ç º¯¼ö
____µ¿±âÈ
____¼¼¸¶Æ÷¾î
____½º·¹µå ·ÎÄà ½ºÅ丮Áö
__À©µµ¿ì ½º·¹µå
____½º·¹µå °ü¸®
____°í±Þ °ü¸®
____µ¿±âÈ
____Á¶°Ç º¯¼ö
____½º·¹µå ·ÎÄà ½ºÅ丮Áö
__»ó½Â
__Qt
____QThread
____½º·¹µå Ç®
____µ¿±âÈ
____QtConcurrent
____½º·¹µå ·ÎÄà ½ºÅ丮Áö
__POCO
____Thread Ŭ·¡½º
____½º·¹µå Ç®
____½º·¹µå ·ÎÄà ½ºÅ丮Áö
____µ¿±âÈ
__...C++ ½º·¹µå
__¸ðµÎ ÇÕÄ¡¸é
__¿ä¾à
4Àå. ½º·¹µå µ¿±âÈ¿Í Åë½Å
__¾ÈÀü Á¦ÀÏ
__½ºÄÉÁÙ·¯
____°í¼öÁØ °üÁ¡
____±¸Çö
____¿äû Ŭ·¡½º
____Worker Ŭ·¡½º
__µð½ºÆÐó
____¸ÞÀÌÅ©ÆÄÀÏ
____Ãâ·Â °á°ú
__°øÀ¯ µ¥ÀÌÅÍ
____Àбâ-¾²±â ¶ôÀÇ »ç¿ë
____°øÀ¯ Æ÷ÀÎÅÍÀÇ »ç¿ë
__¿ä¾à
5Àå. ³×ÀÌƼºê C++ ½º·¹µå¿Í ±âº» ¿ä¼Ò
__STL ½º·¹µù API
____Boost.Thread API
__2011 Ç¥ÁØ
__C++14
__C++17
__STL ±¸¼º
__½º·¹µå Ŭ·¡½º
____±âº» »ç¿ë
____ÀÎÀÚ Àü´Þ
____¹Ýȯ °ª
____·¹µå À̵¿Çϱâ
____½º·¹µå ID
____½½¸³
____¾çº¸(Yield)
____ºÐ¸®(Detach)
____½º¿Ò(Swap)
__¹ÂÅؽº
____±âº» »ç¿ë
____ŸÀÓµå ¹ÂÅؽº
____¶ô °¡µå
____°íÀ¯ ¶ô
____¹üÀ§ ¶ô
____Àç±Í ¹ÂÅؽº
____Àç±Í ŸÀÓµå ¹ÂÅؽº
__°øÀ¯ ¹ÂÅؽº
____°øÀ¯ ŸÀÓµå ¹ÂÅؽº
__Á¶°Ç º¯¼ö
____Condition_variable_any
____½º·¹µå Á¾·á ½ÃÁ¡¿¡ ¸ðµÎ¿¡°Ô ÅëÁöÇϱâ
__ǻó
____ÇÁ¶ó¹Ì½º
____Packaged_task
____Async
__¿øÀÚÀû ¿ä¼Ò
__¿ä¾à
6Àå. ¸ÖƼ½º·¹µå ÄÚµåÀÇ µð¹ö±ë
__¾ðÁ¦ µð¹ö±ëÀ» ½ÃÀÛÇØ¾ß Çϳª
__´Ü¼øÇÑ µð¹ö°Å
____GDB
____¸ÖƼ½º·¹µå ÄÚµåÀÇ µð¹ö±ë
____ºê·¹ÀÌÅ©Æ÷ÀÎÆ®
____¹é Æ®·¹À̽º
__µ¿Àû ºÐ¼® Åø
____Á¦¾à
____´ë¾È
____Memcheck
____Helgrind
____pthreads APIÀÇ ¿À»ç¿ë
____¶ô ¼ø¼ ¹®Á¦
____µ¥ÀÌÅÍ °æÀï
____DRD
____±âº» »ç¿ë
____±â´É
____C++11 ½º·¹µå Áö¿ø
__¿ä¾à
7Àå. ¸ð¹ü ½ÇÀü »ç·Ê
__¿Ã¹Ù¸¥ ¸ÖƼ½º·¹µù
__À߸øµÈ ±â´ë-µ¥µå¶ô
__ºÎÁÖÀÇ-µ¥ÀÌÅÍ °æÀï
__¸¸´ÉÀÌ ¾Æ´Ñ ¹ÂÅؽº
__ÈǸ¢ÇÑ ¹ÂÅؽºÀÎ ¶ô
__½º·¹µå ´ë ǻó
__ÃʱâÈÀÇ Á¤Àû ¼ø¼
__¿ä¾à
8Àå. ¿øÀÚÀû µ¿ÀÛ - Çϵå¿þ¾î¿Í ÀÛ¾÷Çϱâ
__¿øÀÚÀû µ¿ÀÛ
____ºñÁÖ¾ó C++
__GCC
__¸Þ¸ð¸® ¼ø¼
____±âŸ ÄÄÆÄÀÏ·¯
____C++11 ¿øÀÚÀû ¿ä¼Ò
____¿¹Á¦
____ºñŬ·¡½º ÇÔ¼ö
____¿¹Á¦
____¿øÀÚÀû Ç÷¡±×
____¸Þ¸ð¸® ¼ø¼
__¿ä¾à
9Àå. ºÐ»ê ÄÄÇ»Æÿ¡¼ÀÇ ¸ÖƼ½º·¹µù
__ºÐ»ê ÄÄÇ»ÆÃÀ̶õ
____MPI
____MPI ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÄÄÆÄÀÏ
____Ŭ·¯½ºÅÍ Çϵå¿þ¾î
__Open MPI ¼³Ä¡Çϱâ
____¸®´ª½º¿Í BSD
____À©µµ¿ì
__³ëµå °£ÀÇ ÀÛ¾÷ ºÐ»ê
____MPI ³ëµå ¼³Á¤Çϱâ
____MPI È£½ºÆ® ÆÄÀÏ »ý¼ºÇϱâ
____ÀÛ¾÷ ½ÇÇàÇϱâ
____Ŭ·¯½ºÅÍ ½ºÄÉÁÙ·¯ »ç¿ëÇϱâ
__MPI Åë½Å
____MPI µ¥ÀÌÅÍ À¯Çü
____±âº» Åë½Å
____°í±Þ Åë½Å
____ºê·Îµåij½ºÆÃ
____ºÐ»ê°ú ¼öÁý
__MPI ´ë ½º·¹µå
__ÀáÀçÀû ¹®Á¦
__¿ä¾à
10Àå. GPGPU¿¡¼ÀÇ ¸ÖƼ½º·¹µù
__GPGPU ó¸® ¸ðµ¨
____±¸Çö
____OpenCL
____ÀϹÝÀûÀÎ OpenCL ¾ÖÇø®ÄÉÀ̼Ç
____OpenCL ¹öÀü
__°³¹ß ȯ°æ ¼³Á¤
____¸®´ª½º
____À©µµ¿ì
____OS X/MacOS
__±âº» OpenCL ¾ÖÇø®ÄÉÀ̼Ç
__GPU ¸Þ¸ð¸® °ü¸®
__GPGPU¿Í ¸ÖƼ½º·¹µù
____Áö¿¬ ½Ã°£
__ÀáÀçÀû ¹®Á¦
__GPGPU ¾ÖÇø®ÄÉÀ̼ÇÀÇ µð¹ö±ë
__¿ä¾à
-
-
|
¸¶¾ß Æ÷½¬ [Àú]
|
|
-
-
|
±èÁ¡°© [Àú]
|
|
-
-
-
Àüü 0°³ÀÇ ±¸¸ÅÈıⰡ ÀÖ½À´Ï´Ù.
|
ÀÎÅÍÆÄÅ©µµ¼´Â °í°´´ÔÀÇ ´Ü¼ø º¯½É¿¡ ÀÇÇÑ ±³È¯°ú ¹ÝÇ°¿¡ µå´Â ºñ¿ëÀº °í°´´ÔÀÌ ÁöºÒÄÉ µË´Ï´Ù.
´Ü, »óÇ°À̳ª ¼ºñ½º ÀÚüÀÇ ÇÏÀÚ·Î ÀÎÇÑ ±³È¯ ¹× ¹ÝÇ°Àº ¹«·á·Î ¹ÝÇ° µË´Ï´Ù. |
|
±³È¯ ¹× ¹ÝÇ°ÀÌ °¡´ÉÇÑ °æ¿ì |
»óÇ°À» °ø±Þ ¹ÞÀº ³¯·ÎºÎÅÍ 7ÀÏÀ̳» °¡´É
°ø±Þ¹ÞÀ¸½Å »óÇ°ÀÇ ³»¿ëÀÌ Ç¥½Ã, ±¤°í ³»¿ë°ú ´Ù¸£°Å³ª ´Ù¸£°Ô ÀÌÇàµÈ °æ¿ì¿¡´Â °ø±Þ¹ÞÀº ³¯·ÎºÎÅÍ 3°³¿ù À̳», ȤÀº ±×»ç½ÇÀ» ¾Ë°Ô µÈ ³¯ ¶Ç´Â ¾Ë ¼ö ÀÖ¾ú´ø ³¯·ÎºÎÅÍ 30ÀÏ À̳»
»óÇ°¿¡ ¾Æ¹«·± ÇÏÀÚ°¡ ¾ø´Â °æ¿ì ¼ÒºñÀÚÀÇ °í°´º¯½É¿¡ ÀÇÇÑ ±³È¯Àº »óÇ°ÀÇ Æ÷Àå»óÅ µîÀÌ ÀüÇô ¼Õ»óµÇÁö ¾ÊÀº °æ¿ì¿¡ ÇÑÇÏ¿© °¡´É |
|
±³È¯ ¹× ¹ÝÇ°ÀÌ ºÒ°¡´ÉÇÑ °æ¿ì |
±¸¸ÅÈ®Á¤ ÀÌÈÄ(¿ÀǸ¶ÄÏ»óÇ°¿¡ ÇÑÇÔ)
°í°´´ÔÀÇ Ã¥ÀÓ ÀÖ´Â »çÀ¯·Î »óÇ° µîÀÌ ¸ê½Ç ¶Ç´Â ÈÑ¼ÕµÈ °æ¿ì
(´Ü, »óÇ°ÀÇ ³»¿ëÀ» È®ÀÎÇϱâ À§ÇÏ¿© Æ÷Àå µîÀ» ÈѼÕÇÑ °æ¿ì´Â Á¦¿Ü)
½Ã°£ÀÌ Áö³²¿¡ µû¶ó ÀçÆǸŰ¡ °ï¶õÇÒ Á¤µµ·Î ¹°Ç°ÀÇ °¡Ä¡°¡ ¶³¾îÁø °æ¿ì
Æ÷Àå °³ºÀµÇ¾î »óÇ° °¡Ä¡°¡ ÈÑ¼ÕµÈ °æ¿ì |
|
´Ù¹è¼ÛÁöÀÇ °æ¿ì ¹ÝÇ° ȯºÒ |
´Ù¹è¼ÛÁöÀÇ °æ¿ì ´Ù¸¥ Áö¿ªÀÇ ¹ÝÇ°À» µ¿½Ã¿¡ ÁøÇàÇÒ ¼ö ¾ø½À´Ï´Ù.
1°³ Áö¿ªÀÇ ¹ÝÇ°ÀÌ ¿Ï·áµÈ ÈÄ ´Ù¸¥ Áö¿ª ¹ÝÇ°À» ÁøÇàÇÒ ¼ö ÀÖÀ¸¹Ç·Î, ÀÌÁ¡ ¾çÇØÇØ Áֽñ⠹ٶø´Ï´Ù. |
|
Áß°í»óÇ°ÀÇ ±³È¯ |
Áß°í»óÇ°Àº Á¦ÇÑµÈ Àç°í ³»¿¡¼ ÆǸŰ¡ ÀÌ·ç¾îÁö¹Ç·Î, ±³È¯Àº ºÒ°¡´ÉÇÕ´Ï´Ù. |
|
¿ÀǸ¶ÄÏ »óÇ°ÀÇ È¯ºÒ |
¿ÀǸ¶ÄÏ»óÇ°¿¡ ´ëÇÑ Ã¥ÀÓÀº ¿øÄ¢ÀûÀ¸·Î ¾÷ü¿¡°Ô ÀÖÀ¸¹Ç·Î, ±³È¯/¹ÝÇ° Á¢¼ö½Ã ¹Ýµå½Ã ÆǸÅÀÚ¿Í ÇùÀÇ ÈÄ ¹ÝÇ° Á¢¼ö¸¦ ÇϼžßÇϸç, ¹ÝÇ°Á¢¼ö ¾øÀÌ ¹Ý¼ÛÇϰųª, ¿ìÆíÀ¸·Î º¸³¾ °æ¿ì »óÇ° È®ÀÎÀÌ ¾î·Á¿ö ȯºÒÀÌ ºÒ°¡´ÉÇÒ ¼ö ÀÖÀ¸´Ï À¯ÀÇÇϽñ⠹ٶø´Ï´Ù. |
|
|
|
¹è¼Û¿¹Á¤ÀÏ ¾È³» |
ÀÎÅÍÆÄÅ© µµ¼´Â ¸ðµç »óÇ°¿¡ ´ëÇØ ¹è¼Û¿Ï·á¿¹Á¤ÀÏÀ» À¥»çÀÌÆ®¿¡ Ç¥½ÃÇÏ°í ÀÖ½À´Ï´Ù.
|
<ÀÎÅÍÆÄÅ© Á÷¹è¼Û »óÇ°> |
»óÇ°Àº ¿ù~Åä¿äÀÏ ¿ÀÀü 10½Ã ÀÌÀü ÁÖ¹®ºÐ¿¡ ´ëÇÏ¿© ´çÀÏ Ãâ°í/´çÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÏ´Â »óÇ°ÀÔ´Ï´Ù. |
»óÇ°Àº ¼¿ïÁö¿ª/ÆòÀÏ ÁÖ¹®ºÐÀº ´çÀÏ Ãâ°í/ÀÍÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇϸç,
¼¿ï¿ÜÁö¿ª/ÆòÀÏ ÁÖ¹®ºÐÀÇ °æ¿ì´Â ¿ÀÈÄ 6½Ã±îÁö ÁÖ¹®ºÐ¿¡ ´ëÇÏ¿© ÀÍÀÏ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÏ´Â »óÇ°ÀÔ´Ï´Ù.
(´Ü, ¿ù¿äÀÏÀº 12½Ã±îÁö ÁÖ¹®¿¡ ÇÑÇÔ)
|
»óÇ°Àº, ÀÔ°í¿¹Á¤ÀÏ(Á¦Ç°Ãâ½ÃÀÏ)+Åùè»ç¹è¼ÛÀÏ(1ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù. |
~
»óÇ°Àº À¯ÅëƯ¼º»ó ÀÎÅÍÆÄÅ©¿¡¼ Àç°í¸¦ º¸À¯ÇÏÁö ¾ÊÀº »óÇ°À¸·Î ÁÖ¹®ÀÏ+±âÁØÃâ°íÀÏ+Åùè»ç¹è¼ÛÀÏ(1ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù.(Åä/°øÈÞÀÏÀº ¹è¼Û±â°£¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.)
¡Ø±âÁØÃâ°íÀÏ:ÀÎÅÍÆÄÅ©°¡ »óÇ°À» ¼ö±ÞÇÏ¿© ¹°·ùâ°í¿¡¼ Æ÷Àå/Ãâ°íÇϱâ±îÁö ¼Ò¿äµÇ´Â ½Ã°£
|
|
<¾÷ü Á÷Á¢¹è¼Û/¿ÀǸ¶ÄÏ »óÇ°> |
~
»óÇ°Àº ¾÷ü°¡ ÁÖ¹®À» È®ÀÎÇÏ°í, Ãâ°íÇϱâ±îÁö °É¸®´Â ½Ã°£ÀÔ´Ï´Ù. ÁÖ¹®ÀÏ+±âÁØÃâ°íÀÏ+Åùè»ç¹è¼ÛÀÏ(2ÀÏ)¿¡ ¹è¼Û¿Ï·á¸¦ º¸ÀåÇÕ´Ï´Ù.(Åä/°øÈÞÀÏÀº ¹è¼Û±â°£¿¡ Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.)
¡Ø5ÀÏÀ̳» Ãâ°í°¡ ½ÃÀÛµÇÁö ¾ÊÀ»½Ã, ¿ÀǸ¶ÄÏ »óÇ°Àº ÀÚµ¿À¸·Î ÁÖ¹®ÀÌ Ãë¼ÒµÇ¸ç, °í°´´Ô²² Ç°Àýº¸»ó±ÝÀ» Áö±ÞÇØ µå¸³´Ï´Ù.
|
|
|
¹è¼Ûºñ ¾È³» |
µµ¼(Áß°íµµ¼ Æ÷ÇÔ)¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 2,000¿ø (1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û) À½¹Ý/DVD¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 1,500¿ø (2¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
ÀâÁö/¸¸È/±âÇÁÆ®¸¸ ±¸¸ÅÇϽøé : ¹è¼Ûºñ 2,000¿ø (2¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
µµ¼¿Í À½¹Ý/DVD¸¦ ÇÔ²² ±¸¸ÅÇϽøé : ¹è¼Ûºñ 1,500¿ø 1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
µµ¼¿Í ÀâÁö/¸¸È/±âÇÁÆ®/Áß°íÁ÷¹è¼Û»óÇ°À» ÇÔ²² ±¸¸ÅÇϽøé : 2,000¿ø (1¸¸¿øÀÌ»ó ±¸¸Å ½Ã ¹«·á¹è¼Û)
¾÷üÁ÷Á¢¹è¼Û»óÇ°À» ±¸¸Å½Ã : ¾÷üº°·Î »óÀÌÇÑ ¹è¼Ûºñ Àû¿ë
* ¼¼Æ®»óÇ°ÀÇ °æ¿ì ºÎºÐÃë¼Ò ½Ã Ãß°¡ ¹è¼Ûºñ°¡ ºÎ°úµÉ ¼ö ÀÖ½À´Ï´Ù.
* ºÏÄ«Æ®¿¡¼ ¹è¼Ûºñ¾ø¾Ö±â ¹öÆ°À» Ŭ¸¯Çϼż, µ¿ÀϾ÷ü»óÇ°À» Á¶±Ý ´õ ±¸¸ÅÇϽøé, ¹è¼Ûºñ¸¦ Àý¾àÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
|
|
Çؿܹè¼Û ¾È³» |
ÀÎÅÍÆÄÅ©µµ¼¿¡¼´Â ±¹³»¿¡¼ ÁÖ¹®ÇϽðųª ÇØ¿Ü¿¡¼ ÁÖ¹®ÇÏ¿© ÇØ¿Ü·Î ¹è¼ÛÀ» ¿øÇÏ½Ç °æ¿ì DHL°ú Ư¾àÀ¸·Î Ã¥Á¤µÈ ¿ä±ÝÇ¥¿¡
ÀÇÇØ °³ÀÎÀÌ ÀÌ¿ëÇÏ´Â °æ¿ìº¸´Ù ¹è¼Û¿ä±ÝÀ» Å©°Ô ³·Ã߸ç DHL(www.dhl.co.kr)·Î Çؿܹè¼Û ¼ºñ½º¸¦ Á¦°øÇÕ´Ï´Ù.
Çؿܹè¼ÛÀº µµ¼/CD/DVD »óÇ°¿¡ ÇÑÇØ ¼ºñ½ºÇÏ°í ÀÖÀ¸¸ç, ´Ù¸¥ »óÇ°À» ºÏÄ«Æ®¿¡ ÇÔ²² ´ãÀ¸½Ç °æ¿ì Çؿܹè¼ÛÀÌ ºÒ°¡ÇÕ´Ï´Ù.
ÇØ¿ÜÁÖ¹®¹è¼Û ¼ºñ½º´Â ÀÎÅÍÆÄÅ© µµ¼ ȸ¿ø °¡ÀÔÀ» Çϼž߸¸ ½Åû °¡´ÉÇÕ´Ï´Ù. |
|
¾Ë¾ÆµÎ¼¼¿ä!!! |
µµ¸Å»ó ¹× Á¦ÀÛ»ç »çÁ¤¿¡ µû¶ó Ç°Àý/ÀýÆÇ µîÀÇ »çÀ¯·Î Ãë¼ÒµÉ ¼ö ÀÖ½À´Ï´Ù.
¿ÀǸ¶ÄϾ÷üÀÇ ¹è¼ÛÁö¿¬½Ã ÁÖ¹®ÀÌ ÀÚµ¿À¸·Î Ãë¼ÒµÉ ¼ö ÀÖ½À´Ï´Ù.
Ãâ°í°¡´É ½Ã°£ÀÌ ¼·Î ´Ù¸¥ »óÇ°À» ÇÔ²² ÁÖ¹®ÇÒ °æ¿ì Ãâ°í°¡´É ½Ã°£ÀÌ °¡Àå ±ä ±âÁØÀ¸·Î ¹è¼ÛµË´Ï´Ù.
À¯ÅëÀÇ Æ¯¼º»ó Ãâ°í±â°£Àº ¿¹Á¤º¸´Ù ¾Õ´ç°ÜÁö°Å³ª ´ÊÃçÁú ¼ö ÀÖ½À´Ï´Ù.
Åùè»ç ¹è¼ÛÀÏÀÎ ¼¿ï ¹× ¼öµµ±ÇÀº 1~2ÀÏ, Áö¹æÀº 2~3ÀÏ, µµ¼, »ê°£, ±ººÎ´ë´Â 3ÀÏ ÀÌ»óÀÇ ½Ã°£ÀÌ ¼Ò¿äµË´Ï´Ù. |
|
|
|
|