محاسبات همهمنظوره بر روی واحد پردازش گرافیکی
واحد پردازش گرافیکی (GPU) عموماً برای پردازش محاسبات گرافیکی رایانه طراحی و تولید میشود. به بهرهبرداری از واحد پردازش گرافیکی یک رایانه برای انجام محاسبات معمولی که در گذشته به کمک CPUها صورت میگرفته است، محاسبات همهمنظوره بر روی واحد پردازش گرافیکی (مخفف انگلیسی: GPGPU) گفته میشود.
در حال حاضر اوپنسیال زبان متنباز رایج برنامهنویسی چندمنظوره بر روی جیپییوها بوده و زبان کودا (محصول شرکت انویدیا) نیز پراستفادهترین بستر مالکیتی این زمینه محسوب میشود.
مفاهیم برنامهنویسی GPGPU
از آنجایی که واحدهای پردازش گرافیکی برای کارهای گرافیکی طراحی شدهاند، در انجام عملیات و برنامهنویسی بسیار محدود هستند. بر اساس مدل طراحی GPUها، استفاده از آنها تنها در مسائلی که به کمک پردازش جریانی قابل حل هستند مفید بوده و قدرت سختافزار آنها تنها به روشهای خاصی قابل بهرهبرداری است.
پردازش جریانی
GPUها تنها میتوانند بر روی دادهها و آرایههای مستقل از هم پردازش انجام دهند؛ اما این پردازش را در تعداد بسیار بالا و به صورت همزمان اعمال میکنند. این ویژگی هنگامی که نیاز به کار یکسان بر روی تعداد زیادی داده داشته باشید، مفید واقع میشود. به بیان دیگر، GPUها پردازشگرهای جریانی هستند؛ پردازشگرهایی که به صورت موازی یک روند را بر روی جریانی از دادهها اعمال میکنند.
یک جریان، به بیان ساده، مجموعهای از دادههاست که نیاز به محاسبات یکسانی دارند. جریانها اساس موازات دادهها در پردازش موازی محسوب میشوند. کرنلها (به معنای هسته) که توسط GPUها فراخوانده میشوند نیز توابعی هستند که بر روی تکتک اعضای جریان داده اجرا میشوند. در برنامههایی که برای GPUها نوشته میشوند، توجه به میزان عملیات ریاضی بر واحد حافظه ضروری است. از آنجایی که سرعت دسترسی به حافظه بسیار کمتر از سرعت پردازش این سختافزارها است، اگر تعداد عملیات ریاضی برای هر دادهٔ موجود در حافظه کم باشد، میزان افزایش سرعت اجرا محدود میگردد.
نرمافزارهای ایدهآل برای GPGPU نرمافزارهایی هستند که دادههای فراوان، موازات بالا و وابستگی کم دادهای داشتهباشند.
جستارهای وابسته
منابع
- ↑ Fung, James, Computer Vision Signal Processing on Graphics Processing Units (PDF) (به انگلیسی), archived from the original (PDF) on 19 August 2011, retrieved Jun 06, 2014
- ↑ OpenCL Gains Ground On CUDA (به انگلیسی), HPC Wire, February 28, 2012, retrieved Jun 04, 2014
- ↑ Asanovic, K. , Bodik, R. , Demmel, J. , Keaveny, T. , Keutzer, K. , Kubiatowicz, J. , Morgan, N. , Patterson, D. , Sen, K. , Wawrzynek, J. , Wessel, D. , Yelick, K. : A view of the parallel computing landscape. ACM 52(10) (2009) 56–67