اخبار
اخبار
CUDA پیوند شده است، و GPU مبتنی بر risc-v در حال پخش است؟
2022-03-17 459

RISC-V یکی از داغ‌ترین موضوعات در محاسبات بوده است، زیرا این معماری مجموعه دستورالعمل (ISA) امکان سفارشی‌سازی گسترده را فراهم می‌کند و به راحتی قابل درک است، علاوه بر مزیت منبع باز، بدون مجوز. حتی پروژه ای برای طراحی یک GPU همه منظوره بر اساس RISC-V ISA وجود دارد و اکنون شاهد انتقال کتابخانه نرم افزاری CUDA انویدیا به پلتفرم Vortex RISC-V GPGPU هستیم.


CUDA انویدیا (معماری دستگاه یکپارچه محاسباتی) یک پلت فرم محاسباتی و رابط برنامه نویسی کاربردی (API) منحصر به فرد را نشان می دهد که روی خط کارت های گرافیک انویدیا اجرا می شود. هنگامی که یک برنامه برای پشتیبانی CUDA نوشته می شود، به محض اینکه سیستم یک GPU مبتنی بر CUDA را کشف کرد، شتاب زیادی از کد GPU دریافت می کند.


امروزه، محققان راهی را برای فعال کردن پشتیبانی کیت ابزار نرم افزار CUDA در پروژه RISC-V GPGPU به نام Vortex بررسی کردند. Vortex RISC-V GPGPU برای ارائه یک GPU RISC-V در سطح سیستم بر اساس RV32IMF ISA طراحی شده است. این بدان معنی است که هسته های 32 بیتی می توانند از طرح های گرافیکی 1 هسته ای تا 32 هسته ای مقیاس شوند. این برنامه از API گرافیکی OpenCL 1.2 پشتیبانی می کند و امروزه از برخی عملیات CUDA نیز پشتیبانی می کند.


محققان توضیح می دهند: "... در این پروژه، ما یک خط لوله را برای پشتیبانی از مهاجرت CUDA از سر به انتها پیشنهاد و ایجاد می کنیم: خط لوله کد منبع CUDA را به عنوان ورودی می پذیرد و آنها را بر روی معماری توسعه یافته RISC-V GPU اجرا می کند. خط لوله شامل چندین مرحله است: ترجمه کد منبع CUDA به NVVM IR، تبدیل NVVM IR به SPIR-V IR، ارسال SPIR-V IR به POCL برای دریافت باینری RISC-V، و در نهایت اجرا بر روی معماری فایل باینری توسعه یافته RISC-V GPU. "



این فرآیند در تصویر بالا نشان داده شده است، و تمام مراحل برای انجام آن را نشان می دهد. به زبان ساده، کد منبع CUDA در قالب بازنمایی میانی (IR) به نام NVVM IR، بر اساس منبع باز LLVM IR نشان داده می شود. بعداً به IR استاندارد قابل حمل (SPIR-V) تبدیل شد که سپس به یک پیاده‌سازی منبع باز قابل حمل استاندارد OpenCL به نام POCL ارسال شد. از آنجایی که Vortex از OpenCL پشتیبانی می کند، کدهای پشتیبانی شده را ارائه می دهد و می تواند آن را بدون مشکل اجرا کند.


برای جزئیات بیشتر در مورد این فرآیند پیچیده، برای خواندن مقاله اصلی روی زیر کلیک کنید. نکته مهم این است که باید از این محققان به خاطر تلاش هایشان برای اجرای CUDA بر روی GPGPU های RISC-V تشکر کنید. در حالی که این تنها یک قدم کوچک در حال حاضر است، اما می‌تواند آغاز دوره‌ای باشد که در آن از RISC-V برای تسریع برنامه‌های محاسباتی استفاده می‌شود، دقیقاً مانند خط تولید پردازنده‌های گرافیکی امروزی انویدیا.


مطالعه گسترده: آیا RISC-V می تواند GPU را تغییر دهد؟


آیا RISC-V می تواند تراکنش های GPU را انجام دهد؟ این یک کار در حال پیشرفت است که می‌توان با ایجاد یک طراحی کوچک با قابلیت برنامه‌ریزی و مقیاس‌پذیری سفارشی به دست آورد.  
  هر کسی که معماری GPU را مطالعه کرده باشد می داند که این ساختار SIMD یک پردازنده برداری است. این یک پردازنده موازی بسیار کارآمد است که برای همه چیز از اجرای شبیه‌سازی‌ها و بازی‌های عالی گرفته تا آموزش به روبات‌ها برای دستیابی به هوش مصنوعی و کمک به افراد باهوش در دستکاری بازار سهام استفاده می‌شود. حتی وقتی این را می نویسم گرامر من را بررسی می کند.  
  اما فیلد GPU به یک فیلد خصوصی تبدیل شده است و کار درونی آن توسط IP و انجام می شود موثر منابع توسعه دهندگان مانند AMD، Intel و Nvidia. اگر مجموعه جدیدی از دستورالعمل های گرافیکی برای گرافیک سه بعدی و پردازش رسانه طراحی شده باشد، چه؟ خوب، ممکن است وجود داشته باشد.  
  دستورالعمل های جدید بر روی مجموعه دستورالعمل های برداری پایه RISC-V ساخته می شوند. آنها پشتیبانی از انواع داده های خاص گراف جدید را به عنوان پسوند لایه ای در روح هسته RISC-V ISA اضافه خواهند کرد. از عملیات بردار، ریاضی قبلی، پیکسل و بافت و عملیات بافر Z/Frame پشتیبانی می کند. این می تواند یک CPU-GPU ISA ذوب شده باشد. کتابخانه - گروه RISC 3D آن را RV64X می نامد (شکل 1) زیرا طول دستورالعمل ها 64 بیت خواهد بود (32 بیت برای پشتیبانی از یک ISA قوی کافی نخواهد بود).  
 

شکل 1. پردازنده گرافیکی RV64X شامل چندین DSP علاوه بر واحدهای بافت اختصاصی و بلوک های عملکردی است.
 
  این گروه اعلام کردند که انگیزه و هدف آنها ایجاد یک طرح کوچک و کارآمد با قابلیت برنامه ریزی و توسعه سفارشی است. باید مالکیت و توسعه IP کم هزینه را فراهم کند، نه اینکه با محصولات تجاری رقابت کند. می توان آن را بر روی اهداف FPGA و ASIC پیاده سازی کرد و رایگان و متن باز است. طراحی اصلی میکروکنترلرهای کم توانی را هدف قرار می دهد که با Khronos Vulkan سازگار هستند و از سایر API ها (OpenGL، DirectX و غیره) پشتیبانی می کنند.  
               

GPU + RISC-V


سخت افزار مورد نظر دارای یک واحد عملکردی GPU و یک هسته RISC-V خواهد بود. این ترکیب به شکل پردازنده هایی است که دستورالعمل های 64 بیتی به عنوان دستورالعمل های اسکالر کدگذاری می شوند. نکته این است که کامپایلر دستورالعمل های SIMD را از کدهای عملیاتی اسکالر پیشوندی تولید می کند. سایر ویژگی‌ها عبارتند از مسائل قابل تغییر، یک باطن SIMD مبتنی بر محمول. ردیابی شعب؛ استثناهای دقیق؛ و جلوی وکتور. طرح ها شامل یک نسخه 16 بیتی نقطه ثابت و یک نسخه 32 بیتی ممیز شناور خواهد بود. اولی برای اجرای FPGA مناسب است.  
  این تیم گفت: "نیازی به استفاده از مکانیسم تماس RPC/IPC برای ارسال تماس های API سه بعدی به فضای استفاده نشده حافظه CPU یا فضای استفاده نشده حافظه CPU به فضای حافظه GPU و بالعکس وجود ندارد."  
  مزیت رویکرد ISA CPU-GPU "fused" این است که خطوط لوله گرافیکی استاندارد را می توان در میکروکد استفاده کرد و سایه زن های سفارشی را می توان پشتیبانی کرد. حتی می تواند شامل پسوندهای ردیابی پرتو باشد.  
  این طراحی در قالب Vblock خواهد بود (برگرفته از تلاش Libre GPU):  
 
  • این شبیه به VLIW است (اما نه واقعا).
  • قبل از بلوک‌های دستورالعمل، نشانگرهای ثبت وجود دارند که زمینه اضافی را برای دستورالعمل‌های اسکالر در آن بلوک فراهم می‌کنند.
  • بلوک‌های فرعی شامل طول برداری، چرخش، همپوشانی بردار/عرض و پیش‌بینی است.
  • همه اینها به کدهای اسکالر اضافه شده است!
  • هیچ کد عملیاتی برداری وجود ندارد (و نه نیازی به هیچ کدام).
  • در زمینه برداری، به این صورت است: اگر یک اپکد اسکالر از یک ثبات استفاده کند و آن ثبات در بافت برداری فهرست شده باشد، حالت برداری فعال خواهد شد.
  • فعال‌سازی باعث می‌شود که حلقه for در سطح سخت‌افزار چندین عملیات اسکالر متوالی (به‌جای تنها یک) منتشر کند.
  • پیاده‌کننده‌ها آزادند حلقه‌ها را به هر شکلی که می‌خواهند پیاده‌سازی کنند - SIMD، چند شماره، تک اجرا. تقریبا هر چیزی

  بردار RV32-V عملیات بردار 8 بیتی، 16 بیتی یا 32 بیتی/عنصری از 2 تا 4 عنصر را انجام می دهد. همچنین دستورالعمل های اختصاصی برای خط لوله رندر گرافیک سه بعدی عمومی برای نقاط XYZW نقطه ثابت و شناور 3 بیتی و 64 بیتی وجود دارد. پیکسل های RGBA 128، 8، 16 و 24 بیتی؛ تککسل های UVW 32 بیتی، 8 بیتی در هر جزء؛ و تنظیمات نور و مواد (Ia، ka، Id، kd، Is، ks و غیره).  
  بردار ویژگی به صورت یک ماتریس 4×4 نشان داده می شود. این سیستم به صورت بومی از ماتریس های 2×2 و 3×3 پشتیبانی می کند. پشتیبانی برداری ممکن است برای شبیه‌سازی عددی با استفاده از انواع داده‌های عدد صحیح 8 بیتی که در برنامه‌های هوش مصنوعی و یادگیری ماشین رایج است، مناسب باشد.  
  شطرنج‌سازهای سفارشی مانند splines، سطوح SubDiv و وصله‌ها را می‌توان در طراحی گنجاند. این روش همچنین امکان گنجاندن مراحل سفارشی خط لوله، مراحل هندسه سفارشی/پیکسل/فریم بافر، تقسیم‌کننده‌های فرعی سفارشی و عملیات نمونه‌سازی سفارشی را فراهم می‌کند.  
             

rv64x


پیاده سازی مرجع RV64X شامل موارد زیر است:
 
 
  • حافظه نهان SRAM دستورالعمل/داده (32 کیلوبایت)

  • SRAM میکروکد (8 کیلوبایت)

  • رمزگشای دستورالعمل دو کاره (سیم سخت برای RV32V و X؛ رمزگشای دستورالعمل میکروکد برای ISA سفارشی)

  • ALU چهار برداری (32 بیتی/ALU ثابت/ شناور)

  • فایل رجیستر 136 بیتی (1k عنصر)

  • واحد عملکرد ویژه

  • واحد بافت

  • فریم بافر محلی قابل تنظیم


  RV64X یک معماری مقیاس پذیر است (شکل 2). روش ادغام آن، و همچنین استفاده از ثبات های قابل تنظیم برای انواع داده های سفارشی، جدید است. میکروکد مبتنی بر SRAM تعریف شده توسط کاربر می تواند برای پیاده سازی برنامه های افزودنی مانند مراحل سفارشی ساز شطرنجی، ردیابی پرتو، بینایی ماشین و یادگیری ماشین استفاده شود. یک طرح واحد را می توان روی یک میکروکنترلر گرافیکی مستقل یا یک راه حل چند هسته ای با واحدهای سایه زن مقیاس پذیر اعمال کرد.  
 

شکل 2. RV64X می تواند از یک طرح ساده پایین (چپ) به یک راه حل چند هسته ای (راست) مقیاس شود.  
  پسوندهای گرافیکی RISC-V به مقیاس پذیری و چندزبانگی می پردازد. این موارد استفاده سطح بالاتری را امکان پذیر می کند که منجر به نوآوری بیشتر می شود.  
             

چه بعدی


مشخصات RV64X هنوز در مراحل اولیه توسعه است و ممکن است تغییر کند. یک انجمن گفتگو در حال ایجاد است. هدف فوری ساخت یک پیاده سازی نمونه با استفاده از شبیه ساز مجموعه دستورالعمل است. این با استفاده از منابع IP و پیاده سازی FPGA IP سفارشی طراحی شده به عنوان پروژه های منبع باز باز می شود.





سلب مسئولیت: این مقاله از "رصد صنعت نیمه هادی" تکثیر شده است. این مقاله فقط بیانگر نظر شخصی نویسنده است، نه نظر ساک میکرو و صنعت، فقط برای تجدید چاپ و اشتراک گذاری، پشتیبانی برای حفظ حقوق مالکیت معنوی، لطفا منبع اصلی و نویسنده را برای چاپ مجدد ذکر کنید. در صورت وجود هرگونه تخلف، لطفا با ما تماس بگیرید تا آن را حذف کنیم.

whatsapp

خط تلفن خدمات

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950