ارزش افزوده موازی کاری در جاروهای دسته ای
یکی از مواردی که تاکنون در مجموعه وبلاگ مدلسازی ترکیبی زیاد در مورد آن صحبت نکرده ایم این است که هنگام افزودن منابع بیشتر به محاسبات خود، انتظار افزایش سرعت را داشته باشیم. امروز، برخی از تحقیقات نظری را در نظر می گیریم که محدودیت ها را در محاسبات موازی توضیح می دهد. ما همچنین به شما نشان خواهیم داد که چگونه از گزینه Batch Sweeps نرم افزار COMSOL استفاده کنید، که یک عملکرد موازی داخلی و شرم آور برای بهبود عملکرد در هنگام رسیدن به این محدودیت ها است.
قوانین آمدال و گوستافسون-بارسیس
قبلاً اشاره کردیم که چگونه افزایش سرعت از طریق اضافه کردن واحدهای محاسباتی به الگوریتم وابسته است (در این پست از اصطلاح فرآیندها استفاده خواهیم کرد ، اما واحدهای محاسباتی اضافه شده نیز میتوانند رشته باشند ). یک الگوریتم کاملاً سریالی ، مانند محاسبه عناصر سری فیبوناچی ، اصلاً از یک فرآیند اضافه سود نمیبرد، در حالی که یک الگوریتم موازی ، مانند جمع بردار، میتواند از تعداد پردازندههایی که ما در بردار داریم استفاده کند. بیشتر الگوریتمها در دنیای واقعی جایی بین این دو هستند.
برای تجزیه و تحلیل حداکثر سرعت ممکن یک الگوریتم، فرض می کنیم که شامل کسری از کد کاملاً موازی پذیر و کسری از کد کاملاً سریال است. اجازه دهید کسری از کد موازی شده را فراخوانی کنیم، جایی که
عددی بین (و شامل) 0 و 1 است. این به طور خودکار به این معنی است که الگوریتم ما دارای کسری از کد سریال است که برابر است با
.
با توجه به زمان محاسبه،، برای
فرآیندهای فعال و شروع با پرونده
، می توانیم از نمایندگی استفاده کنیم
. هنگام دویدن
فرآیندها، بخش سریال کد تحت تأثیر قرار نمی گیرد، اما کد کاملاً موازی شده محاسبه می شود
بار سریعتر بنابراین، زمان محاسبه برای
فرآیندها است
، و افزایش سرعت است
.
قانون امدال
این عبارت در قلب قانون امدال قرار دارد . توطئهبرای مقادیر مختلف از
و
، اکنون چیز جالبی را در نمودار زیر می بینیم.
افزایش سرعت برای افزایش تعداد فرآیندها برای بخش های مختلف کد قابل موازی سازی.
برای کد 100٪ موازی، آسمان حد است. با این حال، ما آن را برای، حد مجانبی یا حداکثر سرعت تئوری است
.
برای یک کد موازی 95٪، ما آن را پیدا می کنیم– حداکثر سرعت بیست برابر، حتی اگر تعداد بی نهایت فرآیند داشته باشیم. علاوه بر این، ما داریم
،
، و
. حداکثر سرعت تئوری با کاهش کسر کد موازی شده به سرعت کاهش می یابد.
اما تسلیم نشوید و هنوز به خانه بروید!
گوستافسون-قانون معلمان
قانون آمدال یک چیز را در نظر نمی گیرد و آن این است که وقتی کامپیوتری سریعتر و بزرگتر می خریم تا بتوانیم فرآیندهای بیشتری را اجرا کنیم، معمولاً نمی خواهیم مدل های کوچک دیروز خود را سریعتر محاسبه کنیم. در عوض، ما می خواهیم مدل های جدید، بزرگتر (و سردتر) را محاسبه کنیم. این چیزی است که قانون گوستافسون-بارسیس در مورد آن است. این بر این فرض استوار است که اندازه مسئله ای که می خواهیم محاسبه کنیم به صورت خطی با تعداد فرآیندهای موجود افزایش می یابد.
قانون Amdahl فرض می کند که اندازه مشکل ثابت است. هنگام افزودن پردازندههای جدید، آنها روی بخشهایی از مشکل کار میکنند که در ابتدا توسط تعداد کمتری از فرآیندها حل شده است. با افزودن فرآیندهای بیشتر و بیشتر، از توانایی کامل فرآیندهای اضافه شده استفاده نمی کنید زیرا در نهایت اندازه چیزی که آنها می توانند روی آن کار کنند به حد کمتری می رسد. با این حال، با فرض اینکه اندازه مشکل با تعداد فرآیندهای اضافه شده افزایش مییابد، شما از تمام فرآیندها تا سطح فرضی استفاده میکنید و سرعت محاسبات انجامشده نامحدود باقی میماند.
معادله ای که این پدیده را توصیف می کندهمانطور که در نمودار زیر نشان داده شده است، نتیجه بسیار خوش بینانه تری را برای آنچه که سرعت مقیاس شده (که مانند بهره وری است) به ما می دهد:
وقتی در نظر بگیریم که اندازه کار معمولاً با تعداد فرآیندهای موجود افزایش مییابد، پیشبینیهای ما خوشبینانهتر است.
هزینه ارتباط
قانون گوستافسون-بارسیس بیانگر این است که ما فقط در اندازه مشکلی که میتوانیم با منابعی که برای اضافه کردن فرآیندها در اختیار داریم محاسبه کنیم، محدود شدهایم. با این حال، عوامل دیگری نیز وجود دارد که بر افزایش سرعت تأثیر می گذارد. چیزی که ما تاکنون در این مجموعه وبلاگ سعی کرده ایم بر آن تاکید کنیم این است که ارتباطات گران است. اما ما هنوز در مورد گرانی آن صحبت نکرده ایم، بنابراین بیایید به چند نمونه نگاه کنیم.
بیایید یک سربار را در نظر بگیریم که تحت تسلط ارتباطات و هماهنگ سازی مورد نیاز در پردازش موازی است، و آن را به عنوان زمان اضافه شده به زمان محاسبه مدل کنیم. این بدان معناست که با افزایش تعداد فرآیندها، میزان ارتباطات افزایش مییابد و این افزایش توسط یک تابع مدلسازی میشود.، جایی که
ثابت است و
برخی از عملکرد است. بنابراین، ما می توانیم سرعت را از طریق زیر محاسبه کنیم:
.
نمودار زیر حالتی را نشان می دهد که در آن کسر کد موازی شده 95٪ است و در آن می توانیم سرعت افزایش تعداد فرآیندها را برای عملکردهای مختلف مشاهده کنیم.، با فرض اینکه
= 0.005 (این ثابت بین مسائل و پلتفرم های مختلف متفاوت است). در مورد بدون سربار، نتیجه طبق قانون امدال پیش بینی شده است، اما وقتی شروع به اضافه کردن سربار می کنیم، می بینیم که اتفاقی در حال رخ دادن است.
برای افزایش خطی سربار، متوجه میشویم که قبل از شروع ارتباط، سرعت افزایش به مقدار بیشتر از پنج نمیرسد تا با افزایش قدرت محاسباتی اضافه شده توسط فرآیندهای بیشتر مقابله کند. برای یک تابع درجه دوم،، نتیجه حتی بدتر است و همانطور که ممکن است از پست وبلاگ قبلی ما در مورد محاسبات حافظه توزیع شده به یاد بیاورید ، افزایش ارتباطات در مورد ارتباطات همه به همه درجه دوم است.
افزایش سرعت با اضافه سربار. ثابت، c، 0.005 انتخاب شده است.
با توجه به این پدیده، ما نمیتوانیم انتظار داشته باشیم که برای مثال، یک مشکل کوچک وابسته به زمان هنگام اضافه کردن فرآیندهای بیشتر و بیشتر، در یک خوشه افزایش سرعت داشته باشیم. میزان ارتباطات سریعتر از هر سود حاصل از فرآیندهای اضافه شده افزایش می یابد. با این حال، در این مورد، ما فقط یک اندازه مشکل ثابت را در نظر گرفتهایم و با افزایش اندازه مشکل، اثر «کاهش سرعت» معرفیشده از طریق ارتباط کمتر مرتبط خواهد بود.
جاروهای دسته ای در COMSOL Multiphysics
اجازه دهید اکنون جنبه نظری را رها کنیم و یاد بگیریم که چگونه از ویژگی جابجایی دسته ای در COMSOL Multiphysics استفاده کنیم. به عنوان مدل نمونه خود، از لامپ بدون الکترود استفاده خواهیم کرد که در گالری مدل موجود است . این مدل کوچک است، در حدود 80000 درجه آزادی، اما برای حل خود به حدود 130 مرحله زمانی نیاز دارد. برای اینکه این مدل گذرا نیز پارامتری شود، مدل را برای چندین مقدار توان لامپ، یعنی 50 وات، 60 وات، 70 وات و 80 وات محاسبه خواهیم کرد.
در ایستگاه کاری من، یک Fujitsu® CELSIUS® مجهز به پردازنده چهار هستهای Intel® Xeon® E5-2643 و 16 گیگابایت رم، زمانهای محاسبه زیر دریافت میشود:
تعداد هسته ها | محاسبه زمان در هر پارامتر | محاسبه زمان برای جارو کردن |
---|---|---|
1 | 30 دقیقه | 120 دقیقه |
2 | 21 دقیقه | 82 دقیقه |
3 | 17 دقیقه | 68 دقیقه |
4 | 18 دقیقه | 72 دقیقه |
سرعت در اینجا بسیار عالی نیست – فقط 1.7 برای سه هسته و حتی برای چهار هسته کاهش یافته است. این به دلیل این واقعیت است که یک مدل کوچک با تعداد درجه آزادی کم در هر نخ در هر مرحله زمانی است.
ما اکنون از قابلیت جابجایی دسته ای برای موازی سازی این مشکل به روش دیگری استفاده خواهیم کرد: از موازی سازی داده ها به موازی کاری ها تغییر می کنیم . ما برای هر مقدار پارامتر یک کار دستهای ایجاد میکنیم و میبینیم که این کار با زمانهای محاسبه ما چه میکند. برای انجام این کار، ابتدا «گزینههای مطالعه پیشرفته» را فعال میکنیم، سپس روی «مطالعه ۱» کلیک راست کرده و «Batch Sweep» را انتخاب میکنیم، همانطور که در انیمیشن زیر نشان داده شده است:
نحوه فعال کردن Batch Sweep در یک مدل، شامل مقادیر پارامترها و تعیین تعداد کارهای همزمان.
نمودار زیر بهره وری یا “سرعت” را نشان می دهد که می توانیم با کنترل موازی سازی به دست آوریم. هنگام اجرای یک کار دسته ای با استفاده از چهار هسته، نتیجه را از بالا دریافت می کنیم: 72 دقیقه. هنگام تغییر پیکربندی به دو کار دسته ای به طور همزمان، هر کدام از دو هسته استفاده می کنند، می توانیم تمام پارامترها را در 48 دقیقه محاسبه کنیم. در نهایت، هنگام محاسبه چهار کار دسته ای به طور همزمان، هر کدام با استفاده از یک پردازنده، کل زمان محاسبه 34 دقیقه است. این به ترتیب 2.5 و 3.5 برابر سرعت می دهد – در مقایسه با موازی سازی از طریق استفاده از حافظه مشترک خالص به تنهایی، بسیار بهتر است.
شبیه سازی در روز برای مدل لامپ بدون الکترود “4×1” به این معنی است که چهار کار دسته ای به طور همزمان اجرا می شوند و هر کدام از یک هسته استفاده می کنند.
پایان دادن به سری مدلسازی ترکیبی
در طول این مجموعه وبلاگ ، ما در مورد محاسبات حافظه مشترک، توزیع شده، و ترکیبی و نقاط ضعف و قوت آنها و همچنین پتانسیل بزرگ محاسبات موازی یاد گرفتیم. ما همچنین آموخته ایم که چیزی به نام ناهار رایگان در مورد محاسبات وجود ندارد. ما نمیتوانیم فقط فرآیندها را اضافه کنیم و امیدوار باشیم که برای همه انواع مشکلات به سرعت بالا بیاوریم.
در عوض، ما باید بهترین راه را برای موازی کردن یک مسئله انتخاب کنیم تا بیشترین بازدهی را از سخت افزارمان به دست آوریم، دقیقاً مانند اینکه باید حل کننده صحیح را انتخاب کنیم تا بهترین زمان حل را هنگام حل یک مسئله عددی بدست آوریم.
انتخاب پیکربندی موازی مناسب همیشه آسان نیست، و میتوان از قبل دانستن اینکه چگونه باید محاسبات موازی خود را “هیبرید” کنید، دشوار باشد. اما مانند بسیاری موارد دیگر، تجربه از بازی کردن و آزمایش به دست می آید و با COMSOL Multiphysics، شما این امکان را دارید که این کار را انجام دهید. خودتان آن را با پیکربندی های مختلف و مدل های مختلف امتحان کنید، و به زودی خواهید فهمید که چگونه نرم افزار را تنظیم کنید تا بهترین عملکرد را از سخت افزار خود داشته باشید.
فوجیتسو یک علامت تجاری ثبت شده Fujitsu Limited در ایالات متحده و سایر کشورها است. CELSIUS یک علامت تجاری ثبت شده Fujitsu Technology Solutions در ایالات متحده و سایر کشورها است. Intel و Xeon علائم تجاری Intel Corporation در ایالات متحده و/یا سایر کشورها هستند.
- لینک دانلود به صورت پارت های 1 گیگابایتی در فایل های ZIP ارائه شده است.
- در صورتی که به هر دلیل موفق به دانلود فایل مورد نظر نشدید به ما اطلاع دهید.
برای مشاهده لینک دانلود لطفا وارد حساب کاربری خود شوید!
وارد شویدپسورد فایل : پسورد ندارد گزارش خرابی لینک
دیدگاهتان را بنویسید