14 جولای

آشنایی با GPGPU

آشنایی با GPGPU

آشنایی با GPGPU

بسیاری از کاربران بر این باور هستند که پردازنده مستقل گرافیکی (GPU) تنها به منظور پردازش اطلاعات گرافیکی به خدمت گرفته می شود.این تصور کاملا اشتباه است.پردازنده های GPU کاربردهای بسیار متنوعی را هدایت می کنند که گاها نتیجه نهایی از پردازنده مرکزی (CPU) بهتر است.با ما همراه باشید.

 

واحد پردازش گرافیکی (GPU) عموماً برای پردازش محاسبات گرافیکی رایانه طراحی و تولید می‌شود. به بهره‌برداری از واحد پردازش گرافیکی یک رایانه برای انجام محاسبات معمولی که در گذشته به کمک CPUها صورت می‌گرفته است، محاسبات همه‌منظوره بر روی واحد پردازش گرافیکی (GPGPU) گفته می‌شود.در حال حاضر اوپن‌سی‌ال زبان متن‌باز رایج برنامه‌نویسی چندمنظوره بر روی جی‌پی‌یوها بوده و زبان کودا (محصول شرکت انویدیا) نیز پراستفاده‌ترین بستر مالکیتی این زمینه محسوب می‌شود.

مفاهیم GPGPU

از آنجایی که واحد‌های پردازش گرافیکی برای کارهای گرافیکی طراحی شده‌اند، در انجام عملیات‌ و برنامه‌نویسی بسیار محدود هستند. بر اساس مدل طراحی GPUها، استفاده از آن‌ها تنها در مسائلی که به کمک پردازش جریانی قابل حل هستند مفید بوده و قدرت سخت‌افزار آن‌ها تنها به روش‌های خاصی قابل بهره‌برداری است.بزرگترین تفاوت اصلی CPU و GPU نیز در این قسمت است.CPU ها توانایی بالایی در نوع پردازش اطلاعات،زبان های برنامه نویسی و اجرای دستورات دارند.اما این در حالی است که پردازنده های گرافیکی تنها در حالاتی خاص قادر به بهره برداری های غیر گرافیکی هستند.

سیستم پردازش جریانی

GPU ها تنها می‌توانند بر روی داده‌ها و آرایه‌های مستقل از هم پردازش انجام دهند؛ اما این پردازش را در تعداد بسیار بالا و به صورت هم‌زمان اعمال می‌کنند. این ویژگی هنگامی که نیاز به کار یکسان بر روی تعداد زیادی داده داشته باشید، مفید واقع می‌شود. به بیان دیگر، GPU ها پردازشگرهای جریانی هستند؛ پردازش‌گرهایی که به صورت موازی یک روند را بر روی جریانی از داده‌ها اعمال می‌کنند.  یک جریان، به بیان ساده، مجموعه‌ای از داده‌هاست که نیاز به محاسبات یکسانی دارند. جریان‌ها اساس موازات داده‌ها در پردازش موازی محسوب می‌شوند. کرنل‌ها (به معنای هسته) که توسط GPUها فراخوانده می‌شوند نیز توابعی هستند که بر روی تک‌تک اعضای جریان داده اجرا می‌شوند. در برنامه‌هایی که برای GPUها نوشته می‌شوند، توجه به میزان عملیات ریاضی بر واحد حافظه ضروری است. از آنجایی که سرعت دسترسی به حافظه بسیار کمتر از سرعت پردازش این سخت‌افزارها است، اگر تعداد عملیات ریاضی برای هر دادهٔ موجود در حافظه کم باشد، میزان افزایش سرعت اجرا محدود می‌گردد. نرم‌افزارهای ایده‌آل برای GPGPU نرم‌افزارهایی هستند که داده‌های فراوان، موازات بالا و وابستگی کم داده‌ای داشته‌باشند.

آشنایی با GPGPU

(image)

بسیاری از کاربران بر این باور هستند که پردازنده مستقل گرافیکی (GPU) تنها به منظور پردازش اطلاعات گرافیکی به خدمت گرفته می شود.این تصور کاملا اشتباه است.پردازنده های GPU کاربردهای بسیار متنوعی را هدایت می کنند که گاها نتیجه نهایی از پردازنده مرکزی (CPU) بهتر است.با ما همراه باشید.

 

واحد پردازش گرافیکی (GPU) عموماً برای پردازش محاسبات گرافیکی رایانه طراحی و تولید می‌شود. به بهره‌برداری از واحد پردازش گرافیکی یک رایانه برای انجام محاسبات معمولی که در گذشته به کمک CPUها صورت می‌گرفته است، محاسبات همه‌منظوره بر روی واحد پردازش گرافیکی (GPGPU) گفته می‌شود.در حال حاضر اوپن‌سی‌ال زبان متن‌باز رایج برنامه‌نویسی چندمنظوره بر روی جی‌پی‌یوها بوده و زبان کودا (محصول شرکت انویدیا) نیز پراستفاده‌ترین بستر مالکیتی این زمینه محسوب می‌شود.

(image)

مفاهیم GPGPU

از آنجایی که واحد‌های پردازش گرافیکی برای کارهای گرافیکی طراحی شده‌اند، در انجام عملیات‌ و برنامه‌نویسی بسیار محدود هستند. بر اساس مدل طراحی GPUها، استفاده از آن‌ها تنها در مسائلی که به کمک پردازش جریانی قابل حل هستند مفید بوده و قدرت سخت‌افزار آن‌ها تنها به روش‌های خاصی قابل بهره‌برداری است.بزرگترین تفاوت اصلی CPU و GPU نیز در این قسمت است.CPU ها توانایی بالایی در نوع پردازش اطلاعات،زبان های برنامه نویسی و اجرای دستورات دارند.اما این در حالی است که پردازنده های گرافیکی تنها در حالاتی خاص قادر به بهره برداری های غیر گرافیکی هستند.

(image)

سیستم پردازش جریانی

GPU ها تنها می‌توانند بر روی داده‌ها و آرایه‌های مستقل از هم پردازش انجام دهند؛ اما این پردازش را در تعداد بسیار بالا و به صورت هم‌زمان اعمال می‌کنند. این ویژگی هنگامی که نیاز به کار یکسان بر روی تعداد زیادی داده داشته باشید، مفید واقع می‌شود. به بیان دیگر، GPU ها پردازشگرهای جریانی هستند؛ پردازش‌گرهایی که به صورت موازی یک روند را بر روی جریانی از داده‌ها اعمال می‌کنند.  یک جریان، به بیان ساده، مجموعه‌ای از داده‌هاست که نیاز به محاسبات یکسانی دارند. جریان‌ها اساس موازات داده‌ها در پردازش موازی محسوب می‌شوند. کرنل‌ها (به معنای هسته) که توسط GPUها فراخوانده می‌شوند نیز توابعی هستند که بر روی تک‌تک اعضای جریان داده اجرا می‌شوند. در برنامه‌هایی که برای GPUها نوشته می‌شوند، توجه به میزان عملیات ریاضی بر واحد حافظه ضروری است. از آنجایی که سرعت دسترسی به حافظه بسیار کمتر از سرعت پردازش این سخت‌افزارها است، اگر تعداد عملیات ریاضی برای هر دادهٔ موجود در حافظه کم باشد، میزان افزایش سرعت اجرا محدود می‌گردد. نرم‌افزارهای ایده‌آل برای GPGPU نرم‌افزارهایی هستند که داده‌های فراوان، موازات بالا و وابستگی کم داده‌ای داشته‌باشند.

(image)

آشنایی با GPGPU

car