Áö³ 16ÀÏ. ºñÁÖ¾ó ÄÄÇ»Æà ºÐ¾ßÀÇ ¼¼°èÀûÀÎ ¼±µµ ±â¾÷ÀÎ ¿£ºñµð¾Æ´Â ¼¼°è¿¡¼ °¡Àå º¸±Þ·ÂÀÌ ³ôÀº º´·Ä ÄÄÇ»Æà Ç÷§ÆûÀÌÀÚ ÇÁ·Î±×·¡¹Ö ¸ðµ¨ÀÎ Äí´Ù(CUDA)ÀÇ ÃֽŠ¹öÀüÀÎ ¿£ºñµð¾Æ Äí´Ù(NVIDIA CUDA 5) ÇÁ·Î´ö¼Ç ¸±¸®Á ¹ßÇ¥Çß´Ù.
GPU¸¦ ÅëÇØ °úÇÐ ¹× ¿£Áö´Ï¾î¸µ ¾îÇø®ÄÉÀÌ¼Ç °¡¼ÓÀ» °¡´ÉÇÏ°Ô ÇØÁÖ´Â ÃֽŠ¹öÀüÀÎ Äí´Ù 5 ÇÁ·Î´ö¼Ç ¸±¸®Áî´Â ÇöÀç ¿£ºñµð¾Æ °³¹ßÀÚ Á¸(NVIDIA Developer Zone, www.nvidia.com/getcuda)¿¡¼ ¹Ù·Î ´Ù¿î¹ÞÀ» ¼ö ÀÖ´Ù. ÀÌ¹Ì 150¸¸ ȸ ÀÌ»ó ´Ù¿î·Îµå µÇ°í ¼±µÎ ¿£Áö´Ï¾î¸µ, °úÇÐ ¹× »ó¿ë ¾îÇø®ÄÉÀÌ¼Ç Áö¿ø¿¡ 180°Ç ÀÌ»ó È°¿ëµÈ ¹Ù ÀÖ´Â Äí´Ù ÇÁ·Î±×·¡¹Ö ¸ðµ¨Àº °³¹ßÀÚµéÀÌ °¡Àå ¼±È£ÇÏ´Â GPU °¡¼Ó ÄÄÇ»Æà ¹æ½ÄÀ¸·Î ÀÚ¸® Àâ¾Ò´Ù.
À̹ø Äí´Ù 5ÀÇ »õ·Î¿î ÇÁ·Î±×·¡¹Ö ±â´ÉÀº GPU °¡¼Ó ¾îÇø®ÄÉÀÌ¼Ç °³¹ßÀ» ±× ¾î´À ¶§º¸´Ù ºü¸£°í ½±°Ô °³¼±ÇÑ´Ù. ´ÙÀ̳ª¹Í Æз¯·¼¸®Áò(Dynamic Parallelism) Áö¿ø, GPU È£Ãâ ¶óÀ̺귯¸®(GPU-Callable Libraries), RDMA (Remote Direct Memory Access)¸¦ À§ÇÑ GPU´ÙÀÌ·ºÆ® (GPUDirect) Áö¿ø, ¿£ºñµð¾Æ ¿£»çÀÌÆ®(Nsight) ÀÌŬ¸³½º ¿¡µð¼Ç(Eclipse Edition) ÅëÇÕ°³¹ßȯ°æ(Integrated Development Environment) µîÀÇ ½Å±â´ÉÀÌ ¹Ù·Î À̸¦ ´ÜÀûÀ¸·Î º¸¿©ÁÖ´Â ¿¹½ÃÀÌ´Ù.
Äí´Ù 5¿¡ ´ëÇÑ °³¹ßÀÚµéÀÇ ¶ß°Å¿î ¹ÝÀÀ
Äí´Ù 5ÀÇ »çÀü°ø°³¹öÀüÀ» Æò°¡Çغ» °³¹ßÀÚµé Áß ¸¹Àº À̵éÀº ±ØÀûÀÎ ¾îÇø®ÄÉÀÌ¼Ç °¡¼Ó°ú ÇÁ·Î±×·¡¹Ö¼º¿¡¼ÀÇ °³¼±À» ¹Ý°å´Ù.
Ç×°ø¿ìÁÖ ¹× ¹æÀ§»ê¾÷¿¡¼´Â ÀÌ¹Ì ·¹ÀÌ´õ µî È»ó, µ¿¿µ»ó ¹× ¼¾¼ µ¥ÀÌÅÍ Ã³¸®¿¡¼ Äí´Ù GPU °¡¼ÓÀÇ ÇýÅÃÀ» ¾Ë¾Æ°¡°í ÀÖ´Ù. ¹öÁö´Ï¾Æ ¼£·Ô½ººô¿¡ À§Ä¡ÇÑGE ÀÎÅÚ¸®ÀüÆ® Ç÷§ÆûÁî(GE Intelligent Platforms)ÀÇ GPGPU ¾îÇø®ÄÉÀÌ¼Ç ¿£Áö´Ï¾îÀÎ ´õ½ºÆ¾ Ç÷©Å¬¸°(Dustin Franklin)Àº ¡°Äí´Ù 5´Â ¸Å¿ì Áß¿äÇÑ ±â¼úÀÌ°í, ¿ì¸®°¡ »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀÌ¼Ç Áß ¸¹Àº ¼ö¿¡¼ ¼¾Å͵¥ÀÌÅ͸¦ ´ë±â½Ã°£ÀÌ ÂªÀº(low latency) GPU·Î ¹Ù·Î ½ºÆ®¸®¹Ö Çϱ⿡, »õ·Î¿î ÄÉÇ÷¯ GPU¿¡¼ RDMA¸¦ À§ÇÑ GPU´ÙÀÌ·ºÆ® Áö¿øÀº ¿ì¸® °í°´µé¿¡°Ô ¾öû³ª°Ô Áß¿äÇÏ´Ù.¡±¶ó¸ç ¡°Ä¿½ºÅÒ ¼¾¼ ´Ù¼ö¿¡ ´ëÇÑ Áö¿øÀ» ÀÌ¹Ì ÅëÇÕÇß°í ±× °á°ú¿¡ ¸Å¿ì ¸¸Á·ÇÏ°í ÀÖ´Ù¡±°í ¹àÇû´Ù.
ÇÁ¶û½º ¸®¿ËÀÇ ¸®¿Ë´ëÇк´¿ø(Lyon University Hospital) ¸®¼Ä¡ »ýÈÇÐÀÚÀÎ ±â¿è º§Áî(Guillaume Belz)´Â º¹ÀâÇÑ ½ÅÈ£ ºÐ¼® ¹× µ¥ÀÌÅÍ ¸¶À̴׿¡ GPU È£Ãâ ¶óÀ̺귯¸®¿Í ´ÙÀ̳ª¹Í Æз¯·¼¸®ÁòÀ» »ç¿ëÇØ ¿À°í ÀÖ´Ù. ±×´Â ¡°GPU °¡¼Ó ´öºÐ¿¡ CPU¸¸À¸·Î´Â ¸î ÁÖ¿¡¼ ½ÉÁö¾î´Â ¸î ´Þ±îÁö °É¸®´ø ÇÁ·ÎÁ§Æ®¿¡¼ ÀÌÁ¦ ºÒ°ú ¸î ½Ã°£ ¾È¿¡ °á°ú¸¦ ¾òÀ» ¼ö ÀÖ°Ô µÇ¾ú´Ù.¡±¸ç ¡°GPU °¡¼Ó ¾øÀÌ´Â ºÐ¼® ÀÚü°¡ ¾Æ¿¹ ºÒ°¡´ÉÇÏ´Ù¡±°í ¸»Çß´Ù.
´º¿å ·Îü½ºÅÍ°ø°ú´ëÇÐ(Rochester Institute of Technoloigy) À̹Ì¡ »çÀ̾𽺠¹Ú»ç°úÁ¤À» À̼ö ÁßÀÎ ¿þÀÌÈ (¿þÀÎ) ¼±(Weihua (Wayne) Sun)Àº ¿£ºñµð¾Æ ¿£»çÀÌÆ® ÀÌŬ¸³½º ¿¡µð¼Ç¿¡ °¨ÅºÀ» ±ÝÄ¡ ¸øÇß´Ù. ¡°Äí´Ù 5¿¡ »õ·Î¿î ¿£»çÀÌÆ® ÀÌŬ¸³½º ¿¡µð¼Ç IDE°¡ Æ÷ÇÔµÈ´Ù°í µé¾úÀ» ¶§ºÎÅÍ ´çÀå ÇÊ¿äÇÏ´Ù°í »ý°¢Çß´Ù.¡±¸ç ¡°ÇϳªÀÇ ÅëÇÕµÈ °³¹ßȯ°æ¿¡ ¸ðµç ÇÁ·Î±×·¡¹Ö, µð¹ö±ë ¹× ÃÖÀûÈ ÅøÀÌ ´Ù µé¾î°¡´Ï »ý»ê¼ºÀÌ Å©°Ô °³¼±µÈ´Ù.¡±°í ±ØÂùÇß´Ù.
Äí´Ù 5¿¡ »õ·Ó°Ô Ãß°¡µÈ ±â´É
Äí´Ù 5¸¦ »ç¿ëÇØ °³¹ßÀÚ´Â Áö±Ý±îÁö ¸¸µé¾îÁø ÃÖ°í¼Ó, °íÈ¿À² ¹× ÃÖ°í¼º´ÉÀÇ ÄÄÇ»Æà ¾ÆÅ°ÅØóÀÎ ¿£ºñµð¾Æ ÄÉÇ÷¯(Kepler) ¾ÆÅ°ÅØó¿¡ ±â¹ÝÇÑ GPU ¾×¼¿·¯·¹ÀÌÅÍ µî ¿£ºñµð¾Æ GPU ¼º´ÉÀ» ¿ÂÀüÈ÷ È°¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
• ´ÙÀ̳ª¹Í Æз¯·¼¸®Áò(Dynamic Parallelism) – »õ·Î¿î ¾Ë°í¸®ÁòÀÇ GPU °¡¼Ó
GPU ½º·¹µå´Â »õ·Î¿î ½º·¹µå¸¦ ¿ªµ¿ÀûÀ¸·Î »ý¼º, GPU°¡ µ¥ÀÌÅÍ¿¡ ¿ªµ¿ÀûÀ¸·Î ÀûÀÀÇÒ ¼ö ÀÖ´Ù. CPU°£ÀÇ ÁÖ°í ¹ÞÀ½À» ÃÖ¼ÒÈÇؼ ´ÙÀ̳ª¹Í Æз¯·¼¸®ÁòÀº º´·Ä ÇÁ·Î±×·¡¹ÖÀ» Å©°Ô °£¼ÒÈÇÑ´Ù. ¶ÇÇÑ ÀûÀÀÀû ¸Þ½¬ ¼¼ºÐÈ ±â¹ý(Adaptive Mesh Refinement), Àü»çÀ¯Ã¼¿ªÇÐ(CFD) ¾îÇø®ÄÉÀÌ¼Ç µî¿¡ »ç¿ëµÇ´Â ´Ù¾çÇÑ ÀÎ±â ¾Ë°í¸®ÁòÀÇ GPU °¡¼ÓÀÌ °¡´ÉÇØÁø´Ù.
• GPU È£Ãâ ¶óÀ̺귯¸®(GPU-Callable Libraries) – Á¦3ÀÚ ÀÌÄڽýºÅÛ È®Àå °¡´É
»õ·Î¿î Äí´Ù BLAS ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇØ °³¹ßÀÚ ÀÚ½ÅÀÇ GPU È£Ãâ ¶óÀ̺귯¸®¿¡¼ ´ÙÀ̳ª¹Í Æз¯·¼¸®ÁòÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´Ù¸¥ °³¹ßÀÚ°¡ Ä¿³Î ±â´É¼ºÀ» È®ÀåÇÏ°í, Á¦3ÀÚ GPU È£Ãâ ¶óÀ̺귯¸®ÀÇ ±â´É¼ºÀ» Ä¿½ºÅÒÇϵµ·Ï GPU¿¡ ÄݹéÀ» ½ÃÇà ÇÏ´Â Ç÷¯±×ÀÎ API¸¦ µðÀÚÀÎ ÇÒ ¼ö ÀÖ´Ù. ¡°¿ÀºêÁ§Æ® ¸µÅ©(object linking)¡± ±â´É¿¡¼´Â º¹¼öÀÇ Äí´Ù ¼Ò½º ÆÄÀÏÀ» º°°³ÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏ·Î ÄÄÆÄÀÏÇÏ°í º¸´Ù Å« ¾îÇø®ÄÉÀ̼ǰú ¶óÀ̺귯¸®·Î À̸¦ ¸µÅ©Çؼ, ´ëÇü GPU ¾îÇø®ÄÉÀ̼ÇÀ» °³¹ßÇÏ´Â È¿À²ÀûÀÌ°í Ä£¼÷ÇÑ ÇÁ·Î¼¼½º¸¦ Á¦°øÇÑ´Ù.
• RDMA¸¦ À§ÇÑ GPU´ÙÀÌ·ºÆ® Áö¿ø – ½Ã½ºÅÛ ¸Þ¸ð¸® º´¸ñÇö»ó ÃÖ¼ÒÈ
GPU´ÙÀÌ·ºÆ®´Â GPU ±â¼úÀº ´Ù¸¥ PCI-E µð¹ÙÀ̽º°£ Á÷Á¢ Åë½ÅÀ» °¡´ÉÇÏ°Ô ÇÏ°í, ³×Æ®¿öÅ© ÀÎÅÍÆäÀ̽º Ä«µå¿Í GPU°£ Á÷Á¢¸Þ¸ð¸®¾×¼¼½º¸¦ Áö¿øÇÑ´Ù. ¶ÇÇÑ Å¬·¯½ºÅÍ ³» GPU ³ëµå °£ MPISendRecv ´ë±â½Ã°£À» Å©°Ô ÁÙ¿©ÁÖ°í, Àüü ¾îÇø®ÄÉÀÌ¼Ç ¼º´ÉÀ» °³¼±½ÃŲ´Ù.
• ¿£ºñµð¾Æ ¿£»çÀÌÆ® ÀÌŬ¸³½º ¿¡µð¼Ç(NVIDIA Nsight Eclipse Edition) – ºü¸£°í ½¬¿î Äí´Ù ÄÚµå »ý¼º
¸®´ª½º¿Í ¸Æ OS X Ç÷§Æû¿¡¼ Ä£¼÷ÇÑ ÀÌŬ¸³½º ±â¹Ý IDE³» GPU ¾îÇø®ÄÉÀÌ¼Ç °³¹ß, µð¹ö±ë ¹× ÇÁ·ÎÆÄÀÏÀÌ °¡´ÉÇØÁø´Ù. ÅëÇÕµÈ Äí´Ù ¿¡µðÅÍ¿Í Äí´Ù »ùÇ÷ΠÄí´Ù ÄÚµå »ý¼º ¼Óµµ°¡ »¡¶óÁö°í, ÀÚµ¿ ÄÚµå ¸®ÆÑÅ丵À¸·Î CPU ·çÇÁ¸¦ Äí´Ù Ä¿³Î·Î ¼Õ½±°Ô Æ÷ÆÃÇÒ ¼ö ÀÖ´Ù. ÅëÇÕµÈ Àü¹®ºÐ¼®½Ã½ºÅÛÀº ÀÚµ¿¼º´ÉºÐ¼®°ú ÄÚµå ³» ¼º´Éº´¸ñÇö»óÀ» ¼öÁ¤ÇÒ ´Ü°èº° °¡À̵带 Á¦°øÇÏ°í, ½ÅÅýº ÇÏÀ̶óÀÌÆÃ(syntax highlighting)À¸·ÎGPU ÄÚµå¿Í CPU ÄÚµå ±¸ºÐÀÌ ½¬¾îÁø´Ù.
¡ã»õ·Î¿î ¿Â¶óÀÎ Äí´Ù ¸®¼Ò½º ¼¾ÅÍ
¶ÇÇÑ °³¹ßÀÚµéÀÌ Äí´Ù·Î º´·ÄÄÄÇ»ÆÃÀÇ ÀáÀç·ÂÀ» ÃÖ´ëÇÑ È°¿ëÇÒ ¼ö ÀÖµµ·Ï ¿£ºñµð¾Æ´Â Äí´Ù ÇÁ·Î±×·¡¸ÓµéÀ» À§ÇÑ ¹«·á ¿Â¶óÀÎ ¸®¼Ò½º ¼¾ÅÍ(docs.nvidia.com)¸¦ ·±ÄªÇß´Ù. ÇÁ·Î±×·¡¸ÓµéÀº ÀÌ »çÀÌÆ®¸¦ ÅëÇØ Äí´Ù Ç÷§Æû°ú ÇÁ·Î±×·¡¹Ö ¸ðµ¨¿¡ °üÇÑ ÃֽŠÁ¤º¸»Ó ¾Æ´Ï¶ó Åø, ÄÚµå »ùÇÃ, ¶óÀ̺귯¸®, API, Æ©´×°ú ÇÁ·Î±×·¡¹Ö °¡ÀÌµå µî ¸ðµç Äí´Ù °³¹ßÀÚ¿ë ¹®¼¿Í ±â¼úÀ» ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù.
Äí´Ù´Â ¿£ºñµð¾Æ°¡ °³¹ßÇÑ º´·ÄÄÄÇ»Æà Ç÷§ÆûÀÌÀÚ ÇÁ·Î±×·¡¹Ö ¸ðµ¨·Î, GPU ÆÄ¿ö¸¦ È°¿ëÇØ ÄÄÇ»Æà ¼º´ÉÀ» ±ØÀûÀ¸·Î °³¼±½ÃÄÑÁØ´Ù. ¸ðµç º´·Ä ÇÁ·Î±×·¡¸ÓµéÀº Äí´Ù µî·Ï Äí´Ù µî·Ï °³¹ßÀÚ ÇÁ·Î±×·¥(CUDA Registered Developer Program, www.nvidia.com/paralleldeveloper)¿¡ ¹«·á °¡ÀÔ ÈÄ ¼ÒÇÁÆ®¿þ¾î ¸±¸®½º, Åø, ÀÚ¿ø °ü·Ã ¼Ò½Ä ¹× ´Ù¿îÀ» ¹Þ¾Æº¼ ¼ö ÀÖ´Ù.
GPU ÄÄÇ»Æÿ¡ ´ëÇÑ º¸´Ù »ó¼¼ÇÑ Á¤º¸´Â ¿£ºñµð¾Æ À¥ÆäÀÌÁö(www.nvidia.co.kr/object/what-is-gpu-computing-kr)¿¡¼ È®ÀÎÇÒ ¼ö ÀÖÀ¸¸ç Äí´Ù °ü·Ã Á¤º¸ ¹× ÃֽŠ¹öÀü ´Ù¿î·Îµå´Â Äí´Ù À¥»çÀÌÆ® (developer.nvidia.com/category/zone/cuda-zone)¿¡¼ ã¾Æº¼ ¼ö ÀÖ´Ù.