ورود

نسخه کامل مشاهده نسخه کامل : مشخص کردن اجرا برنامه روی چند هسته خاص



Life24
28-05-2016, 16:18
با درود
دوستان یک برنامه موازی بسیار ساده ما منویسیم.
اما میخواهیم ترد ها که ایجاد میکنه برنامه، ما از ورودی بهش بگیم روی چند تا هسته کامپیوتر اجرا شه.
مثلا سیستم ما هشت هسته داره.
یک برنامه موازی نوشتم. میخواهم اگر وارد کردم عدد 1 فقط روی یک هسته ترد ها ایجاد و اجرا شوند
اگر زدم 2 این ترد ها روی 2 هسته پخش شوند
اگر زدم 4 روی چهار هسته پخش شوند ترد
ظاهرا پشت صحنه سیستم عامل این قضیه رو مدیریت میکنه. اما من بخواهم در دست بگیرم این اختیار رو چی کار باید کرد.
ممنون

saeed_136915
28-05-2016, 17:19
سلام
سیستم عامل مسئول منیج کردن تردهاست...
شما مثلا 4 تا ترد ایجاد بکنین سیستم عامل در صورت امکان اونها رو روی 4 تا هسته پخش میکنه
یعنی فقط کافیه شما تعداد ترد هاتون رو مشخص کنین.

البته این کاری که میخوایین بکنین غیر عملی نیست ولی نیازی بهش نیست.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Life24
28-05-2016, 18:38
ممنون از شما راستش من این لینک رو دیده بودم اما تاپیک زدم شاید توضیح بهتری گیرم بیاد چون اون رو نفهمیدم

H.E.R.O.E.S
30-05-2016, 23:40
این تاپیکی که معرفی کردید با استفاده از توابع خود سیستمی این کار و انجام میده
از طرفی من فکر می کنم که این مورد باید اشتباه باشه
چون خود سیستم عامل پردازش ها رو تقسیم می کنه این امکان هم وجود داره که سیستم عامل یک ترد و بین تمام هسته های سیستم به صورت موازی پخش کنه تا سرعت انجام کار بره بالا ...
و از طرفی این احتمال هم وجود داره که اگر شما مثلا 200 ترد درست کنید ممکن سیستم عامل 200 ترد و به هسته هایی بده که الان سرشون خلوت هست یا کاری ندارند
هیچ کسی نمی داند که (به جز تیم طراح مایکروسافت) که این عملیات چگونه انجام میشود چون سیستم عامل متن باز نیستند ...
من فکر می کنم از این بابت که خیالتون راحت باشه که حتماً دو هسته دارن استفاده می کنند استفاده از توابع سیستمی باشه ...

Life24
01-06-2016, 10:25
این تاپیکی که معرفی کردید با استفاده از توابع خود سیستمی این کار و انجام میده
از طرفی من فکر می کنم که این مورد باید اشتباه باشه
چون خود سیستم عامل پردازش ها رو تقسیم می کنه این امکان هم وجود داره که سیستم عامل یک ترد و بین تمام هسته های سیستم به صورت موازی پخش کنه تا سرعت انجام کار بره بالا ...
و از طرفی این احتمال هم وجود داره که اگر شما مثلا 200 ترد درست کنید ممکن سیستم عامل 200 ترد و به هسته هایی بده که الان سرشون خلوت هست یا کاری ندارند
هیچ کسی نمی داند که (به جز تیم طراح مایکروسافت) که این عملیات چگونه انجام میشود چون سیستم عامل متن باز نیستند ...
من فکر می کنم از این بابت که خیالتون راحت باشه که حتماً دو هسته دارن استفاده می کنند استفاده از توابع سیستمی باشه ...

بله حق با شماست. اما ما صرفا میخواهیم برای تست هم شده این کار انجام بدیم.
یعنی خودمان بگوئیم روی 1 هسته اجرا شو.
روی 4 هسته اجرا بشو. یک جورایی غیرمستقیم کنترلش از سیستم عامل و زبان برنامه نویسی گرفته بشه..