|
Á¦Ç° ±¸¼º±â´É |
|
ÀÎÅÚ® C++ ÄÄÆÄÀÏ·¯
|
Microsoft Visual Studio ÅëÇÕ ¹× ȣȯ¼º
|
|
|
ÀÎÅÚ Æз¯·¼ ½ºÆ©µð¿ÀÀÇ ¸ðµç ±â´ÉÀº Microsoft Visual Studio 2005 ¹× 2008¿¡ ÅëÇյ˴ϴÙ. ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú´Â ÀÎÅÚ Æз¯·¼ ½ºÆ©µð¿ÀÀÇ ¼¼ °¡Áö ÁÖ¿ä ±â´É ±×·ì Áß ÇϳªÀÔ´Ï´Ù. ¿©±â¿¡´Â ÀÎÅÚ C++ ÄÄÆÄÀÏ·¯, ÀÎÅÚ Æз¯·¼ µð¹ö°Å ÀͽºÅÙ¼Ç, ÀÎÅÚ ½º·¹µù ºôµù ºí·Ï, ±×¸®°í ÀÎÅÚ ÅëÇÕ ¼º´É ÇÁ¸®¹ÌƼºê°¡ Æ÷ÇԵ˴ϴÙ.
|
|
|
ÀÌ ÄÄÆÄÀÏ·¯´Â ³×ÀÌƼºê 32ºñÆ® °³¹ß, Å©·Î½º ÄÄÆÄÀÏ È¯°æ(32ºñÆ® ½Ã½ºÅÛ¿¡¼ 64ºñÆ® ÀÀ¿ë ÇÁ·Î±×·¥ °³¹ß Áö¿ø) ¹× ±âº» 64ºñÆ® °³¹ßÀ» Á¦°øÇÕ´Ï´Ù. 32ºñÆ® ±â´É¸¸ ¼³Ä¡Çϰųª, 64ºñÆ® ±â´É¸¸ ¼³Ä¡Çϰųª, ¶Ç´Â µÎ °¡Áö ±â´ÉÀ» ¸ðµÎ ¼³Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
ÀÎÅÚ C++ ÄÄÆÄÀÏ·¯¿Í °ü·Ã ÀÎÅÚ Æз¯·¼ µð¹ö°Å ÀͽºÅÙ¼ÇÀº C/C++ °³¹ßÀÚ¿¡°Ô ¸¹Àº ÀåÁ¡À» Á¦°øÇÏÁö¸¸, ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú ¶Ç´Â Àüü ÀÎÅÚ Æз¯·¼ ½ºÆ©µð¿À¿¡ Æ÷ÇÔµÈ ´Ù¸¥ ÄÄÆ÷³ÍÆ®¸¦ ¹Ýµå½Ã »ç¿ëÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ´Ù½Ã ¸»Çؼ ÀÎÅÚ ½º·¹µù ºôµù ºí·Ï°ú ÀÎÅÚ ÅëÇÕ ¼º´É ÇÁ¸®¹ÌƼºê¸¦ Visual C++ ÄÄÆ÷Àú¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. ¶ÇÇÑ Visual C++·Î ÀÛ¼ºµÈ
ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼
ÀÎÅÚ Æз¯·¼ ½ºÆ©µð¿À ¸Þ¸ð¸® ´©¼ö ¶Ç´Â º´Ç༺ °Ë»ç ±â´Éµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇѸ¶µð·Î, °·ÂÇÏ°í »ç¿ëÇϱ⠽¬¿î ȣȯ ÀÎÅÚ C++ ÄÄÆÄÀÏ·¯¸¦ ºñ·ÔÇÏ¿©, Àüü ÀÎÅÚ Æз¯·¼ ½ºÆ©µð¿ÀÀÇ »ç¿ë°ú °ü·ÃÇÏ¿© °³¹ßÀÚÀÇ Èï¹Ì¸¦ ²ø¸¸ÇÑ ¿ä¼Ò°¡ ¸¹ÀÌ ÀÖ½À´Ï´Ù.
|
|
|
|
±×¸² 1: ÀÎÅÚ® Æз¯·¼ ÄÄÆ÷Àú´Â Visual Studio*¿¡ ÅëÇյ˴ϴÙ. ȸéÀÇ ¼Ö·ç¼ÇÀº ÀÎÅÚ C++À» »ç¿ëÇÕ´Ï´Ù. ÇÁ·ÎÁ§Æ®(Project) ¸Þ´º¸¦ ÅëÇØ ¶Ç´Â ¼Ö·ç¼ÇÀ̳ª
ÇÁ·ÎÁ§Æ® À̸§ À§¿¡¼ ¸¶¿ì½º ¿À¸¥ÂÊ ´ÜÃ߸¦ ´·¯ Visual C++·Î ½±°Ô ÀüȯÇÒ ¼ö ÀÖ½À´Ï´Ù
|
|
½±°Ô ½ÃÀÛÇÒ ¼ö ÀÖÀ¸¸ç ¼ºÀåÇÏ°í ÀÖ´Â º´·ÄÈ Ä¿¹Â´ÏƼ¿ÍÀÇ Áö¼ÓÀûÀÎ °ü°è À¯Áö
|
|
|
ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú¿¡´Â ¹æ¹ý¿¡ ´ëÇÑ ¼³¸íÀ» Àü´ÞÇÏ´Â µ¥ »ç¿ëµÇ´Â ±â´É µÑ·¯º¸±â¿Í ÄÚµå »ùÇÃÀ» Á¦°øÇÒ »ç¿ëÇϱ⽬¿î ½ÃÀÛ ¾È³»¼°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ¶ÇÇÑ °£´ÜÇѺñµð¿À¸¦ º¼ ¼ö ÀÖ´Â ¸µÅ©µµ Æ÷ÇԵǾî ÀÖ¾î ÀÎÅÚ Æз¯·¼ ÄÄÆ÷ÀúÀÇ º´·ÄÈ ±â´ÉÀ» »ç¿ëÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ °ÆÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÀÎÅÚ Æз¯·¼ ÄÄÆ÷ÀúÀÇ »ç¿ëÀÚ´Â ÀÌ ¾È³»¼°¡ Àá½Ã ½Ã°£À» ³»¾î Àо
¸¸ÇÑ ÃæºÐÇÑ °¡Ä¡¸¦
°¡Áö°í ÀÖ´Ù°í ¸»ÇÕ´Ï´Ù. ¶ÇÇÑ µµ±¸¸¦ »ý»êÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â º´·ÄÈ °³³ä ¹× ±â¹ýÀ» ¼Ò°³ÇÏ´Â ºÎºÐ¿¡¼ »ùÇà Äڵ尡 ¸Å¿ì À¯¿ëÇß´Ù°í ¸»ÇÕ´Ï´Ù.
|
|
|
½ÃÀÛ ¾È³»¼´Â ¸î¸î À§Ä¡¿¡¼ Á¦°øµË´Ï´Ù. ¿¹¸¦ µé¸é, ÀÎÅÚ À¥ ÆäÀÌÁö, ¼³Ä¡ ½Ã ¸î¸î ÁöÁ¡, Visual Studio µµ¿ò¸» ¸Þ´º(»ó¼¼ ¼³¸í¼¿Í ÇÔ²²) ¶Ç´Â Windows "½ÃÀÛ" ´ÜÃß¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ÀÎÅÚ Æз¯·¼ ½ºÆ©µð¿À ¶Ç´Â ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú Æ®¸® ±¸Á¶¿¡¼ ã¾Æº¼ ¼ö ÀÖ½À´Ï´Ù. ¼³Ä¡ ¿Ï·á ½Ã¿¡µµ ½ÃÀÛ ¾È³»¼¸¦ Àо °ÍÀÎÁö ¹¯´Â ¸Þ½ÃÁö°¡ Ç¥½ÃµË´Ï´Ù. ½ÃÀÛ ¾È³»¼´Â
Ãʺ¸ÀÚµç
º´·ÄÈ Àü¹®°¡µç, ´©±¸¶óµµ Àá½Ã ½Ã°£À» ³»¾î Àо ¸¸ÇÑ ÃæºÐÇÑ °¡Ä¡¸¦ Áö´Ï°í ÀÖ½À´Ï´Ù.
|
|
|
½ÃÀÛÇÏ°í ³ª¸é ¼ºÀåÇÏ°í ÀÖ´Â °³¹ßÀÚ Ä¿¹Â´ÏƼ¿¡ Âü¿©ÇÏ¿© ÀÎÅÚ ¸ÖƼ ÄÚ¾î ÇÁ·Î¼¼¼ ±â¹Ý ½Ã½ºÅÛÀ» È°¿ëÇÏ´Â °³¹ßÀÚµé°ú Á¤º¸¸¦ ±³È¯ÇÒ ¼ö ÀÖÀ½ÀÌ ¸Å¿ì À¯¿ëÇÏ°Ô »ý°¢µÉ °ÍÀÔ´Ï´Ù. ÀÎÅÚÀº °³¹ßÀÚ°¡ ¾ÆÀ̵ð¾î¸¦ ±³È¯ÇÏ°í ÀÇ°ß ¹× Áú¹®À» °Ô½ÃÇϸç Æ÷ÀÎÆ®¸¦ ȹµæÇÏ¿© ÀÎÅÚ® ºí·¢ º§Æ® ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÚ°¡ µÉ ¼ö ÀÖ´Â µ¿Àû Æ÷·³À» Á¦°øÇÕ´Ï´Ù. ¶ÇÇÑ º´·ÄÈ¿¡ °ü½ÉÀÌ
ÀÖ´Â °³¹ßÀÚ¸¦ À§ÇØ
°è¼Ó ´Ã¾î³ª°í ÀÖ´Â ¹æ´ëÇÑ ±â¼ú ÀÚ·áµµ Á¦°øÇÕ´Ï´Ù. Áö±Ý ¹Ù·Î Ä¿¹Â´ÏƼ¿¡ Âü¿©ÇϽʽÿÀ. º´·Ä ÇÁ·Î±×·¡¹Ö ¹× ¸ÖƼÄÚ¾î Ä¿¹Â´ÏƼ (http://software.intel.com/en-us/articles/intelparallel-studio/)¸¦ ¹æ¹®ÇϽʽÿÀ. ¿©±â¼´Â ºí·Î±×, ±â¼ú ÀÚ·á, ´Ù¿î·Îµå µî ¸ðµç ¸®¼Ò½º¸¦ ã¾Æº¼ ¼ö ÀÖ½À´Ï´Ù.
ÀÚÀ¯·Ó°Ô »ìÆ캻 ´ÙÀ½, Áñ°Üã±â ¸ñ·Ï¿¡ ÀúÀåÇÏ´Â °Íµµ ÀØÁö ¸¶½Ê½Ã¿À.
|
|
¶÷´Ù ÇÔ¼ö Áö¿ø
|
|
|
ÀÎÅÚ ÄÄÆÄÀÏ·¯´Â ´ÙÀ½ C++ Ç¥ÁØÀÎ C++0xÀÇ ÃʾÈÀ» Áö¿øÇÏ¿© ¶÷´Ù ÇÔ¼ö¸¦ ±¸ÇöÇÏ´Â ÃÖÃÊÀÇ C++ ÄÄÆÄÀÏ·¯ÀÔ´Ï´Ù. ¶÷´Ù ±¸Á¶´Â C++ÀÇ ÇÔ¼ö °³Ã¼ ¶Ç´Â CÀÇ ÇÔ¼ö Æ÷ÀÎÅÍ¿Í °ÅÀÇ µ¿ÀÏÇÕ´Ï´Ù. ÄÚµå¿Í ½ºÄÚÇÁ¸¦ °áÇÕÇϱ⠶§¹®¿¡ Ŭ·ÎÀú¿Í ÇÔ²² °·ÂÇÑ °³³äÀ» ³ªÅ¸³À´Ï´Ù. Ŭ·ÎÀú´Â ÅؽºÆ® ÇüÅ·ΠÇÔ¼ö Á¤ÀǸ¦ Æ÷ÇÔÇÏ´Â ¾ç½ÄÀ» ¹ÙÀεùÇÔÀ¸·Î½á ¼³Á¤µÇ´Â ¹ÙÀεù °ªÀ» ÂüÁ¶ÇÏ°í º¯°æÇÒ
¼ö ÀÖ´Â ÇÔ¼öÀÔ´Ï´Ù.
°£´ÜÈ÷ ¸»ÇØ ¶÷´Ù ÇÔ¼ö¿Í Ŭ·ÎÀú´Â ÇÔ¼ö °³Ã¼ ¶Ç´Â ¶÷´Ù¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Â Æí¸®ÇÑ ¹æ¹ýÀ» Á¦°øÇÏ´Â ÇÔ¼ö °³Ã¼ ¹× ÇÔ¼ö Æ÷ÀÎÅÍ¿Í °ü·ÃµÈ ¹®¹ýÀû ÆíÀÇ·Î º¼ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
±×¸² 2ÀÇ ¼Ò½º ÄÚµå´Â ¶÷´Ù ½ÄÀ¸·Î ¸¸µç ÇÔ¼ö °³Ã¼ÀÇ ¿¹ÀÔ´Ï´Ù. C++¿Í ÀÎÅÚ TBB¸¦ ´õ¿í ¹ÐÁ¢ÇÏ°Ô ÅëÇÕÇÏ¸é ¶÷´Ù ÇÔ¼ö¿Í Ŭ·ÎÀú¸¦ »ç¿ëÇØ Äڵ带 ¸Å°³º¯¼ö·Î ³Ñ±èÀ¸·Î½á ÇÔ¼öÀÚ(functor) operator() °³³äÀ» °£¼ÒÈÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
|
|
|
±×¸² 2: ¶÷´Ù ÇÔ¼öÀÇ ¼Ò½º ÄÚµå ¿¹
|
|
´Ü¼ø º´Çà ÇÔ¼ö
|
|
|
ÀÎÅÚ Æз¯·¼ ½ºÆ©µð¿À¿¡ Æ÷ÇÔµÈ ÀÎÅÚ® C++ ÄÄÆÄÀÏ·¯´Â ³× °³ÀÇ »õ·Î¿î Å°¿öµå(__taskcomplete, __task, __par ¹× __critical)¸¦ Á¦°øÇÏ¿© º´·Ä ÇÁ·Î±×·¡¹ÖÀ» ´õ¿í ½±°Ô ¸¸µì´Ï´Ù. ÀÌ Å°¿öµåµé·Î ÀÎÇØ °¡´ÉÇØÁø º´·Ä¼ºÀ¸·ÎºÎÅÍ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ÇýÅÃÀ» ¾ò°Ô ÇÏ·Á¸é /Qopenmp ÄÄÆÄÀÏ·¯ ¿É¼ÇÀ» ÁöÁ¤ÇÑ ÈÄ ´Ù½Ã ÄÄÆÄÀÏÇØ º´·Ä¼ºÀÇ ½ÇÁ¦ Á¤µµ¸¦ °ü¸®ÇÏ´Â ÀûÀýÇÑ ·±Å¸ÀÓ
Áö¿ø ¶óÀ̺귯¸®¿¡
¿¬°áÇÕ´Ï´Ù. ÀÌ »õ·Î¿î Å°¿öµåµéÀº OpenMP 3.0* ·±Å¸ÀÓ ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ º´·Ä¼ºÀ» Á¦°øÇÏÁö¸¸, OpenMP* ÇÁ¶ó±×¸¶¿Í Áö½ÃÀÚ ¹®¹ýÀ» °¡Áö°í À̸¦ ½ÇÁ¦·Î Ç¥ÇöÇÒ ÇÊ¿ä´Â ¾ø°Ô ¸¸µì´Ï´Ù. À̸¦ ÅëÇØ C ¶Ç´Â C++¿¡¼ ÀÛ¼ºµÈ Äڵ带 ´õ¿í ÀÚ¿¬½º·´°Ô À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
¾Õ¿¡¼ ¾ð±ÞÇÑ Å°¿öµå´Â ±¸¹® Á¢µÎ»ç·Î »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î, __par¸¦ »ç¿ëÇØ solve() ÇÔ¼ö¸¦ º´·ÄÈÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
Àμö »çÀÌ¿¡ °ãÄ¡´Â ºÎºÐÀÌ ¾ø´Ù°í °¡Á¤Çϸé solve() ÇÔ¼ö´Â __par Å°¿öµå¸¦ Ãß°¡ÇØ º¯°æµË´Ï´Ù. ÇÔ¼ö°¡ È£ÃâµÇ´Â ¹æ½Ä¿¡ ´ëÇÑ º¯°æ ¾øÀÌ °è»êÀÌ º´·Äȵ˴ϴÙ. ±×¸² 3Àº À̸¦ º¸¿©ÁÖ´Â ¿¹ÀÔ´Ï´Ù.
|
|
|
|
|
|
±×¸² 3: ÀÎÅÚ® Æз¯·¼ ½ºÆ©µð¿ÀÀÇ ÀÎÅÚ C++ ÄÄÆÄÀÏ·¯¿¡ »õ·Ó°Ô Ãß°¡µÈ 4°³ÀÇ ´Ü¼ø º´Çà ÇÔ¼ö Áß ÇϳªÀÎ __parÀÇ ¿¹
|
|
OpenMP 3.0
|
|
|
OpenMP´Â ÀÌ½Ä °¡´ÉÇÑ ¸ÖƼ ½º·¹µå ÀÀ¿ë ÇÁ·Î±×·¥ °³¹ßÀÇ ¾÷°è Ç¥ÁØÀÔ´Ï´Ù. OpenMP´Â ÆÄÀÎ-±×·¹ÀÎ(fine-grain: ·çÇÁ ·¹º§) ¹× ´ëÇü-±×·¹ÀÎ(large-grain: ÇÔ¼ö ·¹º§) ½º·¹µù¿¡ È¿°úÀûÀÔ´Ï´Ù. OpenMP 3.0Àº Áö½ÃÀÚ Á¢±Ù ¹æ½ÄÀ» »ç¿ëÇØ µ¥ÀÌÅÍ ¹× ŽºÅ© º´·Ä¼ºÀ» ¸ðµÎ Áö¿øÇÔÀ¸·Î½á Á÷·Ä ÀÀ¿ë ÇÁ·Î±×·¥À» º´·Ä ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î º¯È¯ÇÏ´Â ½±°í °·ÂÇÑ ¹æ¹ýÀ» Á¦½ÃÇϸç,
ÀáÀçÀûÀ¸·Î ¸ÖƼ
ÄÚ¾î ¹× ´ëĪ ¸ÖƼ ÇÁ·Î¼¼¼ ½Ã½ºÅÛ¿¡¼ º´·Ä ½ÇÇàÀ» ÅëÇØ ¼º´ÉÀ» Å©°Ô Çâ»ó½Ãų ¼ö ÀÖ½À´Ï´Ù.
|
|
|
OpenMP¸¦ »ç¿ëÇØ ÀÛ¼ºÇÏ°í ±¸ÃàÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ´ÜÀÏ ÇÁ·Î¼¼¼ ½Ã½ºÅÛ¿¡¼ ½ÇÇàµÇ¸é °á°ú´Â º¯°æµÇÁö ¾ÊÀº ¼Ò½º ÄÚµå¿Í µ¿ÀÏÇÕ´Ï´Ù. ´Ù½Ã ¸»Çϸé, °á°ú´Â º¯°æµÇÁö ¾Ê´Â Á÷·Ä ½ÇÇà ÄÚµå¿Í µ¿ÀÏÇÕ´Ï´Ù. µû¶ó¼ Á÷·Ä ÀÏ°ü¼ºÀ» À¯ÁöÇÏ´Â µ¿½Ã¿¡ ´õ ½±°Ô Á¡ÁøÀû ÄÚµå º¯°æÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. Áö½ÃÀÚ¸¸ Äڵ忡 »ðÀ﵃ ¼ö Àֱ⠶§¹®¿¡ ´ÜÀÏ ÇÁ·Î¼¼¼ ½Ã½ºÅÛ¿¡¼ ½ÇÇàÇÒ
¶§ Á¡ÁøÀû ÄÚµå
º¯°æÀ» ¼öÇàÇÏ°í ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ °øÅë ÄÚµå ±â¹ÝÀ» À¯ÁöÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù.
|
|
|
OpenMP´Â ¸ÖƼ Ç÷§Æû ¹× ¿î¿µ üÁ¦¸¦ Áö¿øÇÏ´Â ´ÜÀÏ ¼Ò½º ÄÚµå ¼Ö·ç¼ÇÀÔ´Ï´Ù. ¶ÇÇÑ OpenMP ·±Å¸ÀÓÀÌ ¿Ã¹Ù¸¥ ¼ýÀÚ¸¦ ¼±ÅÃÇϱ⠶§¹®¿¡ ÄÚ¾îÀÇ ¼ö¸¦ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ "Çϵå ÄÚµù" ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
|
|
OpenMP 3.0 ŽºÅ© Å¥À×
|
|
|
ºÒ±ÔÄ¢ÇÑ ÆÐÅÏÀÇ µ¿Àû µ¥ÀÌÅͳª Àç±Í °°Àº º¹ÀâÇÑ Á¦¾î ±¸Á¶¸¦ °®´Â ÇÁ·Î±×·¥Àº È¿À²ÀûÀÎ ¹æ¹ýÀ¸·Î º´·ÄÈÇϱⰡ Á¾Á¾ ¾î·Æ½À´Ï´Ù. OpenMP 3.0ÀÇ ÀÛ¾÷ Å¥À× ¸ðµ¨À» »ç¿ëÇϸé OpenMP 2.0 ¶Ç´Â 2.5¿¡¼ °¡´ÉÇÑ °Í ÀÌ»óÀ¸·Î ºÒ±ÔÄ¢ÇÑ º´·Äȸ¦ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
ŽºÅ© ÇÁ¶ó±×¸¶´Â ÀÛ¾÷ ´ÜÀ§(ŽºÅ©)°¡ ½ÇÇàµÇ´Â ȯ°æÀ» ÁöÁ¤ÇÕ´Ï´Ù. ŽºÅ© ÇÁ¶ó±×¸¶¸¦ ¸¸³ª¸é ŽºÅ© ºí·Ï ³» ÄÚµå´Â ŽºÅ©¿Í °ü·ÃµÈ Å¥ ¼ÓÀ¸·Î Å¥À׵˴ϴÙ. ¿¬¼ÓµÇ´Â Àǹ̸¦ º¸Á¸Çϱâ À§ÇØ Å½ºÅ©ÀÇ ¿Ï·á ÁöÁ¡¿¡ ¾Ï½ÃÀû À庮ÀÌ ÀÖ½À´Ï´Ù. °³¹ßÀڴ ŽºÅ© ºí·Ï °£¿¡ ¶Ç´Â ŽºÅ© ºí·Ï ³» ÄÚµå¿Í ÇØ´ç ŽºÅ© ºí·Ï ¹Û¿¡ Àִ ŽºÅ© ºí·ÏÀÇ ÄÚµå °£¿¡ µðÆæ´ø½Ã°¡ Á¸ÀçÇÏÁö
¾Ê°Ô Çϰųª
µðÆæ´ø½Ã°¡ ÀûÀýÇÏ°Ô µ¿±âÈµÇ°Ô ÇÒ Ã¥ÀÓÀÌ ÀÖ½À´Ï´Ù. ±×¸² 4´Â À̸¦ º¸¿©ÁÖ´Â ¿¹ÀÔ´Ï´Ù.
|
|
|
|
|
|
±×¸² 4: OpenMP3 3.0 ŽºÅ© Å¥À×ÀÇ ¿¹
|
|
|
±×¸² 4ÀÇ ¿¹¿¡¼´Â ´Ü ÇϳªÀÇ Å½ºÅ© Å¥°¡ ÇÊ¿äÇÕ´Ï´Ù. µû¶ó¼, ´Ü ÇϳªÀÇ ½º·¹µå(omp single)¸¦ »ç¿ëÇØ Å¥¸¦ ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. setQueens È£ÃâÀº ¼·Î µ¶¸³ÀûÀ̱⠶§¹®¿¡ ŽºÅ© °³³ä¿¡ Àß µé¾î¸Â½À´Ï´Ù. ¶ÇÇÑ Àü¿ë âÀÇ OpenMP ÇÁ·Î±×·¥¿¡¼ tasks, teams, locks, barriers, taskwaitsÀÇ »óÅ °Ë»ç¸¦ ½±°Ô ¸¸µå´Â, ¹Ù·Î ¾Æ·¡¿¡ ¼Ò°³µÈ ÀÎÅÚ Æз¯·¼ µð¹ö°Å ÀͽºÅټǿ¡
´ëÇÑ ¼³¸íÀ» Àо´Â °Íµµ ÁÁ½À´Ï´Ù.
|
|
|
|
|
¸Ç À§·Î
|
ÀÎÅÚ® Æз¯·¼ µð¹ö°Å ÀͽºÅÙ¼Ç
|
|
|
ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú´Â ¼³Ä¡ ÈÄ Visual StudioÀÇ µð¹ö±×(Debug) Ç® ´Ù¿î ¸Þ´º¸¦ ÅëÇØ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Â ÀÎÅÚ® Æз¯·¼ µð¹ö°Å ÀͽºÅÙ¼ÇÀ» Æ÷ÇÔÇÕ´Ï´Ù(±×¸² 5 ÂüÁ¶).
|
|
|
|
|
|
±×¸² 5: ÀÎÅÚ Æз¯·¼ µð¹ö°Å ÀͽºÅÙ¼ÇÀº Microsoft Visual StudioÀÇ µð¹ö±×(Debug) Ç® ´Ù¿î ¸Þ´º¸¦ ÅëÇØ ¾×¼¼½º°¡ °¡´ÉÇÕ´Ï´Ù
|
|
|
ÀÎÅÚ Æз¯·¼ µð¹ö°Å ÀͽºÅÙ¼ÇÀº º´·Ä ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ °øÀ¯ µ¥ÀÌÅÍ¿Í µ¥ÀÌÅÍ µðÆæ´ø½Ã¿¡ ´ëÇÑ Ãß°¡ Á¤º¸¿Í ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù. À̸¦ ÅëÇØ °³¹ß ÁֱⰡ ´õ¿í »¡¶óÁö°í ½É°¢ÇÑ ·±Å¸ÀÓ ¹®Á¦¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ´Â ÀáÀçÀû µ¥ÀÌÅÍ ¾×¼¼½º Ãæµ¹À» Á¶±â¿¡ ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú¸¦ ¼³Ä¡ÇÏ°í Visual Studio¸¦ ½ÃÀÛÇÏ°í ³ª¸é ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ SIMD(Single Instruction
Multiple Data) ½ÇÇàÀ» È°¿ëÇÒ ¶§¸¶´Ù ÀÎÅÚ Æз¯·¼ µð¹ö°Å ÀͽºÅÙ¼ÇÀ» »ç¿ëÇÒ ¼ö ÀÖ°í, º´·ÄÈµÈ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ OpenMP ½º·¹µùÀ» »ç¿ëÇÒ °æ¿ì ½ÇÇà È帧°ú ÀáÀçÀû ·±Å¸ÀÓ Ãæµ¹À» ÆľÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
°øÀ¯ µ¥ÀÌÅÍ À̺¥Æ® ¹ß°ß, ÇÔ¼ö ÀçÁøÀÔ ¹ß°ß, º´·ÄÈµÈ ÄÚµåÀÇ Á÷·ÄÈµÈ ½ÇÇàÀ» Æ÷ÇÔÇÑ OpenMP ÀÎ½Ä °°Àº ÀÎÅÚ Æз¯·¼ µð¹ö°Å ÀͽºÅÙ¼ÇÀÇ °í±Þ ±â´ÉÀ» È°¿ëÇÏ·Á¸é /debug:parallel ¿É¼ÇÀ» »ç¿ëÇØ ÀÎÅÚ ÄÄÆÄÀÏ·¯·Î Äڵ带 ÄÄÆÄÀÏÇÕ´Ï´Ù.
|
|
|
ÀÚ¼¼ÇÑ ³»¿ëÀº ÀÎÅÚ Æз¯·¼ µð¹ö°Å ÀͽºÅÙ¼Ç ¹é¼ (http://software.intel.com/en-us/articles/parallel-debugger-extension/
) ¸¦ ÂüÁ¶ÇϽʽÿÀ. ÀÌ ¹é¼´Â ÀÎÅÚ µð¹ö°Å ÀͽºÅټǿ¡ ´ëÇÑ ´õ¿í »ó¼¼ÇÑ Á¤º¸¿Í µð¹ö°Å ÀͽºÅÙ¼ÇÀÌ Á¦°øÇÏ´Â ÇýÅÃ, µð¹ö°Å ÀͽºÅÙ¼ÇÀÇ È°¿ë ¹æ¹ý µîÀ» Á¦°øÇÕ´Ï´Ù.
|
|
|
º´·Ä ÀÀ¿ë ÇÁ·Î±×·¥ °ü·Ã µð¹ö±ë Á¦Ç°À» Æò°¡ÇÏ·Á¸é ±Ô¸ð°¡ Å« ÀÎÅÚ Æз¯·¼ ½ºÆ©µð¿À Á¦Ç°À» °í·ÁÇØ º¸½Ê½Ã¿À. ¿©±â¿¡´Â ¸Þ¸ð¸® ´©¼ö ºÐ¼® ¹× ½º·¹µå °Ë»ç µµ±¸¸¦ Á¦°øÇÏ´Â ÀÎÅÚ Æз¯·¼ ÀνºÆåÅÍ°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ¶ÇÇÑ ÇÖ½ºÆÌ(¼º´É º´¸ñ ÁöÁ¡) ºÐ¼®°ú º´Ç༺ °Ë»ç µµ±¸¸¦ Á¦°øÇÏ´Â ÀÎÅÚ Æз¯·¼ ¾ÚÇø®ÆÄÀ̾ Æ÷ÇԵǾî ÀÖ¾î º´·ÄÈµÈ ÄÚµå ¹× µ¥ÀÌÅ͸¦ ÀνÄÇÏ°í
Äڵ带 µð¹ö±ëÇÏ¿© Á¤È®¼ºÀ» À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÎÅÚ Æз¯·¼ ½ºÆ©µð¿À´Â ÀÎÅÚ Æз¯·¼ µð¹ö°Å ÀͽºÅÙ¼ÇÀ» ºñ·ÔÇÏ¿© ÀÌ·¯ÇÑ ¸ðµç ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù.
|
|
³ÇØÇÑ º´·Ä ·çÇÁ ÃÖÀûÈ
|
|
|
¹Ýº¹ µ¶¸³¼ºÀ» °®´Â µ¥ÀÌÅÍ º´·Ä¼ºÀ» Ç¥½ÃÇÏ´Â ¾Ë°í¸®ÁòÀº "³ÇØÇÑ º´·Ä" Äڵ带 º¸¿©ÁÖ´Â ·çÇÁ¿¡ ÀûÇÕÇÕ´Ï´Ù. ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú´Â ÃÖ¼ÒÇÑÀÇ ³ë·ÂÀ¸·Î ÀÌ·¯ÇÑ ·çÇÁÀÇ ¼º´ÉÀ» ±Ø´ëÈÇÏ´Â ¼¼ °¡Áö ¹æ¹ýÀ» Á¦½ÃÇÕ´Ï´Ù. ±× ¼¼ °¡Áö ¹æ¹ýÀº ÀÚµ¿ º¤ÅÍÈ, ÀÎÅÚ ÃÖÀûÈ valarray ÄÁÅ×À̳ÊÀÇ »ç¿ë ±×¸®°í ÀÚµ¿ º´·ÄÈÀÔ´Ï´Ù. ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú´Â ÀÚµ¿ º¤ÅÍÈ¿¡
ÀûÇÕÇÑ ·çÇÁ¸¦
ÀÚµ¿À¸·Î ã¾Æ³À´Ï´Ù. ¿©±â¿¡´Â Á¤Àû ¶Ç´Â µ¿Àû ¹è¿, ¹éÅÍ ¹× valarray ÄÁ³×À̳ʰ¡ ÀÖ´Â ¸í½ÃÀû ·çÇÁ ¶Ç´Â ¸í½ÃÀû ·çÇÁ°¡ ÀÖ´Â »ç¿ëÀÚ Á¤ÀÇ C++ Ŭ·¡½º°¡ Æ÷ÇԵ˴ϴÙ. Ưº°ÇÑ °æ¿ì·Î¼ ¾Ï½ÃÀû valarray ·çÇÁ°¡ ÀÚµ¿ ¹éÅÍȵǰųª ÀÎÅÚ ÅëÇÕ ¼º´É ÇÁ¸®¹ÌƼºê(IPP)ÀÇ ¶óÀ̺귯¸® ÇÁ¸®¹ÌƼºê¸¦ ½ÇÇàÇϵµ·Ï Áö½ÃµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÚµ¿ ¹éÅÍÈ ¹× ÃÖÀûÈµÈ valarray Çì´õÀÇ »ç¿ëÀº ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¼º´ÉÀ» ÃÖÀûÈÇØ ½ºÆ®¸®¹Ö SIMD ÀͽºÅÙ¼ÇÀ» Áö¿øÇÏ´Â ÇÁ·Î¼¼¼¸¦ ¿Ïº®ÇÏ°Ô È°¿ëÇÕ´Ï´Ù.
|
|
|
Àá½Ã ÈÄ¿¡ ÀÎÅÚ ÃÖÀûÈ valarray Çì´õÀÇ È°¼ºÈ ¹æ¹ýÀ» »ìÆ캸°Ú½À´Ï´Ù. ±×·¯³ª ¸ÕÀú ¸í½ÃÀû valarray, ¹éÅÍ ·çÇÁ ¹× ¾Ï½ÃÀû valarray ·çÇÁÀÇ ¿¹¸¦ º¸¿©ÁÖ´Â ±×¸² 6À» »ìÆ캸°Ú½À´Ï´Ù.
|
|
|
|
|
|
±×¸² 6: À§ÀÇ ¼Ò½º ÄÚµå´Â ¸í½ÃÀû valarray, ¹éÅÍ ·çÇÁ ¹× ¾Ï½ÃÀû valarray ·çÇÁÀÇ ¿¹¸¦ º¸¿©ÁÝ´Ï´Ù
|
|
|
ÃÖÀûÈµÈ valarray Çì´õ¸¦ »ç¿ëÇÏ·Á¸é ÀÎÅÚ ÅëÇÕ ¼º´É ÇÁ¸®¹ÌƼºêÀÇ »ç¿ëÀ» ºôµå ÄÄÆ÷³ÍÆ® ¼±ÅÃ(Build Component Selection)À¸·Î ÁöÁ¤ÇÏ°í ¸í·ÉÁÙ ¿É¼ÇÀ» ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. À̸¦ À§ÇØ ¸ÕÀú ÇÁ·ÎÁ§Æ®¸¦ Visual Studio·Î ºÒ·¯¿Â ÈÄ ÇÁ·ÎÁ§Æ® ¼Ó¼º Æ˾÷ âÀ» ¿±´Ï´Ù. "Ãß°¡ ¿É¼Ç(Additional Options)" »óÀÚ¿¡¼ "/Quse-intel-optimizedheaders" ¸¦ Ãß°¡ÇÏ°í
"È®ÀÎ(OK)"À» Ŭ¸¯ÇÕ´Ï´Ù. ±×¸² 7Àº ÀÌ ¹æ¹ýÀ» º¸¿©ÁÖ´Â ¿¹ÀÔ´Ï´Ù.
|
|
|
|
|
|
±×¸² 7: ÃÖÀûÈµÈ Çì´õ ÆÄÀÏÀÇ »ç¿ëÀ» À§ÇØ ¸í·É¾î¸¦ Visual C++ÀÇ ¸í·É ¶óÀο¡ Ãß°¡Çϱâ
|
|
|
´ÙÀ½À¸·Î ÇÁ·ÎÁ§Æ®(Project) ¸Þ´º¿¡¼ ºôµå ÄÄÆ÷³ÍÆ® ¼±Åà (Build Component Selection) Æ˾÷À» ¿±´Ï´Ù. "ÀÎÅÚ ÅëÇÕ ¼º´É ÇÁ¸®¹ÌƼºê(Intel Integrated Performance Primitives)"ÀÇ ¿À¸¥ÂÊ¿¡ ÀÖ´Â »óÀÚ¿¡¼ "°øÅë(Common)"À» ¼±ÅÃÇÑ ÈÄ "È®ÀÎ (OK)"À» Ŭ¸¯ÇÕ´Ï´Ù. ±×¸² 8Àº À̸¦ º¸¿©ÁÖ´Â ¿¹ÀÔ´Ï´Ù. ±×·¯°í ³ª¸é ÀÀ¿ë ÇÁ·Î±×·¥À» À籸ÃàÇÒ
¼ö ÀÖ°í, ÀÀ¿ë ÇÁ·Î±×·¥À» º¯°æÇÒ ¶§¿Í ¸¶Âù°¡Áö·Î ¼º´É°ú ÇൿÀ» °Ë»çÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
|
|
|
±×¸² 8: Visual Studio¿¡ ÀÎÅÚ IPP¸¦ »ç¿ëÇ϶ó°í Áö½Ã
|
|
|
ÀÚµ¿ º´·ÄÈ´Â º´·Ä·Î ¾ÈÀüÇÏ°Ô ½ÇÇàÇÒ ¼ö ÀÖ´Â º´·Ä ·çÇÁ¸¦ ã°í ¸ÖƼ½º·¹µå Äڵ带 ÀÚµ¿À¸·Î »ý¼ºÇÏ¿© ¸ÖƼ ÄÚ¾î ÇÁ·Î¼¼¼¸¦ È°¿ëÇÔÀ¸·Î½á ÀÀ¿ë ÇÁ·Î±×·¥ ¼º´ÉÀ» Çâ»ó½Ãŵ´Ï´Ù. ÀÚµ¿ º´·Äȸ¦ »ç¿ëÇÏ¸é »ç¿ëÀÚ°¡ ¹Ýº¹ ÆÄƼ¼Å´×, µ¥ÀÌÅÍ °øÀ¯, ½º·¹µå ½ºÄÉÁÙ¸µ ¹× µ¿±âÈ¿Í °°Àº ÇÏÀ§ ·¹º§ÀÇ ¼¼ºÎ ÀÛ¾÷À» ó¸®ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
|
|
|
ÀÚµ¿ º´·ÄÈ´Â ÀÚµ¿ º¤ÅÍȸ¦ ¼öÇàÇÏ°í ÃÖÀûÈµÈ valarray Çì´õ¸¦ »ç¿ëÇÏ¿© SSE¸¦ Áö¿øÇÏ´Â ¸ÖƼ ÄÚ¾î ½Ã½ºÅÛ¿¡¼ ¼º´ÉÀ» ÃÖ´ëÈÇÕ´Ï´Ù. ¸ÖƼ½º·¹µå ÀÀ¿ë ÇÁ·Î±×·¥ Áö¿ø¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº »ç¿ëÀÚ ¾È³»¼£¨http://
software.intel.com/en-us/intel-parallel-composer/·Î À̵¿ÇÑ ÈÄ ¼³¸í¼(documentation) ¸µÅ© Ŭ¸¯)¸¦ ÂüÁ¶ÇϽʽÿÀ.
|
|
|
|
|
¸Ç À§·Î
|
ÀÎÅÚ® ½º·¹µù ºôµù ºí·Ï
|
½º·¹µå¸¦ ¾ÈÁ¤¼º, À̽ļº ¹× È®À强ÀÌ ¶Ù¾î³ º´·Ä ÀÀ¿ë ÇÁ·Î±×·¥À» »ý¼ºÇÏ´Â ÀÛ¾÷À¸·Î Ãß»óÈÇÏ´Â ¼ö»ó °æ·ÂÀÇ C++ ÅÛÇø´ ¶óÀ̺귯¸®ÀÎ ÀÎÅÚ ½º·¹µù ºôµù ºí·Ï(ÀÎÅÚ TBB). ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú¿¡ Æ÷ÇÔµÈ ÀÎÅÚ TBB´Â ÀÎÅÚ C++ ÄÄÆÄÀÏ·¯ ¶Ç´Â Microsoft Visual C++¿Í ÇÔ²² »ç¿ëÇÒ ¼ö Àִ ǥÁØ ÅÛÇø´ ¶óÀ̺귯¸®(STL)ÀÔ´Ï´Ù.
|
|
ÀÎÅÚ TBB´Â º´·Ä ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¼¼ °¡Áö ÁÖ¿ä ¹®Á¦¸¦ ÇØ°áÇÕ´Ï´Ù.
|
|
|
»ý»ê¼º: º´·ÄÈ ±¸Çö °£¼ÒÈ
|
|
|
Á¤È®¼º: º´·Ä µ¿±âÈ ¹®Á¦ Á¦°Å
|
|
|
À¯Áöº¸¼ö: ÇöÀç»Ó¸¸ ¾Æ´Ï¶ó ¹Ì·¡ÀÇ ÀÀ¿ë ÇÁ·Î±×·¥ °³¹ßµµ Áö¿ø
|
|
ÀÎÅÚ TBB »ç¿ë ½Ã ÀÌÁ¡:
|
|
|
¹Ì·¡ º¸ÀåÇü(Future-proof) ÀÀ¿ë ÇÁ·Î±×·¥: ÄÚ¾î ¼ö¿Í ½º·¹µå ¼ö°¡ Áõ°¡ÇÔ¿¡ µû¶ó, ÀÎÅÚ TBBÀÇ Á¤±³ÇÑ Å½ºÅ© ½ºÄÉÁÙ·¯¸¦ »ç¿ëÇÏ¿© ÀÀ¿ë ÇÁ·Î±×·¥ ¼Óµµµµ Çâ»óµË´Ï´Ù.
|
|
|
À̽ļº: º´·Äȸ¦ ÇÑ ¹ø¸¸ ±¸ÇöÇÏ¿© ¿©·¯ Ç÷§Æû¿¡¼ ½º·¹µå Äڵ带 ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
»óÈ£ ¿î¿ë¼º: ´Ù¾çÇÑ ½º·¹µù ¹æ¹ý, Çϵå¿þ¾î ¹× ¿î¿µ üÁ¦¿¡¼ ÀÛµ¿ÇÕ´Ï´Ù.
|
|
|
È°¼ºÈµÈ ¿ÀÇ ¼Ò½º Ä¿¹Â´ÏƼ: ÀÎÅÚ TBB´Â ¿ÀÇ ¼Ò½º ¹öÀüÀ¸·Îµµ Á¦°øµË´Ï´Ù. opentbb.org´Â Æ÷·³, ºí·Î±×, ÄÚµå »ùÇà µîÀ» Á¦°øÇÏ´Â È°¼ºÈµÈ »çÀÌÆ®ÀÔ´Ï´Ù.
|
|
ÀÎÅÚ TBB´Â º´·Äȸ¦ À§ÇÑ Æ÷°ýÀûÀÌ°í Ãß»óÈµÈ ÅÛÇø´, ÄÁÅ×ÀÌ³Ê ¹× Ŭ·¡½º¸¦ Á¦°øÇÕ´Ï´Ù. ±×¸² 9´Â ÀÎÅÚ TBB ³» ÁÖ¿ä ±â´É ±×·ìÀ» º¸¿©ÁÝ´Ï´Ù.
|
|
±×¸² 9: ÀÎÅÚ® TBB ³» ÁÖ¿ä ±â´É ±×·ì
|
|
|
±×¸² 10: ÀÎÅÚ® TBB´Â ¼¼ °¡Áö ÁÖ¿ä º´·ÄÈ ¹®Á¦¸¦ ÇØ°áÇÕ´Ï´Ù
|
|
|
|
|
¸Ç À§·Î
|
ÀÎÅÚ® ÅëÇÕ ¼º´É ÇÁ¸®¹ÌƼºê (ÀÎÅÚ IPP)
|
|
|
ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú¿¡´Â ÀÎÅÚ ÅëÇÕ ¼º´É ÇÁ¸®¹ÌƼºê°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ÀÎÅÚ IPP´Â ¸ÖƼ¹Ìµð¾î, µ¥ÀÌÅÍ Ã³¸®, Åë½Å ÀÀ¿ë ÇÁ·Î±×·¥À» À§ÇØ ¸ÖƼ Äھ ÃÖÀûÈµÈ ¼ÒÇÁÆ®¿þ¾î ÇÔ¼ö·Î ±¸¼ºµÈ ±¤¹üÀ§ÇÑ ¶óÀ̺귯¸®ÀÔ´Ï´Ù. ÀÎÅÚ IPP´Â ºñµð¿À ÄÚµù, ½ÅÈ£ ó¸®, ¿Àµð¿À ÄÚµù, À̹ÌÁö ó¸®, À½¼º ÄÚµù, JPEG ÄÚµù, À½¼º ÀνÄ, ÄÄÇ»ÅÍ ¿µ»ó, µ¥ÀÌÅÍ ¾ÐÃà, À̹ÌÁö »ö»ó º¯È¯,
Å©¸³Åä±×¶óÇÇ, ½ºÆ®¸µ ó¸®/±ÔÄ¢Àû ½Ä, º¤ÅÍ/¸ÅÆ®¸¯½º ¼öÇÐ µî¿¡¼ ÀÚÁÖ »ç¿ëµÇ´Â ±âº» ¾Ë°í¸®ÁòÀ» Æ÷ÇÔÇÏ´Â ÃÖÀûÈµÈ ¼öõ °³ÀÇ ÇÔ¼ö¸¦ Á¦°øÇÕ´Ï´Ù.
|
|
|
ÀÎÅÚ IPP¿¡´Â ¼öÀÛ¾÷À» ÅëÇØ ÃÖÀûÈµÈ ±âº» ¼öÁØÀÇ ÇÔ¼ö¿Í ÄÚµ¦ µî °í±Þ ½º·¹µå »ùÇÃÀÌ ¸ðµÎ Æ÷ÇԵǾî ÀÖÀ¸¸ç Visual C++ ¹× .NET °³¹ß¿ëÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¸ðµç ÇÔ¼ö¿Í »ùÇÃÀº ½º·¹µå¿¡ ¾ÈÀüÇÏ¸ç ´ë´Ù¼ö°¡ ³»ºÎÀûÀ¸·Î ½º·¹µùµÇ¾î ÀÖ¾î ÇöÀçÀÇ ¸ÖƼ ÄÚ¾î ÇÁ·Î¼¼¼¸¦ ÃÖ´ë·Î È°¿ëÇÏ°í ÇâÈÄ ¸Å´ÏÄÚ¾î(manycore) ÇÁ·Î¼¼¼±îÁö È®ÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
|
|
|
±×¸² 11: ÀÎÅÚ® ÅëÇÕ ¼º´É ÇÁ¸®¹ÌƼºê´Â ÀÎÅÚ® Æз¯·¼ ½ºÆ©µð¿ÀÀÇ ÀϺÎÀÎ ÀÎÅÚ® Æз¯·¼ ÄÄÆ÷Àú¿¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç, À§¿¡ ³ª¿µÈ ´Ù¾çÇÑ µµ¸ÞÀλ󿡼 ½º·¹µùµÇ°í ½º·¹µå¿¡ ¾ÈÀüÇÑ ¶óÀ̺귯¸® ÇÔ¼ö¸¦ Á¦°øÇÕ´Ï´Ù
|
|
|
ÀÎÅÚ IPP ¼º´É
|
ÀÀ¿ë ÇÁ·Î±×·¥ ¹× ¿öÅ©·Îµå¿¡ µû¶ó ÀÎÅÚ IPP ÇÔ¼ö´Â ÄÄÆÄÀÏµÈ ÇØ´ç C Äڵ庸´Ù ´õ »¡¸® ¿©·¯ ¹ø ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡¿¡ ³ª¿À´Â À̹ÌÁö Å©±â Á¶Á¤ ¿¹¸¦ º¸¸é, ÄÄÆÄÀÏµÈ C++ Äڵ忡¼ ½ÇÇàÇÒ ¶§´Â 338 ms(¸¶ÀÌÅ©·ÎÃÊ)°¡ °É·ÈÁö¸¸, ÀÎÅÚ IPP À̹ÌÁö ó¸® ÇÔ¼ö¸¦ »ç¿ëÇßÀ» ¶§´Â 111 ms ¹Û¿¡ °É¸®Áö ¾Ê¾Ò½À´Ï´Ù. Áï ¼º´ÉÀÌ 300% Çâ»óµÈ ¼ÀÀÔ´Ï´Ù.
|
|
±×¸² 12: ÀÌ À̹ÌÁö Á¶Á¤ ¿¹¿¡¼(256x256ºñÆ®¿¡¼ 460x332ºñÆ®·Î) ÀÎÅÚ® IPP »ç¿ë ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ °æ¿ì ½ÇÇà ½Ã°£ÀÌ 111 msÀÎ °Í¿¡ ¹ÝÇØ, ÄÄÆÄÀÏµÈ C++ ÄÚµåÀÇ °æ¿ì¿¡´Â ½ÇÇà ½Ã°£ÀÌ 338 msÀ̾ú½À´Ï´Ù(½Ã½ºÅÛ ±¸¼º: ÀÎÅÚ® Á¦¿Â, 2.9 GHz, 2°³ ÇÁ·Î¼¼¼, ÇÁ·Î¼¼¼´ç 4°³ ÄÚ¾î, ÇÁ·Î¼¼¼´ç 2°³ ½º·¹µå)
|
|
Visual Studio¿¡¼ ÀÎÅÚ IPP »ç¿ë
|
|
|
Microsoft Visual Studio ÇÁ·ÎÁ§Æ®¿¡ ÀÎÅÚ IPP Áö¿øÀ» ½±°Ô Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÎÅÚ Æз¯·¼ ÄÄÆ÷Àú¿¡´Â ÀÎÅÚ IPP ¶óÀ̺귯¸® À̸§ ¹× °æ·Î¸¦ Visual Studio ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÒ ¼ö ÀÖ´Â ¸Þ´º¿Í ´ëÈ »óÀÚ°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. ´Ü¼øÈ÷ ¼Ö·ç¼Ç Ž»ö±â(Solution Explorer)¿¡¼ ÇÁ·ÎÁ§Æ® À̸§À» Ŭ¸¯ÇÏ°í ÀÎÅÚ ºôµå ÄÄÆ÷³ÍÆ® ¼±ÅÃ(Intel Build Components Selection) ¸Þ´º
Ç׸ñÀ» ¼±ÅÃÇÑ ÈÄ, ºôµå ÄÄÆ÷³ÍÆ®(Build Components) ´ëÈ »óÀÚ¸¦ »ç¿ëÇÏ¿© ÀÎÅÚ IPP ¸¦ Ãß°¡ÇÕ´Ï´Ù. ±×·± ´ÙÀ½¿¡´Â ´ÙÀ½ Çì´õ¿Í ÀÛµ¿ Äڵ带 Æ÷ÇÔÇÏ¿© ÇÁ·ÎÁ§Æ®¿¡ ÀÎÅÚ IPP Äڵ带 Ãß°¡Çϱ⸸ ÇÏ¸é µË´Ï´Ù. ºôµå ¼±ÅÃ(Build Selection) ´ëÈ »óÀÚ¿¡¼ ÀÚµ¿À¸·Î ¶óÀ̺귯¸® À̸§À» IPP¿ë ¸µÄ¿¿¡ Ãß°¡ÇÏ°í ÀÎÅÚ IPP ¶óÀ̺귯¸®¿¡ °æ·Î¸¦ Ãß°¡ÇÕ´Ï´Ù.
|
|
|
C++ ÇÁ·ÎÁ§Æ® ¿Ü¿¡µµ, Æ÷ÇÔµÈ ·¦ÆÛ Å¬·¡½º¸¦ »ç¿ëÇÏ´Â C# ÇÁ·ÎÁ§Æ®¿¡¼ ¹®ÀÚ¿ ó¸®, À̹ÌÁö ó¸®, ½ÅÈ£ ó¸®, »ö»ó º¯È¯, Å©¸³Åä±×¶óÇÇ, µ¥ÀÌÅÍ ¾ÐÃà, JPEG, ¸ÅÆ®¸¯½º ¹× º¤ÅÍ ¼öÇаú °ü·ÃÇÏ¿© C#¿¡¼ÀÇ ÀÎÅÚ IPP ÇÔ¼ö È£ÃâÀ» Áö¿øÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
|
|
|
|
|
±×¸² 13: ÀÎÅÚ® IPP ¶óÀ̺귯¸® È£ÃâÀ» Visual Studio* Äڵ忡 ½±°Ô ÅëÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù
|
|
|
|
|