|
OpenCL (Open Computing Language)À̶õ?
[ÇÁ·Î¼¼¼ ÆòÇ༺, Á߽ɿ¡´Â OpenCLÀÌ À§Ä¡]
OpenCLÀº Open Computing LanguageÀÇ ¾àÀÚ·Î °ø°³µÈ º´·Ä ÄÄÇ»ÆÃÀÇ Ç¥ÁØÀ¸·Î NVIDIA CUDA¿Í AMD ATI StreamÀÌ ÀÚ»çÀÇ GPU¸¦ º´·Ä ÄÄÇ»ÆÃ¿¡ Áß½ÉÀ» µÎ°í ÀÖ´Â °Í°ú ´Þ¸® CPU¿Í GPU¸¦ ºñ·ÔÇÏ¿© ´Ù¸¥ ÇÁ·Î¼¼¼µé¿¡¼µµ À̸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ¸ç, À̸¦ ÀÌ¿ëÇÏ¿© ÄÄÇ»ÆÃ ¸®¼Ò½º¸¦ Á¦¾îÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ÀÏÁ¾ÀÇ API (Application Programming Interface)´Ù.
CPU¿Í GPU´Â °¢°¢¿¡ ¸Â´Â ÇÁ·Î±×·¡¹Ö ±â¼úµéÀ» °®°í Àִµ¥ CPU´Â ¸ÖƼ Äھ µå¶óÀ̺êÇÏ¿© ¼º´ÉÀ» Çâ»ó½Ã۰í OpenMP¸¦ ÅëÇØ È¿À²À» Áõ°¡½ÃÄÑÁØ´Ù. GPUµµ ±×·¡ÇÈ API¿Í ½¦À̵ù ¾ð¾î¸¦ Á¦°øÇϸç, ÃÖ±Ù¿¡´Â GPU¸¦ º´·Ä ÄÄÇ»ÆÃ¿¡ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï °³¼±µÇ°í ÀÖ´Ù. OpenCLÀº CPU¿Í GPUÀÇ ¼·Î ´Ù¸¥ ±¸¼º¿¡ µû¸¥ ¹®Á¦Á¡À» °³¼±ÇÏ¿© À̵éÀ» ¹ü¿ë ¸ñÀû Áï, º´·Ä ÄÄÇ»ÆÃÀÌ °¡´ÉÇϵµ·Ï ÇØÁÖ´Â ¿ÜºÎÀÇ ÄÄÇ»ÆÃ API·Î Á¤ÀǵǸç, CPU¿Í GPUÀÇ °øÅë ºÐ¸ð¸¦ ²ø¾î³»¾î È¿À²¼ºÀ» ±Ø´ëÈÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ±â¼úÀÌ´Ù.
OpenCLÀº ¾Õ¼µµ ¾ð±ÞµÇ¾úµíÀÌ Æ÷ÅÍºí ±â±â, CPU¿Í GPU, ±×¸®°í ´Ù¸¥ ÇÁ·Î¼¼¼µéÀÇ º´·Ä ÄÄÇ»ÆÃÀ» °¡´ÉÇÏ°Ô ÇØÁÖ¾î ±¤¹üÀ§ÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖÀ¸¸ç, ¿ÀÇÂµÇ¾î ¹«·á¶ó´Â Å« ÀåÁ¡µµ °¡Áö°í ÀÖ´Ù.
OpenCLÀº NVIDIA CUDA¿Í °°ÀÌ C¾ð¾î¸¦ ±â¹ÝÀ¸·Î Çϰí Àֱ⠶§¹®¿¡ C¾ð¾î°¡ ³Î¸® »ç¿ëµÇ´Â ÇöÀç ÀûÇÕÇϸç, ISO C99 ¾ð¾îÀÇ ÀϺκÐÀÌ¸é¼ º´·Ä ÄÄÇ»ÆÃÀ¸·Î È®ÀåÇÏ´Â °³³äÀ̹ǷΠ°³¹ßÀڵ鿡°Ô´Â Á¢±Ù¼ºÀÌ ¿ëÀÌÇÏ´Ù.
¶Ç, OpenCLÀº OpenGL°ú °°Àº Ç¥ÁØÀ¸·Î ¼·Î Çù·ÂÇÒ ¼ö ÀÖ´Â ±¸Á¶¸¦ °¡Áö¸ç, OpenCLÀº OpenGLÀÇ ÅØ½ºÃ³, ¿ÀºêÁ§Æ® ¹öÆÛ¿Í ·»´õ ¹öÆÛ µîÀÇ µ¥ÀÌÅ͸¦ °øÀ¯ÇÒ ¼ö ÀÖ´Ù. OpenCL°ú OpenGLÀº ¶Ç Çϵå¿þ¾î ³»¿¡¼ ¸í·ÉÀ» È¿°úÀûÀ¸·Î ´Ù·ç¸ç, ½ºÄÉÁ층ÀÇ À¶Å뼺°ú µ¿±âȰ¡ °¡´ÉÇØÁø´Ù. ±×¸®°í OpenCL ÀÓº£µðµå ÇÁ·ÎÆÄÀϰú OpenGL ESÀÇ »ç¿ëÀ» ÅëÇØ ÇÚµåÇÛµå ÀåÄ¡¿Í ¸ð¹ÙÀÏ ½Ã½ºÅÛ¿¡µµ Àû¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
ÄÄÇ»ÆÃ ÀåÄ¡¿¡ ³»ÀåµÈ ·ÎÄà ¸Þ¸ð¸® »ç¿ë°ú ¿ÜºÎ¿¡ »ç¿ëµÈ ¸Þ¸ð¸®¸¦ Ãß°¡·Î »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇϸç, ¸Þ¸ð¸® °ü¸® ¸ðµ¨À» Á¦°øÇÏ¿© º´·Ä ÄÄÇ»ÆÃ °úÁ¤¿¡¼ÀÇ ¸Þ¸ð¸® »ç¿ë È¿À²¼ºµµ ³ôÀ̰í ÀÖ´Ù.
OpenCLÀº ´ëºÎºÐÀÇ »ó¾÷ÀûÀÎ ½Ã½ºÅÛ (HPC, High Performance Computing, °í¼º´É ÄÄÇ»ÆÃ)À» ºñ·ÔÇÏ¿© ÀÏ¹Ý µ¥½ºÅ©Å¾, ½ÉÁö¾î ¸ð¹ÙÀÏ, ÇÚµåÇÛµå ÀåÄ¡µé¿¡¼µµ Ȱ¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ °¡Àå Å« ÀåÁ¡ÀÌ´Ù. ¶ÇÇÑ, OpenCLÀº ¸ÖƼÇà ¾îÇø®ÄÉÀÌ¼Ç ÆÀµé¿¡ ÀÇÇØ Çϵå¿þ¾î ¼ÒÇÁÆ®¿þ¾î ºÐ¾ßÀÇ ¾îÇø®ÄÉÀÌ¼Ç È£È¯¼ºÀ» °³¼±Çϰí ÀÖÀ¸¸ç, ¾ÖÇÃ, AMD, ÀÎÅÚ, »ï¼º, IBM µîÀÇ ±â¾÷µéÀÌ OpenCL ¿öÅ· ±×·ì¿¡ Æ÷ÇԵǾî ÈÄ¿øÇØÁÖ°í ÀÖÀ¸¹Ç·Î OpenCLÀº ¾÷°è Ç¥ÁØÀ¸·Îµµ ²ÙÁØÇÑ ¼ºÀåÀÌ ¿¹»óµÈ´Ù.
|