جمعه 29 دی 1396 | Friday 19 th of January 2018 صفحه اصلی گروه الکترونیکی کامپیوتر
3-5-8- یک مدل برنامه نویسی ناهمگن

     کودا از دو دیدگاه مجزا از عاملان اصلی درگیر در محاسبات پشتیبانی می کند: میزبان و دستگاه. میزبان چیزی هست که برنامه اصلی را اجرا می کند در حالی که دستگاه یک کمک پردازنده است. یک سناریو بارز این هست که CPUرا بعنوان میزبان و GPUرا بعنوان کمک پردازنده در نظر می گیرند.

معمولا برنامه های کودا شامل بعضی ازقطعات کد هستند که به محاسبات زیادی نیاز دارند که در شکل 3-8 نشان داده شده است. چنین کدهایی در کرنل قرار گرفته اند و بوسیله دستگاه اجرا می شوند. کرنل مشابه بصورت موازی بوسیله چندین نخ اجرا می شود. تعداد نخ هایی که یک کرنل مشخص اجرا می کند بوسیله برنامه نویس مشخص می شود و در زمانی که برنامه میزبان درخواست کرنل می کند مشخص می شود. از نقطه نظر حافظه، کودا فرض می کند که میزبان و دستگاه حافظه DRAMخوشان را دارند که به ترتیب حافظه میزبان و حافظه دستگاه نامیده می شود.

شکل3- 8- مثال اجرا ناهمگن

پایه ترین مثال از جریان پردازش کودا در شکل 3-9 نشان داده شده است و می توان ان ها را بصورت زیر خلاصه کرد:

1- تخصیص حافظه سراسری به دستگاه

2- کپی کردن داده از حافظه میزبان به حافظه سراسری دستگاه

3- اجرا کرنل کودا و ذخیره نتایج در حافظه میزبان

4- کپی داده از حافظه سراسری دستگاه به حافظه میزبان

5- ازادسازی حافظه سراسری دستگاه

شکل3- 9- جریان کنترل پایه ای کودا

اولین مرحله در کد میزبان اجرا می شود. همانطور که بیان شد مسیر عمومی داده بین میزبان و کرنل حافظه سراسری است. از انجا، انتقال های اختیاری حافظه، بین فضاهای حافظه دستگاههای مختلف برای افزایش کارایی می تواند انجام شود.

مرحله دوم کاملا واضح است. دستگاه به حافظه میزبان نمی تواند دسترسی پیدا کند، بنابراین همه دادههایی که بوسیله کرنل لازم است باید به حافظه دستگاه انتقال یابند. مرحله سوم خود توصیف است، محاسبات خواسته شده روی دستگاه اجرا می شود و نتایج در حافظه دستگاه ذخیره می شوند. از انجایی که کرنل نمی تواند حافظه میزبان را بخواند، قطعا در ان نیز نمی تواند بنویسد. مرحله4 شبیه مرحله2 است فقط داده از مسیر مخالف منتقل می شود.

پنجمین و اخرین مرحله شبیه هر برنامه نویسی کد میزبان است. هر حافظه ای که اختصاص یافته است وقتی که دیگر به ان نیاز نیست باید ازاد شود. در بخش3-5-14 این عناوین را تحت واژه کارایی بیشتر توصیف می کنیم. اما اگر  این احتمال وجود دارد که از دادههای اختصاص یافته دوباره استفاده شود، نباید انها خیلی زود ازاد شوند. انتقال های داده بین میزبان و  دستگاه بی نهایت گران هستند و اگر امکان داشته باشد باید از انها جلوگیری کنیم.

این جریان کارایی برای برنامه های کاربردی مختلف برنامه نویسی کودا می توانند کاملا عمومیت داشته باشد.

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