اجرای سریع و ساده کد ها روی GPU با استفاده از ILGPU

blog
۱۴۰۱-۱۱-۲۰
3 دقیقه

استفاده از GPU به جای CPU برای اجرای کد ها

خیلی دوست داشتم یک روش ساده پیدا کنم که جدا از پیچیدگی‌ها مرسوم فریم‌ورک‌های استفاده‌ها از gpu ها بتوانم کدهای ساده‌ام را به سریع‌ترین حالت روی گرافیک اجرا بگیرم که خوب دیدم راه‌حل‌های جالبی هست. یکی از این راه‌حل‌ها که من خیلی حال کردم و خوب از استفاده کردم. ILGPU بود که برای فریم‌ورک و ماشین دات‌نت طراحی و پیاده‌سازی شده.

چند تا نکته کوچک:

ما نمی‌توانیم GPU را مانند یک CPU در پیاده‌سازی در نظر بگیریم، در واقع در این سه حوزه باید مقایسه کرد:

  • دسترسی به حافظه
  • محلی بودن داده
  • Threading

در واقع GPU یک CPU نیست. ( GPU یک مجتمع از هزار یا هزاران هسته با اشتراک چند ده یا صدها واحد کنترل و کش است ولی CPU یک یا حداکثر چند ده هسته هست با همان تعداد واحد کنترل و کش و داستان TPU که جدا و اختصاصی برای یادگیری ماشین هست با معماری ماتریسی و سیستولی)

CPU چگونه کار می‌کند؟

یک پردازنده سنتی یک‌چرخه بسیار ساده دارد: واکشی، رمزگشایی و اجرا.

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

وقتی الگوریتمی دارید که می‌تواند به‌صورت موازی پردازش شود چه اتفاقی می‌افتد؟ یک CPU چندین هسته دارد که هرکدام واکشی، رمزگشایی و اجرای خود را انجام می‌دهند. می‌توانید الگوریتم را در تمام هسته‌های CPU پخش کنید، اما در نهایت هر هسته همچنان یک جریان دستورالعمل‌ها را اجرا می‌کند، احتمالاً همان جریان دستورالعمل‌ها، اما با داده‌های متفاوت. CPU ها ترفندی برای برنامه‌های موازی به نام SIMD دارند. اینها مجموعه‌ای از دستورالعمل‌ها هستند که به شما اجازه می‌دهند تا یک دستور عملیات را روی چندین قطعه داده به طور هم‌زمان انجام دهد. (بحث بیشتر مختص درس معماری کامپیوترهاست که بسیار مفصل است.) کتابخانه و فریم‌ورک‌های زیادی به ما کمک می‌کنند که اکثرشان تبدیل و دسترسی به کدهای c++ را پیشنهاد می‌کنند. من قبلاً برای کارهای گرافیکی از کتابخانه SHARPDL استفاده کرده بودم. وای الان منظور کارهای گرافیکی نیست و اجرای کد روی پردازنده گرافیکی به رام موضوعیت دارد.

لیست اینها عبارت‌اند از:

  • CUDAfy .NET allows easy development of high performance GPGPU applications completely from the .NET. It’s developed in C#. (by lepoco)
  • arrayfire-rust – Rust wrapper for ArrayFire
  • NvAPIWrapper – NvAPIWrapper is a .Net wrapper for NVIDIA public API, capable of managing all aspects of a display setup using NVIDIA GPUs
  • novideo_srgb – Calibrate monitors to sRGB or other color spaces on NVIDIA GPUs, based on EDID data or ICC profiles
  • cuda-api-wrappers – Thin C++-flavored header-only wrappers for core CUDA APIs: Runtime, Driver, NVRTC, NVTX.
  • TinyNvidiaUpdateChecker – Check for NVIDIA GPU driver updates!
  • srmd-ncnn-vulkan – SRMD super resolution implemented with ncnn library
  • ZenTimings A free, simple and lightweight app for monitoring memory timings on Ryzen platform.
  • Amplifier.NET – Amplifier allows .NET developers to easily run complex applications with intensive mathematical computation on Intel CPU/GPU, NVIDIA, AMD without writing any additional C kernel code. Write your function in .NET and Amplifier will take care of running it on your favorite hardware.
  • Hybridizer – Examples of C# code compiled to GPU by hybridizer
  • Hades-VegaM – Moded AMD RX Vega M series gpu driver to support Intel NUC Hades Canyon and all other products on Windows 10/11
  • waifu2x-converter-cpp – Improved fork of Waifu2X C++ using OpenCL and OpenCVV
کتابخانه ILGPU

کتابخانه ILGPU

شما می توانید تست این برنامه را در گیت هاب مشاهده نمایید.

 

برنامه نویسی پیاده‌سازی با استفاده از منابع کارت گرافیک در دات‌نت

برنامه‌نویسی بسیار ساده‌ای دارد. کافی است بعد از نوشتن روال، اجرا به تابع کرنل پاس بدهید و تمام.

البته این با CUDA متفاوت است؛ ولی نگران نباشید. کافی ایست این افزونه را درصورتی‌که پردازنده گرافیکی شما پشتیبانی می‌کند دانلود کنید و سپس با تغییر کوچکی از این روش استفاده کنید.

هدفم صرفاً شراکت شما در حال برده شده از این کار بود. طبعاً دانش و اطلاعات بیشتری باید در این زمینه داشت برای کارهای بزرگ‌تر.

اطلاعات
0
0
لینک و اشتراک
profile

مسعود رجایی

متخصص الکترونیک

یک نرم‌افزاری خوشحال

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

دیدگاه ها

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله