1 00:00:00,000 --> 00:00:02,000 ÀÚ¸·Á¦ÀÛ: Á¤Àç¿ø(all2one) http://vsts2010.net http://gl3d.net µÎ¹ø° ºä´Â ´ÙÁß½ºÅúäÀÔ´Ï´Ù. 2 00:00:02,142 --> 00:00:07,450 ÀÌ°ÍÀº ´ÙÁß½º·¹µåºä¿Í ŽºÅ©ºä ¸ðµÎ¿¡ À¯¿ëÇÕ´Ï´Ù. 3 00:00:07,950 --> 00:00:20,933 À̵éÀ» ÅëÇØ ¿©·¯ºÐÀÇ ÀÀ¿ëÇÁ·Î±×·¥À» Á»´õ Å« ½Ã¾ß·Î »ìÆ캼 ¼ö ÀÖ½À´Ï´Ù. ÀÚ, µð¹ö°Å¿¡¼­ ½ÃÀÛÇغ¸ÁÒ. 4 00:00:25,074 --> 00:00:32,858 ¿©±â ŽºÅ©ºä°¡ ÀÖ½À´Ï´Ù. º¸Åë ½º·¹µåºä°¡ ÀÖ´Â ÀÚ¸®¿¡ À§Ä¡ÇØ ÀÖ½À´Ï´Ù. 5 00:00:33,358 --> 00:00:38,927 ÀÏ·ÃÀÇ Å½ºÅ©µéÀ» È®ÀÎÇÒ ¼ö Àִµ¥¿ä, ÇöÀç ³×³ðÀÌ µ¹°í ÀÖ±º¿ä. ÁÁ³×¿ä. ÀÌ ¸Ó½ÅÀº ÄõµåÄÚ¾î´Ï±î¿ä. 6 00:00:39,427 --> 00:00:43,275 °¢°¢ÀÇ È£Ãâ ½ºÅÃÀ» È®ÀÎÇÒ ¼ö ÀÖ°í¿ä, 7 00:00:43,456 --> 00:00:46,056 ÀÌ µÑÀº ¶÷´Ù¸¦ ¼öÇà ÁßÀÌ°í¿ä, 8 00:00:46,220 --> 00:00:53,627 ±× ´ÙÀ½¿¡ ÇöÀç µ¹°í ÀÖÁö ¾ÊÀº 10°³ ³²ÁþÀÇ Å½ºÅ©°¡ ½ºÄÌÁÙ¸µ µÇ¾î ÀÖ´Â °ÍÀÌ º¸ÀÔ´Ï´Ù. 9 00:00:53,766 --> 00:00:57,692 ¸¶Áö¸·À¸·Î ¸Ç¹Ø¿¡ ´ë±â ÁßÀÎ µÎ ŽºÅ©°¡ º¸ÀÔ´Ï´Ù. 10 00:00:58,011 --> 00:00:59,876 ÇùÁ¶Àû ºí·ÏÅ·(cooperative blocking)¿¡ ´ëÇؼ­ À̾߱âÇß¾úÁÒ. 11 00:00:59,989 --> 00:01:04,750 ƯÁ¤ ŽºÅ©¸¦ ±â´Ù¸®°Ô ÇÔÀ¸·Î½á ºí·ÏÅ·µÈ »óȲÀ» ¿©±â¼­ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. 12 00:01:13,882 --> 00:01:17,041 ´Ù¸¥ ŽºÅ©¸¦ ¼±ÅÃÇϸé ÇÏ´ÜÀÇ ½ºÅÃÀÌ ¹Ù²î´Â °ÍÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù. 13 00:01:18,290 --> 00:01:21,588 ±×·¡¼­ ƯÁ¤ ŽºÅ©°¡ ¾î¶² È£Ã⽺Åà »óÅ¿¡ ÀÖ´ÂÁö È®ÀÎÇÒ ¼ö Àִ°ÍÀÌÁÒ. 14 00:01:24,256 --> 00:01:27,690 ´ÙÀ½À¸·Î ´ÙÁß½ºÅú並 º¸¸é, 15 00:01:29,997 --> 00:01:35,443 ŽºÅ©µéÀ» ºÎ¸ð-ÀÚ½ÄÀÇ °èÃþ±¸Á¶·Î º¼ ¼ö ÀÖ½À´Ï´Ù. 16 00:01:35,659 --> 00:01:43,020 parallel_for°¡ ÀÌ °æ¿ì¿¡´Â ÀÚ½Ä Å½ºÅ©µéÀÌ º¸ÀÌ´Â °Íó·³ ½ºÄÉÁÙ¸µµÈ ÇüÅ·Π±¸ÇöµÈ °ÍÀÌÁÒ. 17 00:01:43,262 --> 00:01:45,219 °¢ ŽºÅ©ÀÇ ½ºÅà »óȲµµ º¸ÀÔ´Ï´Ù. 18 00:01:45,409 --> 00:01:46,828 ½º·¹µåºäµµ º¼ ¼ö Àִµ¥¿ä, 19 00:01:47,561 --> 00:01:54,320 ÀÌ·¸°Ô ÁÜÀ» µ¹·Áº¸¸é È°¼º ½ºÅÃÀÌ ÇÏÀ̶óÀÌÆ®µÇ¾î ÀÖÀ½À» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. 20 00:01:54,420 --> 00:02:03,274 ÀÌ ³ðÀ» Ŭ¸¯Çؼ­ ±× ½ºÅà ÇÁ·¹ÀÓÀ¸·Î ÀüȯÇÒ ¼ö ÀÖ½À´Ï´Ù. 21 00:02:03,825 --> 00:02:06,861 ÀÌ·¸°Ô À§·Î °¡¼­ ¸î °³ÀÇ ½º·¹µå°¡ ½ºÅÿ¡ ºí·ÏµÇ¾î ÀÖ´ÂÁö È®Àεµ °¡´ÉÇÕ´Ï´Ù. 22 00:02:07,517 --> 00:02:11,871 ÀÌ ³ðÀº ´Ü¼øÇؼ­ º°°Ô ¾øÁö¸¸, Á»´õ º¹ÀâÇÑ ÀÀ¿ëÇÁ·Î±×·¥ÀÇ °æ¿ì¿£ ¸Å¿ì À¯¿ëÇÑ ±â´ÉÀ̶ó ÇÏ°Ú½À´Ï´Ù. 23 00:02:12,010 --> 00:02:18,024 À̹Ì¡ µ¥¸ð¸¸ Çصµ ¸¹Àº ½º·¹µå°¡ ¸¹Àº ÄÄÆ÷³ÍÆ®µéÀ» µ¿½Ã¿¡ µ¹¸®°í ÀÖ½À´Ï´Ù. 24 00:02:32,977 --> 00:02:38,152 ÀÌÁ¦ PPL¿¡¼­ÀÇ ¾Ë°í¸®Áò Áö¿øÀ» »ìÆ캸ÁÒ. 25 00:02:41,185 --> 00:02:46,817 ¿ì¸®°¡ ÁÖ·ÂÇß´ø °Í Áß Çϳª´Â ³ÐÀº ¿É¼Ç Áö¿ø°ú Àͼ÷ÇÔÀÇ À¯ÁöÀÔ´Ï´Ù. 26 00:02:46,951 --> 00:02:52,714 ±×·¡¼­ ¿ì¸®´Â STL ½ºÅ¸ÀÏÀÇ ¾Ë°í¸®Áò Áö¿øÀ» ÅëÇØ È£È¯¼º°ú Á¶ÇÕ°¡´É¼ºÀ» ³ôÀÌ°í ÀÖ½À´Ï´Ù. 27 00:02:53,114 --> 00:02:57,979 ÀÌ´Â ¿ì¸®°¡ Á¦°øÇÏ´Â ¾Ë°í¸®ÁòµéÀÌ ¹Ýº¹ÀÚ¸¦ Áö¿øÇÏ°í 28 00:02:59,776 --> 00:03:06,794 STL°ú À¯»çÇÑ ½Ã±×³Êó³ª ¸í¸í ±ÔÄ¢, ½Ã¸¸Æ½ µîÀ» »ç¿ëÇÔÀ» ¶æÇÕ´Ï´Ù. 29 00:03:07,028 --> 00:03:09,689 ¹°·Ð, ÀϺΠ½Ã¸¸Æ½Àº º´·Ä¼º Áö¿øÀ» À§ÇØ ¾à°£ º¯ÇüµÇ°ÚÁö¸¸¿ä. 30 00:03:13,914 --> 00:03:20,416 ¾Õ¿¡¼­ º» parallel_for°¡ ÀÖ°í¿ä, °£´ÜÈ÷ À妽º ¹üÀ§¿¡ ´ëÇÑ ÀÌÅÍ·¹À̼ÇÀ» Á¦°øÇÕ´Ï´Ù. 31 00:03:20,550 --> 00:03:33,504 ÀÌ´Â ÅÛÇø´ ÇÔ¼öÀ̹ǷΠ++ ¿¬»êÀÚ¿Í += ¿¬»êÀÚ¸¦ Áö¿øÇÏ´Â ¾î¶°ÇÑ Å¸ÀÔ¿¡¶óµµ Àû¿ë°¡´ÉÇÕ´Ï´Ù. 32 00:03:34,408 --> 00:03:40,122 parallel_for_each´Â º¤Å͸¦ ÃëÇØ ÀÌÅÍ·¹ÀÌÆ®ÇÏ´Â ¹öÀüÀÔ´Ï´Ù. 33 00:03:40,824 --> 00:03:44,723 º¤Å͸¦ Ãß»óÈ­Çؼ­ ½ÇÁ¦·Î´Â ¸®½ºÆ®¸¦ ³Ñ±æ ¼öµµ ÀÖ½À´Ï´Ù. 34 00:03:45,223 --> 00:03:50,057 ±×·¡¼­ ¸®½ºÆ®¿¡ ´ëÇØ µ¿½Ã¿¡ ÀÌÅÍ·¹ÀÌÆ®ÇÏ´Â °ÍÀÌ °¡´ÉÇѵ¥, ¿©±â¿¡ ¿ì¸®´Â ÅÛÇø´ Ư¼öÈ­¸¦ »ç¿ëÇÏ¿´½À´Ï´Ù. 35 00:03:57,812 --> 00:03:59,571 ´ÙÀ½Àº parallel_accumulate ÀÔ´Ï´Ù. 36 00:04:01,934 --> 00:04:06,017 º´·Ä¼º Àü¹®°¡µéÀº À̸¦ 'reduce'¶ó°í ºÎ¸£±â¸¦ ¼±È£ÇÕ´Ï´Ù. 37 00:04:06,983 --> 00:04:10,836 ÇÏÁö¸¸ ÀÌ´Â ½ÇÁ¦·Î ¸Å¿ì ±âÃÊÀûÀÎ ¾Ë°í¸®ÁòÀ¸·Î 38 00:04:10,870 --> 00:04:15,132 STLÀÇ ´Ù¸¥ ¸¹Àº ¾Ë°í¸®ÁòµéÀ» °¡´ÉÇÏ°Ô ÇØÁÖ´Â ³à¼®ÀÔ´Ï´Ù. 39 00:04:15,233 --> 00:04:26,136 ´ÏÄݶó½ºÀÇ ¼¼¼Ç¿¡¼­ parallel_accumulate¸¦ Áö¿øÅä·Ï Çö PPLÀ» È®ÀåÇÏ´Â °Í¿¡ ´ëÇØ ´Ù·êÅÙµ¥¿ä, ÇöÀç CTP°¡ À̳ðÀ» Áö¿øÇÏÁö ¾Ê¾Æ¼­Àε¥ ÀÌÈÄ º£Å¸¿¡ Áö¿øµÉ ¿¹Á¤ÀÔ´Ï´Ù. 40 00:04:29,131 --> 00:04:37,035 º¸½Ã´Â°Íó·³ ±âº» ÀÎÀÚ·Î ÁÖ¾îÁö´Â std::plus¸¦ »ç¿ëÅä·Ï ÇÒ ¼öµµ ÀÖ°í º°µµ ¿¬»êÀÚ¸¦ ÁöÁ¤ÇØÁÙ ¼öµµ ÀÖ½À´Ï´Ù. 41 00:04:37,967 --> 00:04:39,632 ´ÙÀ½Àº parallel_invoke ÀÔ´Ï´Ù. 42 00:04:40,797 --> 00:04:48,401 Äü¼ÒÆ®¿¡ À̳ðÀ» ¾µ ¼öµµ ÀÖ¾ú´Âµ¥¿ä, °£´ÜÈ÷ ÀÏ·ÃÀÇ ÇÔ¼ö°³Ã¼µéÀ» ÀÎÀÚ·Î ¹Þ¾Æ ½ÇÇàÇÏ°í ¿Ï·áµÇ±â¸¦ ±â´Ù¸®´Â ÇÔ¼öÀÔ´Ï´Ù. 43 00:04:49,300 --> 00:04:54,772 ¸¸¾à ½ÇÇà Áß ¿¹¿Ü°¡ ¹ß»ýÇÏ¸é ±×¸¦ ¸¶¼È¸µÇÑ ÈÄ ÃßÃâÇÏ°Ô µË´Ï´Ù. 44 00:04:55,272 --> 00:04:59,576 ŽºÅ©ÀÇ °æ¿ìµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ¸¶¼È¸µÇÑ ÈÄ ÃßÃâÇؼ­ ±×¸¦ ´ë±â ÁßÀÎ ÁöÁ¡À¸·Î ÇÕ·ù(join)ÇÏ°Ô ÇÕ´Ï´Ù. 45 00:05:03,402 --> 00:05:07,278 ÀÚ, ÀÌÁ¦ ¾Æ±î Àá½Ã º¸¿´µå·È´ø À̹Ì¡ µ¥¸ð¸¦ ´Ù½Ã »ìÆ캸ÁÒ. 46 00:05:22,713 --> 00:05:27,816 191ÃÊ°¡ °É·È±º¿ä. ¿À·¡ °É·È½À´Ï´Ù. 47 00:05:35,130 --> 00:05:37,130 ÀÚ, ¿©±â ÀÖ½À´Ï´Ù. 48 00:05:41,621 --> 00:05:44,893 ÀÌ ºÎºÐÀº Á÷·Ä ÀÛ¾÷ÀÔ´Ï´Ù. 49 00:05:45,168 --> 00:05:57,698 ÆÄÀÏÀ» ÀÐ°í ³ª¸é ½ÇÁ¦ ÇÊÅÍ ÀÛ¾÷Àº º´·ÄÈ­°¡ °¡´ÉÇѵ¥¿ä, ¿©±â SeqGaussianBlur, SeqGlowFilter µÎ ÇÔ¼öÀÇ º´·Ä ¹öÀüÀ» ¹Ì¸® ¸¸µé¾î µÎ¾ú½À´Ï´Ù. 50 00:06:08,243 --> 00:06:10,890 º´·Ä ¹öÀüÀ» ½ÇÁ¦ ã¾Æ°¡º¸¸é, 51 00:06:14,284 --> 00:06:21,171 parallel_for ¸¦ È®ÀÎÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. 52 00:06:21,893 --> 00:06:25,930 ¶÷´Ù¿¡¼­ ¾à°£ ´Ù¸¥ ĸÃÄ ½Ã¸¸Æ½À» »ç¿ëÇÏ°í ÀÖÀ½¿¡ ÁÖ¸ñÇϼ¼¿ä. 53 00:06:26,031 --> 00:06:30,515 C# µ¨¸®°ÔÀÌÆ®¿¡ Àͼ÷ÇÑ ºÐµéÇÑÅ×´Â ¾à°£ »ý¼ÒÇÑ °ÍÀÏÅÙµ¥¿ä, 54 00:06:30,549 --> 00:06:38,856 C++ ¶÷´Ù´Â »ó´çÈ÷ dzºÎÇÑ Ä¸ÃÄ ½Ã¸¸Æ½À» Áö¿øÇÕ´Ï´Ù. ÂüÁ¶·Î ȤÀº °ªÀ¸·Î ĸÃÄ°¡ °¡´ÉÇÏ°í¿ä, º¹»ç¸¦ Çؼ­ mutable(¼öÁ¤°¡´É)ÇÏ°Ô ¸¸µé ¼öµµ ÀÖ½À´Ï´Ù. 55 00:06:40,454 --> 00:06:49,496 ÀÌÁ¦, µ¹·Áº¾½Ã´Ù. ¸»¾¸µå·È´Ù½ÃÇÇ À̳ðÀº ÄõµåÄÚ¾îÀÔ´Ï´Ù. 56 00:06:52,976 --> 00:06:57,778 ¿©ÀüÈ÷ ¸¸Á·½º·´Áö ¸øÇѵ¥¿ä, 57 00:06:58,226 --> 00:06:59,824 ¸¹ÀÌ »¡¶óÁ³½À´Ï´Ù¸¸, 58 00:07:01,388 --> 00:07:03,388 ÃæºÐÇÏÁö ¾Ê½À´Ï´Ù. 59 00:07:10,873 --> 00:07:13,652 ´Ù½Ã µ¹¾Æ°¡¼­ ¿¡ÀÌÀüÆ® ¶óÀ̺귯¸®¿¡ °üÇØ »ìÆ캾½Ã´Ù. 60 00:07:16,813 --> 00:07:18,813 µ¿±âÈ­¿Í °øÀ¯»óÅ¿¡ °üÇÑ °ÍÀÌÁÒ. 61 00:07:20,045 --> 00:07:22,045 ÀڷᱸÁ¶¶ó´ø°¡ 62 00:07:22,545 --> 00:07:23,690 ¶ô, 63 00:07:24,190 --> 00:07:25,885 º´·Ä °³Ã¼(concurrent object)°¡ µÇ°Ú½À´Ï´Ù. 64 00:07:31,474 --> 00:07:34,203 ¸ÕÀú ÇùÁ¶ µ¿±âÈ­ ÇÁ¸®¹ÌƼºêµéÀÔ´Ï´Ù. 65 00:07:34,703 --> 00:07:42,495 ¶ôÀÇ ¹®¸Æ¿¡¼­ ÇùÁ¶ÀûÀ̶ó´Â °ÍÀº ¶ôÀ» ÃëÇÏ·Á´Âµ¥ ¸ø ¾ò¾úÀ» °æ¿ì, ·±Å¸ÀÓÀÌ À̸¦ ÀÎÁöÇÔÀ» ¶æÇÕ´Ï´Ù. 66 00:07:42,662 --> 00:07:45,175 ±×·¡¼­ À̸¦ ´Ù¸¥ ÀÏÀ» ÇÒ ±âȸ·Î »ï´Â °ÍÀÌÁÒ. 67 00:07:45,242 --> 00:07:50,405 PPLÀÇ º´·Ä ·±Å¸ÀÓÀº ÇùÁ¶ÀûÀ¸·Î µ¿ÀÛÇÏ´Â ¸î°¡Áö ¶ôµéÀ» °¡Áö°í ÀÖ½À´Ï´Ù. 68 00:07:51,903 --> 00:07:55,124 enter_critical À̶ó ºÎ¸£´Â Å©¸®Æ¼Äü½¼ÇÀ̶ó´ø°¡, 69 00:07:55,624 --> 00:07:57,624 °£´ÜÇÑ reader_writer °¡ ÀÖ°í¿ä, 70 00:07:57,725 --> 00:08:06,546 C++0x Ç¥ÁØÀÎ std::mutex µµ Á¶¸¸°£ ±¸ÇöµÉ °ÍÀÔ´Ï´Ù. 71 00:08:06,846 --> 00:08:12,555 ÀÌ·¯ÇÑ ¶ôµéÀº C++0xÀÇ ¹ÂÅؽº ÀÎÅÍÆäÀ̽º ¿ä±¸»çÇ×À» ÁؼöÇÏ°í ÀÖ½À´Ï´Ù. 72 00:08:13,055 --> 00:08:24,875 Áï, std::mutex ÀÌ¿Ü¿¡µµ ƯÁ¤ ÀÎÅÍÆäÀ̽º ¿ä±¸»çÇ×À» ¸¸Á·Çϱ⸸ Çϸé Ç¥ÁØ¿¡¼­ Á¦°øÇÏ´Â ¿©·¯ À¯Æ¿¸®Æ¼ ÇÔ¼öµéÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌÁÒ. 73 00:08:24,975 --> 00:08:32,393 ¿ì¸®ÀÇ ÇùÁ¶Àû ¶ôµéÀÌ ±×¸¦ ÁؼöÇϹǷΠȣȯ¼º°ú Á¶ÇÕ°¡´É¼ºÀÇ À̵æÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. 74 00:08:35,754 --> 00:08:37,754 ´ÙÀ½À¸·Î º´·Ä ÄÁÅ×ÀÌ³Ê ¹× °³Ã¼µéÀÌ ÀÖ½À´Ï´Ù. 75 00:08:38,520 --> 00:08:43,050 combinable À̶ó ºÎ¸£´Â ³ð¿¡ ´ëÇØ ´Ù·ê °ÍÀä, 76 00:08:43,251 --> 00:08:45,469 ÀÌ´Â ÀϹÝÈ­ÇÑ reduction º¯¼ö·Î 77 00:08:45,769 --> 00:08:49,053 ½º·¹µå ·ÎÄÃÇÑ Àç»ç¿ë°¡´É ÀúÀå¼Ò¸¦ Á¦°øÇÕ´Ï´Ù. 78 00:08:49,054 --> 00:08:51,054 ¾ÈŸ±õ°Ôµµ CTP¿¡´Â Æ÷ÇԵǾî ÀÖÁö ¾Ê½À´Ï´Ù¸¸, 79 00:08:51,454 --> 00:08:56,621 ´ÙÀ½ ¸îÀåÀÇ ½½¶óÀ̵忡¼­ ÀÌ¿¡ ´ëÇØ »ìÆ캼 °ÍÀÔ´Ï´Ù. 80 00:08:56,888 --> 00:08:58,457 concurrent_vector µµ ÀÖ½À´Ï´Ù. 81 00:08:58,658 --> 00:09:04,349 ÀÌ´Â STLÀÇ vector¿Í ¸Å¿ì À¯»çÇÕ´Ï´Ù. 82 00:09:04,483 --> 00:09:10,638 ¶ÇÇÑ TBB¿¡ ÀÖ´Â vector¿Íµµ ¸Å¿ì À¯»çÇÏ¸ç ºñ½ÁÇÑ ½Ã¸¸Æ½À» °øÀ¯ÇÕ´Ï´Ù. 83 00:09:11,138 --> 00:09:14,897 µ¿½Ã append¿Í ·£´ý Á¢±Ù ¹Ýº¹ÀÚ¸¦ Áö¿øÇÕ´Ï´Ù. 84 00:09:15,231 --> 00:09:21,647 remove´Â Áö¿øÇÏÁö ¾ÊÁö¸¸, clear·Î Àüü¸¦ ºñ¿ì´Â °ÍÀº °¡´ÉÇÕ´Ï´Ù. 85 00:09:22,247 --> 00:09:27,652 ÇÏÁö¸¸ ·£´ý Á¢±Ù°ú append¿¡ ¸Å¿ì È¿À²ÀûÀ̵µ·Ï ¸¸µé¾ú½À´Ï´Ù. 86 00:09:28,152 --> 00:09:30,152 ´ÙÀ½À¸·Î concurrent_queue °¡ ÀÖ½À´Ï´Ù. 87 00:09:31,716 --> 00:09:35,228 ÀÌ ¿ª½Ã ¾Õ¿¡¼­ÀÇ º´·Ä append¸¦ Áö¿øÇϸç, 88 00:09:35,728 --> 00:09:39,608 Àü¹æ Á¢±Ù ¹Ýº¹ÀÚ¸¦ Á¦°øÇÏ¿´À¸³ª... 89 00:09:40,008 --> 00:09:44,801 À̹øȸ´Â ¿©±â±îÁöÀÔ´Ï´Ù. ^^ °í¸¿½À´Ï´Ù. ÀÚ¸·Á¦ÀÛ: Á¤Àç¿ø(all2one) http://vsts2010.net http://gl3d.net