از شروع فعالیت کنسول بازی ابری پلی پاد، یکی از مهمترین دغدغه های توسعه زیرساخت این کنسول؛ هزینه سخت افزاری آن در شرایط بی ثبات بازار ارز بود. پروژه در اواسط سال ۹۷ با نرخ ارز ۴ تا ۵ هزار تومانی آغاز شد و امروز در سال ۱۴۰۰ با نرخ ارز بالای ۲۷ هزار تومان در حال ادامه میباشد. این نوسان ما را برآن داشت تا با اولویت بالایی بر روی پیاده سازی زیرساخت GPU Partitioning تمرکز کنیم. اما چرا وجود این زیرساخت حیاتی است؟ در ادامه این مطلب به تفاوت بود و نبود آن خواهیم پرداخت.
جی پی یو – پی و جی پی یو – وی چیست؟
امروزه کاربرد کارت گرافیک در صنایع مختلف بیش از پیش رو به افزایش است و این کالا دیگر یک سخت افزار تنها برای اجرای بازی یا رندر انیمیشن محسوب نمیشود. شرکت های تولید کنندگان کارت گرافیک با هوشمندی تمام توانستند این محصول را از یکه تازی در صنعت بازی به فتح صنایع دیگری همچون هوش مصنوعی، رمز ارز ها، استریمینگ ویدیو، دیتابیس ها و واقعیت افزوده/مجازی سوق دهند.
با ورود کلاودگیمینگ، حجم تقاضا برای این کالا در بین دیتاسنتر ها رو به افزایش است، به نحوی که به گزارش نشریه نیوزو پیش بینی میشود که سهم درآمد بازار کلادگیمینگ در طی دو سال آینده به بیش از پنج بیلیون دلار خواهد رسید.
اما همانقدر که کلاودگیمینگ جذاب است، به همان اندازه و شاید هم بیشتر دارای چالش های توسعه تکنولوژی میباشد. چالش هایی از قبیل توسعه Cross Platform و Realtime Streaming اپلیکیشن ها و از همه مهمتر اسکیل کردن زیرساخت های نرم افزاری و خصوصا سخت افزاری آن در بین دیتاسنتر ها.
اغلب سرویس های کلاودگیمینگ کنونی بخش GPU-P را حذف و سرویس خود را بر مبنای در اختیار قرار دادن یک کارت گرافیکی فیزیکی به یک کاربر بنا کرده اند. اما کلادگیمینگ های مطرح نظیر گوگل استادیا، پلی استیشن ناو و جی فورس ناو روش اصولی توسعه این زیرساخت یعنی پارتیشنیگ را از ابتدا در پیش گرفتند. البته برخی هم به بهره گیری از GPU as a Service پرداخته اند و از ارایه دهنده های سرویس GPU-V یا GPU Virtualization نظیر آژور ( آزور)، آمازون، گوگل، آی بی ام و … بهره میگیرند. پلی پاد هم از سال ۹۷ به سبب تحریم ها روش پیاده سازی زیرساخت GPU-P وGPU Virtualization را پیاده سازی کرد.
در تخصیص منابع کارت گرافیک دو روش وجود دارد:
- روش اول GPU Passthrough میباشد؛ یعنی به عنوان مثال یک کارت گرافیک مستقیما به یک سیستم عامل متصل میشود. این روش از نظر هزینه خصوصا در اسکیل کردن کاربران به صرفه نمیباشد چرا که شما یک اسلات مادربورد را به یک کارت و در واقع یک کاربر تخصیص میدهید.
- روش دوم آن است که بخشی از حافظه گرافیکی توسط یک نرم افزار میانی به سیستم عامل اختصاص داده شود. روش دوم اصطلاحا GPUVirtualization نامیده میشود. در این روش شما میتوانید در محیط های ایزوله به راحتی توسط ای پی آی های گرافیکی نظیر ولکان، دایرکت ایکس و یا اوپن جی ال به راحتی فریم های خود را بر روی swap chain قرار دهید. حیطه استفاده از GPU-P بیشتر در هوش مصنوعی میباشد، شما به تنهایی با GPU-P نمیتوانید از VDI استفاده کنید و حتما باید GPUVirtualization را پیاده سازی کنید.
تفاوت کامپیوتینگ و رندرینگ در چیست؟
ساختار کارت گرافیک شامل چندین قسمت میباشد اما میتوان آنرا به دو بخش اصلی Computing و Rendering مجزا کرد. بسته به معماری کارت گرافیک برخی صرفا برای Computing و محاسبات هوش مصنوعی مناسب هستند و برخی تنها برای ریل تایم رندرینگ یا ریل تایم Ray Tracing.
در محیط محاسباتی یا Computing به سادگی میتوان از طریق نرم افزار های واسط یک تسک یا جاب را بر روی میزان مشخصی از حافظه GPU محدود کرد اما در فضای رندرینگ شرایط متفاوت است و میتوان آنرا به به دو حالت OffScreen Rendering و OnScreen Rendering تقسیم بندی کرد.
OnScreen Rendering حالت پیش فرض برای رندرینگ اپلیکیشن ها میباشد اما لازمه OffScreen Rendering دسترسی به سورس اپلیکیشن است تا بتوان بجای ارسال فریم نهایی به SwapChain یا گرفتن فریم از DXGI (در DirectX) آنرا در حافظه ذخیره و در استریم انکود کرد.
ما در پلی پاد به واسط زیرساخت موتور ولف تمامی موارد بالا را بسته به نیازمان پیاده سازی کرده ایم و با توجه به شرایط بازی و سرور یکی از روش های بالا اجرا خواهند شد. همچنین به منظور افزایش بهره وری از سخت افزار ها، قابلیت اجرای بازی ها حتی بدون جی پی یو هم میسر شده است.