life is what you choose it to be ...
واحد پردازش گرافیکی - GPU
این مقاله، ارائه من برای درس کارگاه کامپیوتر بوده - اسلاید هارو میتونید اینجا ببینید
توضیح اولیه:
ا GPU یا Graphics Processing Unit به معنی واحد پردازش گرافیکی میباشد، اکثرا برای کار با ماتریس های دوبعدی و 3 بعدی و انجام عملیات هایی مانند ضرب داخلی، خارجی، جمع و ... میباشد (بقیه کار ها مانند افزودن افکت به تصویر و رندر کردن که به GPU واگذار میشود نیز به همین کار با ماتریس ها تقلیل میابد).
فرق عمده کارت گرافیک با قطعه CPU در این چند مورد است:
- قطعه CPU معمولا از چند هسته تشکیل شده در حالی که کارت گرافیک شامل چند صد ها تا چند هزار هسته میباشد. ( به طور مثال کارت گرافیک GTX 1080 Ti حدود 5400 هسته دارد)
- توان پردازشی کارت گرافیک در مقایسه با توان پردازشی CPU بسیار بیشتر است.
- در CPU عملیات ها بیشتر به صورت دنباله ای از دستورات هستند که برای اجرای دستور بعدی باید "منتظر" نتیجه دستور قبلی ماند یا اینکه حتما باید به ترتیب اجرا شوند، ولی در GPU اکثر کار ها قابلیت شکسته شدن به عملیات های بسیار کوچک را دارند که "امکان موازی" سازی دارند - (میتوان با این تقسیم سرعت کار را بسیار بالا برد)
- ا CPU را برای هرکاری میتوان استفاده کرد ولی از کارت گرافیک تنها برای کار هایی مانند عملیات روی ماتریس ها، رندر کردن یک صحنه 3 بعدی، افزودن افکت آینه، افکت رو تصویر، نورپردازی و... استفاده میشود.
تصویر بالا نشان میدهد که GPU با تقسیم کار به عملیات های بسیار کوچک تر و با استفاده از هسته های زیاد خود، کار ها را انجام میدهد در صورتی که بیشتر کار هایی که به CPU واگذار میشود باید به "ترتیب" انجام شود و قابلیت شکسته شدن به تسک های کوچک تر را ندارد.
چند نمونه از عملیات های رایج GPU:
در اولین تصویر از سمت چپ، ویژگی Anti-Alising را مشاهده میکنید که تقریبا همه GPU ها چه در موبایل و چه در کامپیوتر از آن پشتیبانی میکنند. خلاصه ای از وظیفه آن به این صورت است که زمانی که تصویر یا متنی روی تصویر نمایش داده میشوند که دقیقا روی پیکسل های مانیتور قرار نمیگیرند، حالتی زشت و تیزی دارند (برای مثال حرف e) - کاری که انجام میشود این است که بعد از رندر اولیه (رندر این صفحه تیز و زشت) GPU با استفاده از الگوریتم های موجود در درایور نصبی خود، تصویر رندر شده را دوباره بررسی میکند و در صورت مشاهده این قسمت های تیز، سعی میکند به چند پیکسل اطراف، رنگ آن را به گونه ای تنظیم کند که طبیعی به نظر برسد ( هر چند اگر پیکسل های صفحه نمایش کم باشد همچنان این مورد قابل مشاهده است ولی کمتر )
در تصویر بالا که یک عکس به حالت معمولی را در بالا نشان میدهد و هرچه به سمت پایین حرکت میکنیم، تصویر کوچک تر میشود. برای کوچک کردن تصویر چند روش وجود دارد، یکی اینکه از پیکسل های اطراف میانگین گرفت و تصویر را ایجاد کرد (که بسیار زمان بر است زیرا برای محاسبه هر پیکسل، باید از رنگ n پیکسل اطراف آن نیز خبرداشته باشیم و شاید چند هزار - برای یک عکس HD که 720 * 1280 پیکسل است که در مجموع 921,600 پیکسل دارد- باید انجام شود تا به نتیجه دلخواه برسیم) یا اینکه از روش خلاقانه تری استفاده شود که از نقاط مشخص نسبت به هر پیکسل را انتخاب کنیم و در جای آن قرار دهیم. این روش دوم که تقریبا همه جا استفاده میشود را MipMap مینامند. (در مورد mip ها بیشتر بدانید)
در تصویر بالا، 3 جسم فلزی مشاهده میکنید که با توجه به فلز بودنشان خاصیت آیینه هم دارند. رندر کردن این تصویر پیچیدگی های زیر را دارد:
- رندر کردن سایه ها و شبه سایه ها (سایه های کم رنگ)
- رندر کردن اثر نور روی جنس فلزی
- رندر کردن بازتاب اجسام آینه مانند روی یک دیگر
در توضیح هر مورد:
- جالب است بندار اگر شما در صفحه از نور نقطه ای (مثل نور لامپ) استفاده کنید، صحنه حداقل 6 بار رندر میشود تا سایه ها و نور ها به صحیح ترین شکل ممکن در صفحه قرار بگیرند.
- در اینجا نیز هر جسم با توجه به “ضریب بازتابی” و “ضریب فلزی” خود، نور را جذب میکند که خود نیز با توجه نوع شکل ( کره یا معکب یا ... ) محاسبات مخصوص خود را دارد.
- این قسمت که یکی از پیچیده ترین بخش ها میباشد. به طوری که اگر دقت کنید هر جسم بازتاب محیط و بازتاب اجسام فلزی دیگر را نیز که آن نیز تصویر دریافتی خود را مانند آینه بازتاب میکنند، را در خود دارد. اولا برای رندر کردن آینه، لازم از دوربین رو بجای جسم قرار داد و با توجه به شکل جسم (کره یا مکعب یا ...) تصویر رندر شده از دوربین در آن قسمت را به نحوی نشان داد که روی جسم به خوبی قرار بگیرد و طبیعی به نظر برسد. سپس در چند مرحله، بازتاب جسم های دیگر را روی جسم دیگر قرار میدهد! (که حداقل نیاز به چند بار رندر صفحه دارند)
در تصویر بالا هم افکت درخشش را مشاهده میکنید که برای ایجاد آن، باید تصویر آن جسم نورانی در چند مرجله کوچک شود و آن تصویرها کوچک شده، دوباره بزرگ شده و روی تصویر اصلی قرار بگیرند (منبع).
البته که این توان پردازشی زیاد، بدون هزینه هم نیست و گرمای زیادی تولید میکند. برای انتقال گرمای تولید شده، از طراحی های خاصی استفاده میشود. برای مثال یک سر سیم مس را که خاصیت رسانایی گرمایی بسیار بالایی را دارد به chip (قسمتی که هسته ها در آن هستند) وصل میشود و سر دیگر آن به اطراف بدنه کارت گرافیک متصل میشود که بتوان به خوبی گرما در به اطراف منتقل کند.
یا طراحی دیواره هایی مثل دیواره سوفاژ در اطراف فن که بتواند با استفاده از هوا، گرما را به بیرون هدایت کند.
البته اگر سیستم گرمایشی پیشفرض کارت گرافیک باز جواب کارتون رو نداد، میتونید از خنک کننده های مایع استفاده کنید
مهمترین ویژگی هایی که در هنگام خرید GPU باید به آن توجه کنید به ترتیب اولویت:
- سرعت پردازنده مرکزی
- سرعت RAM داخلی کارت گرافیک (VRAM)
- حجم RAM داخلی کارت گرافیک
کارت گرافیک درون خود یک رم دارد که به VRAM معروف است. سرعت این نوع RAM، از RAM ای که در کنار قطعات دیگر قرار میگیرد بسیار بیشتر است و تنها خود کارت گرافیک از آن استفاده میکند.
حجم رم بیشتر به تعداد مانیتور هایی مورد استفاده و تعداد پیکسل های آن ها بستگی دارد.
اصلی ترین شرکت های تولید کننده کارت گرافیک:
- ا Arm: سری کارت گرافیک های با پیشوند Mali که در لپتاپ ها و گوشی های هوشمند استفاده میشود
- ا Nvidia: سری کارت گرافیک Geforce که در لپتاپ ها و کامپیوتر های رومیزی استفاده میشود.
- ا AMD: مانند Nvidia + استفاده در کنسول های بازی نظیر Xbox و PlayStation
- ا QualComm: سری کارت گرافیک های Adreno را تولید میکنه که در گوشی های هوشمند، دوربین ها، پهپاد ها استفاده میشود.
- ا Imagination technology: که سری کارت گرافیک های PowerVR را تولید میکند و بیشتر در گوشی های هوشمند استفاده میشود.
- ا Apple: سری کارت گرافیک های Bionic را تولید میکند که در سری iphone از آن استفاده کرده.
شرکت هایی مانند Samsung و Hisilicon (برای شرکت هوآوی) نیز "تحت لایسنس" شرکت Arm کارت گرافیک های Arm را برای محصولات خود تولید میکنند.
مطلبی دیگر از این انتشارات
الگوریتم کوتاهترین مسیر Dijkstra
مطلبی دیگر از این انتشارات
الگوریتم KNN - نزدیکترین همسایه - مهدی مشایخی
مطلبی دیگر از این انتشارات
پروتکلهای لایه پیوند داده مدل OSI