شنبه 24 آذر 1397 | Saturday 15 th of December 2018 صفحه اصلی گروه الکترونیکی کامپیوتر
3-5-7- مدل برنامه نویسی کودا

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

خیلی زود طراحان GPUمتوجه شدند که وجود انعطاف پذیری امکان توسعه خروجی های پیچیده تر را بوجود خواهد اورد. به این شیوه پایپلاین بعنوان مفهومی جدید فرض شده و از دهه کنونی اجازه برنامه نویسی در سطوح مختلف جریان پردازش را می دهد. برنامه های GPUقدیمی تر اغلب سایه زن نامیده می شدند و انها با زبانهای برنامه نویسی سایه زن نوشته می شدند که عموما توسعه ای از زبان های برنامه نویسی قدیمی در پشتیبانی از راس ها و قطعات و واسط مراحل پایپلاین بودند(مثل Cg) شکل 3-7 نمونه ای از پایپلاین گرافیکی با برنامه های شیدر پردازش راس و قطعات است.

شکل3- 8- پایپلاین گرافیکی

مرحله بعدی در شیوه های GPGPUهای مدرن ظهور معماری سایه زن یکپارچه است. با پایپلاین قابل برنامه نویسی که در بالا توصیف شد توسعه دهندگان می توانند مزایا بیشتری از تقسیم بندی منابع GPUبگیرند. اما هنوز مشکل بار کاری نامتعادل وجود دارد. در نتیجه کندترین مرحله روی کل کارایی تاثیر می گذارد. در یک معماری سایه زن یکپارچه ما چندین هسته سایه زنی را می توانیم پیدا کنیم که قادر هستند در هر مرحله از پایپلاین عمل کنند. هر هسته سایه زن یکپارچه می تواند هر نوعی از سایه زن را اجرا کند و نتایج را تا زمانی کل زنجیره سایه زن ها اجرا شدند به هسته سایه زن دیگری(شامل خودش) بفرستد. با استفاده از هسته های سایه زن یکپارچه منابع براساس کاربردهای خاص و به یک شیوه پویاتر اختصاص پیدا می کنند که در نتیجه مدیریت بار متعادل می شود. اما اشکال برنامه های کاربردی مثلCg, OpenGL, DirectX  که برای برنامه نویسی در این نسل استفاده می شدند این بود که انها مخصوص برنامه نویسی گرافیکی طراحی شده بودند. ازاینرو، استفاده از انها برای برنامه نویسی GPUبا اهداف عمومی کاملا غیر عملی و به برنامه نویسان خبره ای نیاز بود.

محیط کودا یک مدل برنامه نویسی برش لبه خوب را برای معماری GPUهای مدرن ارائه می دهد. NVIDIAاین محیط برنامه نویسی را ارائه داد تا با مدل پردازشی معماری تسلا سازگار باشد به این طریق توانایی های GPUهای موازی برای توسعه دهندگان اشکار می شود. بعد از معرفی معماری NVIDIAکودا، چندین رابط برنامه نویسی برای رسیدن به نیازمندیهای برنامه نویسی GPUبهتر با اهداف عمومی توسعه پیدا کردند.

Compatability by:
آخرین به روز رسانی سایت: سه شنبه, 22 اسفند 1391 - 00:26