چرا GPU ها اینقدر با CPU متفاوت بهنظر میرسند
یک CPU، همانطور که در سراسر بیشتر این مجموعه پوشش داده شد، برای اجرای تعداد کمی جریان دستوری پیچیده و مستقل با بیشترین سرعت ممکن بهینهشده، با استفاده از تکنیکهایی مانند اجرای out-of-order و پیشبینی شاخه که پیشتر بحث شد. یک GPU (Graphics Processing Unit) رویکردی تقریباً مخالف را اتخاذ میکند: پیچیدگی هر جریان اجرای منفرد را فدا میکند در ازای اجرای تعداد عظیمی رشته ساده و همزمان.
منشأ: رندر گرافیک بهعنوان موازیسازی عظیم داده
GPU ها در ابتدا برای رندر گرافیک طراحی شدند، بار کاریای که نیازمند اعمال یک محاسبه نسبتاً ساده یکسان، مانند محاسبه رنگ یک پیکسل، به میلیونها پیکسل مستقل بهطور همزمان است. این یک نسخه افراطی و بزرگمقیاس از موازیسازی داده است که پیشتر در این مجموعه درباره SIMD و موازیسازی زیرکلمهای بحث شد، و کل معماری GPU را حول اجرای همان عملیات در سراسر حجم عظیمی از داده مستقل بهطور همزمان شکل داد.
مدل اجرای GPU: رشتههای سازمانیافته در گروهها
بهجای تعداد کمی هسته پیچیده، یک GPU تعداد بسیار زیادی واحد پردازشی ساده شامل میشود، که طوری سازماندهی شدهاند که گروههایی از رشتهها دقیقاً همان دستور را با هم بهصورت lockstep اجرا کنند، مدلی که ارتباط نزدیکی با مفاهیم SIMD و SPMD که پیشتر در این مجموعه بحث شد دارد اما در مقیاس بسیار بزرگتری پیادهسازی شده.
رویکرد CPU: تعداد کمی هسته پیچیده،
هرکدام اجراکننده یک جریان دستوری متفاوت و مستقل
رویکرد GPU: هزاران هسته ساده،
گروههای بزرگ که همان دستور را
بهطور همزمان روی داده متفاوت اجرا میکنندچرا این طراحی انعطافپذیری را با توان عملیاتی مبادله میکند
از آنجا که گروههای رشته GPU بهصورت lockstep اجرا میشوند، یک GPU زمانی بهترین عملکرد را دارد که هر رشته در یک گروه دقیقاً همان مسیر اجرا را دنبال کند. اگر رشتهها درون همان گروه نیاز داشته باشند شاخههای متفاوتی بگیرند، برخی رشتهها باید بیکار منتظر بمانند در حالی که دیگران اجرا میشوند، وضعیتی به نام Divergence، که مزیت کاراییای که GPU ها را از ابتدا جذاب کرده بود را کاهش میدهد.
چه نوع بارهای کاری بیشترین بهره را میبرند
GPU ها در بارهای کاری با موازیسازی داده فراوان و مستقل و divergence شاخهای حداقلی بین عناصر، مانند رندر گرافیک، عملیاتهای ماتریسی بزرگمقیاس که پیشتر در این مجموعه درباره ضرب ماتریس بحث شد، و آموزش یادگیری ماشین، که همگی همان عملیات ریاضی نسبتاً ساده را در سراسر مجموعهدادههای عظیم اعمال میکنند، برتری دارند. بارهای کاریای که با شاخهزنی پیچیده و غیرقابلپیشبینی یا زنجیرههای طولانی از عملیاتهای پیدرپی وابسته سلطه یافتهاند، معمولاً روی سختافزار GPU ضعیف عمل میکنند و برای یک CPU مناسبتر هستند.
چرا GPU ها به مرکز محاسبات مدرن تبدیل شدهاند
رشد انفجاری یادگیری ماشین، که بهشدت به عملیاتهای ماتریسی و برداری عظیم متکی است، GPU ها را بسیار فراتر از هدف اصلی رندر گرافیکشان به مرکز محاسبات مدرن تبدیل کرده، و آنچه بهعنوان یک شتابدهنده گرافیکی تخصصی شروع شد را به یکی از مهمترین دستههای سختافزار محاسباتی مورد استفاده امروزی تبدیل کرده است.