ویرگول
ورودثبت نام
هوش مصنوعی
هوش مصنوعی
خواندن ۲ دقیقه·۲ سال پیش

کودا و GPU

کاربرد

مهم‌ترین کابرد امروزه‌ی کارتهای گرافیک یا GPU و کودا موازی سازی پردازش های مربوط به هوش مصنوعی و یادگیری عمیق است.

معماری کودا

ایده­ای که پشت الگوی برنامه‌نویسی کودا قرار دارد این است که برنامه ­­ها دارای ساختاری هستند که در آن بخشی از کد بر روی سی­ پی ­یو ماشین میزبان[1] اجرا می­شده و توابع کوچک فراخوانی شده به­صورت نخ­هایی[2] بر روی جی­ پی­ یو اجرا شوند. کدی که توسط سی­ پی­ یو بر روی میزبان اجرا می­شود به کد میزبان معروف است. کد میزبان هسته­ ها[3] را برای اجرا بر روی جی ­پی­ یو که در کودا دستگاه نامیده می­شود برنامه ­ریزی می­کند. یک هسته می­تواند با استفاده از هزاران یا حتی میلیون­ها نخ سبک ­وزن[4] که بر روی دستگاه اجرا می­شوند، راه ­اندازی شود. نخ­های کودا به دلایل زیر سبک ­وزن نامیده می­شوند:

یک نخ کودا تقریباً هیچ بالاسری[5] ندارد به این معنا که هزاران نخ می­توانند به‌سرعت ایجاد شوند.

در سطح پایین مدیریت کردن[6] نخ­های کودا توسط سخت­ افزار شتاب­دهی شده است. دلیل دیگر این کارایی به دلیل کنترل خودکار منابع در سطح سخت­افزار است. این ویژگی سبب می­شود که برنامه‌نویس تشویق شود که بزرگ و آزادانه فکر کند و به هر تعداد که نیاز است نخ­ها را تعریف کند. نخ­های بیشتر می­تواند کندی ایجادشده به دلیل واکشی[7] داده را از بین ببرد و عملکرد بهتری را حاصل کند.

دلیل دیگر سبک‌وزن بودن نخ­ها این است که برنامه‌نویسی کنترل کمتری بر روی آن­ها و ترتیب اجرای آن­ها دارد. زمان­بندی اجرای نخ­ها و بلوک­های[8] نیز توسط سخت­افزار مدیریت می­شود. در هر هسته کد یکسانی توسط هر نخ اجرا می­شود.

جی­ پی­ یو شامل واحد­های چندپردازنده[9]است که هرکدام شامل تعدادی هسته­ی پردازشی می­شوند که نخ­ها را به‌صورت موازی اجرا ­می­کنند. برنامه ­های کودا بر روی جی­-پی-­یوهای مختلف بدون در نظر گرفتن تعداد چندپردازنده ­ها یا هسته­ ها قابل‌اجراست. نخ­ها ازنظر مفهومی حاصل تقسیم بلوک­ها هستند. هر بلوک از یک هسته مشخص شامل تعداد برابری نخ است و تعداد کل بلوک­ها در یک مشبک[10] مرتب‌شده­ است. یک مشبک شامل تمامی بلوک­ها و درنتیجه نخ­های داخل یک هسته است. کودا با استفاده از واحد محاسباتی­ ای که تار[11]نامیده می­شود عملیات را انجام می­دهد. یک تار شامل 32 نخ است که دارای دستورالعمل­های اجرا به­ طور هم‌زمان بر روی چندپردازنده هستند.

جی ­پی ­یو

یک دستگاه کودا شامل یک جی­پی­یو با سلسه‌مراتبی از پردازنده­ها است که با یکدیگر قابلیت پردازش ترکیبی را ارائه می­کنند. پردازنده­ی سطح بالا چندپردازنده رشته­ای[12] که شامل چندین پردازنده­ی رشته­ای[13] است، نامیده می­شود. پردازنده­های رشته­ای هسته­های کودا نیز نامیده می­شوند. هر پردازنده­ی رشته­ای واحد حساب و منطق عدد صحیح[14] و واحد ممیز شناور[15]خود را دارد. همچنین هر چندپردازنده رشته­ای دارای چند واحد تابع خاص[16] که شامل پشتیبانی سخت­افزاری برای محاسبه سینوس، کسینوس، جذر مرتبه دوم و عملگرها دیگر است.

[1] Host

[2] Thread

[3] Kernel

[4] Lightweight

[5] Overhead

[6] Handling

[7] Fetch

[8] Block

[9] Multiprocessors

[10] Grid

[11] Warp

[12] Streaming Multiprocessor (SM)

[13] Streaming Processors (SP)

[14] Integer Arithmetic Logic Unit (ALU)

[15] Floating Point Unit (FPU)

[16] Special Function Units (SFU)

هوش مصنوعییادگیری عمیقکوداجی یو
هوش مصنوعی، یادگیری ماشین و یادگیری عمیق
شاید از این پست‌ها خوشتان بیاید