نمایش نتایج 1 تا 37 از 37

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

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #14

    نقل قول: سوال درباره ی اجرای چند نخی و استفاده از چند هسته بصورت همزمان

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    دقیقا، میگه درگیر شد، ولی نمیگه موازی درگیر شد یا همگام. به این مساله توجه کنید که شما با دو نخ دو تا هسته رو درگیر می کنید ولی خروجی 2 برابر که نمی گیرید. این اجرا موازیه؟ اگر موازیه و مستقل ئه چرا اینقدر سربار داره؟
    خیلی ممنون استاد .
    بذارید فعلا ، فقط این تیکه تون را جواب بدم . ممنون از بقیه ی قسمت های جوابی که دادین .

    وقتی توی پردازنده ی 4 هسته ای میگه مثلا 75 درصد پردازنده داره پروسه ی تو را پردازش میکنه (با کدهای clr مربوطه که مهم نیست) ، خوب یعنی 3 هسته را درگیر کرد دیگه . اگه درگیر شدن بصورت همگام بوده باشه که دیگه 75 درصد نمیشه . میشه 25 درصد چون در یک لحظه ، فقط یک هسته داره کد را اجرا میکنه .
    اتفاقا خروجی 2 برابر میگیریم دیگه (همون کد اول در پست اول که 2 برابر سریعتر از خروجی کد دوم در پست دوم هه)
    بعد اینکه اگه در برنامه ی خودتون هم اگه فقط یک هسته را فعال کنیم و بیش از 2 نخ را اجرا کنیم ، کارایی کمتر میشه پس این نشون میده که در این صورت 2 نخ در یک هسته اجرا میشن (اگه فقط یک هسته را فعال کنیم و تیک بزنیم) (چون گفتید این افزایش کارایی بخاطر اینه که وقتی یک نخ اجرا میکنیم ، کل یک هسته تمام توانش را برای کد ما نمیذاره اما با ایجاد چند نخ و سوئیچ اون (تک) هسته روی نخ هامون ، به این دلیل هست که کارایی اش افزایش پیدا میکنه .


    نقل قول نوشته شده توسط the king مشاهده تاپیک
    از طرف دیگه چرا باید کارایی 90 درصد بالاتر بره؟ با چه فرمولی همچین محاسبه ای کردید؟ در پردازش موازی دو برابر شدن تعداد هسته ها به دو برابر شدن کارایی ختم نمیشه.
    در این صورت گفتم کارایی ، حداقل باید 90 درصد افزایش پیدا کنه (یعنی حداقل نزدیک به دو برابر بیشتر بشه) که اولا نقاط بحرانی در نخ هامون وجود نداشته باشه ( که همونطور که میدونید ، مثلا به متغییر مشترکی در چند نخ نخوایم مشترکا دسترسی پیدا کنیم و بخونیم یا توش بنویسیم) و همچنین یه برنامه ای رو در تک هسته و تک نخ در قیاس با یه برنامه ای رو که در چهار هسته (و چهار نخ) اجرا کنیم ، گفتم . یعنی هر هسته ، تقریبا 30 درصد افزایش کارایی داشته باشه که در یه پردازنده ی 4 هسته ای (به نسبت تک هسته ای تک نخ) میشه 3*30 که میشه 90 درصد . یعنی یه برنامه ی 4 نخ هه (که در 4 هسته اجرا میشه و نقاط بحرانی نداره) حداقل باید 90 درصد یعنی 2 برابر سریعتر از حالت تک هسته ای باشه . مثل کد اول در پست اول که دادم .

    و منظورم این بود که اگه کلاس Thread ها فقط از یک هسته (بصورت همزمان) استفاده میکنن اما در عوض کلاس Parallel ها از چند هسته (بصورت همزمان) میتونن استفاده کنن ، پس توی الگوریتمی که در پست 5 دادید یا کد اول که در پست اول دادم (که نقاط بحرانی هم ندارن) رو وقتی در پردازنده ی 4 هسته (ی فیزیکی) اجرا میکنیم ، پس حداقل باید تفاوت 2 برابر اجرای سریعتر در کلاس Parallel ببینیم (چون همزمان در 4 هسته اجرا میشه) اما این اختلاف در بیشترین حد خودش به 10 درصد هم نمیرسه . گاها با هم برابر و گاها هم کلاس Thread بهتر عمل میکنه .


    قضیه ی بعدی اینکه من وقتی توی پردازنده ام 4 نخ ایجاد میکنم (مثلا کد اول در پست اول را در 4 نخ اجرا میکنم) ، چون کارکرد پردازنده گاها تا 100 درصد میرسه (نمیدونم چرا گاها تا 85 و گاها تا 95 و گاها تا 99 و حتی گاها تا 100 درصد کارکرد پردازنده میره) ، یعنی در واقع اون مواقعی که کارکردش تا 100 درصد میرسه ، سیستم ام کم میاره و حتی موس رو هم بخوبی نمیتونم حرکت بدم و بصورت واضح موسم بسیار کند حرکت میکنه . خوب اگه توی یه هسته کدم بصورت همزمان اجرا میشد ، پس 3 هسته ی دیگه ام آزاد میبود و دیگه پردازش نخ مربوط به عملیات موس که نباید با مشکل کندی شدید رو به رو میشد .
    آخرین ویرایش به وسیله SajjadKhati : سه شنبه 05 آذر 1398 در 23:17 عصر

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: چهارشنبه 13 بهمن 1395, 00:04 صبح
  2. پاسخ: 3
    آخرین پست: دوشنبه 27 خرداد 1392, 12:26 عصر
  3. سوال : ساخت پایگاه داده بصورت تک فایل مستقل بدون پسورد ؟!
    نوشته شده توسط mf.designing در بخش امنیت در SQL Server
    پاسخ: 2
    آخرین پست: پنج شنبه 29 فروردین 1392, 17:09 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •