الگوریتم های موازی در متلب
۱ -برنامه نویسی موازی چیست؟
بطور معمول برنامه ها بصورت سریال نوشته میشوند. بگونه ای که یک وظیفه بعد از اتمام وظیفه دیگر اجرا شده و اینکار تا زمانیکه کل کد خاتمه مییابد، ادامه دارد. نکته اینجاست که در حالت در هر بار فقط یک وظیفه اجرا میشود. با توجه به این تعریف، استفاده از واحدهای پردازش چندتایی برای حل یک مسئله در یک زمان بمعنی محاسبات موازی میباشد. بطورساده محاسبات موازی بمعنی استفاده همزمان از منابع محاسباتی متعدد برای حل مسئله میباشد. برای اینکار مسئله به قسمت های جداگانه ای شکسته شده که میتوانند بصورت همزمان اجرا شوند. در ادامه هر قسمت به یک سری از دستورات شکسته شده و این دستورات روی CPU های متفاوت اجرا میگردند.
۲ -برنامه نویسی موازی در مطلب:
برنامه موازی در مطلب (Matlab Parallel (یک توسعه در نرم افزار مطلب میباشد که از فواید کامپیوترهای چندهسته ای و سیستم های توزیع شده بدرستی بهره برده است. ابزار برنامه محاسبات موازی (Toolbox Computing Parallel یا PCT (روی یک سیستم desktop اجرا شده و میتواند باتوجه به مشخصات سخت افزاری سیستم تا ۸ یا ۱۲ هسته را زیربار ببرد.
کاربر میتواند از سه طریق زیر برنامه را بصورت موازی اجرا نماید:
- دستوراتی را تایپ نماید که به صورت موازی اجرا شوند.
- یک file-M فایلی را فراخوانی کند که بصورت موازی اجرا شود.
- یک file-M فایل را برای اجرا به batch ارسال نماید. (نکته اینکه در این حالت اجرا بصورت برهم کنش interactive نخواهد بود و در پس زمینه background اجرا میشود).
سرور محاسبات توزیع شده (Server Computing Distributed (اجراهای موازی را در مطلب روی یک Cluster با ده ها یا صدها هسته کنترل میکند. با استفاده از یک cluster که مطلب را بصورت موازی اجرا میکند. کاربر قابلیت های زیر را دارد.
۱ .یک file-M فایل را از یک کامپیوتر Desktop برای اجرا روی Cluster ارسال نماید.
۲ .به سیستم cluster وارد شده و بصورت برهم کنشی interactive برنامه خود را اجرا نماید.
۳ .به سیستم cluster وارد شده و file-M فایل را برای اجرا با batch ارسال نماید. انتخاب های ۱ و ۳ به کاربر این اجازه را میدهد که از نرم افزار در سیستم desktop خود و یا cluster خارج شده و در زمان دیگری برای بررسی پایان یافتن محاسبات بازگردد.
برای مثال cluster آزمایشگاه تخصصی اجازه اجرای همزمان برنامه موازی مطلب را روی ۹۶ هسته پردازنده میدهد. روش های اجرای یک برنامه موازی مطلب به شرح زیر میباشد:
- استفاده از matlabpool که بصورت برهم کنش محلی local interactiveمیباشد و برای سیستم های desktop مناسب است.
- استفاده از batch یا createTask بصورت محلی غیرمستقیم local indirectمیباشد.
- استفاده از batch یا createTask بصورت غیرمحلی غیرمستقیم remote indirectمیباشد.
و نیازمند راه اندازی میباشد. یک clusterمیتواند وظیفه های موازی مطلب را که از desktop های کاربران ارسال میشود، میپذیرد. و نتایج را زمانی که اجرای وظیفه تمام شود، بازمیگرداند. برای اجرای این حالت بایستی یک بار سیستم کاربر تنظیم شده که بداند چگونه با یک cluster ارتباط برقرار کند و اینکه بداند چگونه با آن نسخه کپی از نرم افزار مطلب روی cluster متصل شود.
از جمله راه های نوشتن یک برنامه موازی در مطلب میتوان به موارد زیر اشاره کرد: شوند.
دستور parfor یک روش ساده از ساختن حلقه های For برای اجرای موازی میباشد و همانند
OpenMP حلقه Parfor: حلقه های for که بصورت مناسب طراحی شده باشند میتوانند به حلقه های parfor تبدیل عمل مینماید.
دستور spmd : این دستور همکاری پروسس ها را همگام سازی (synchronize (مینماید. (این دستور در مطلب ورژن ۲۰۱۱ و بعد از در نرم افزار مطلب قرار داده شده است.)دستور spmd به کاربر اجازه میدهد تقریبا هر مدل محاسباتی موازی را طراحی کند. این ابزار برای اجرای موازی بسیار قوی میباشد، اما نیازمند این است که روال اجرای برنامه و داده ها بطور مناسب طراحی گردد. مطلب در Parallel Computing Toolbox ابزار: Graphic Process Unit (GPU) از استفاده GPUArray را ارائه مینماید. GPUArray یک آرایه خاص با توابع زیادی میباشد که اجازه میدهد اجرای محاسبات بر روی GPU NVIDIA enabled-CUDA مستقیما از طریق مطلب اجرا شود.
۲-۱-۱ -مثالی از نحوه استفاده از حلقه parfor بجای حلقه for :
function q=quad_fun(n,a,b)
q=0.0;
w=(b-a)/n;
for i=1:n
x=((n-i)*a+(i-1)*b)/(n-1);
fx=bessely(4.5,x);
q=q+w*fx;
end
return
end
تابع fun_quad انتگرال یک تابع خاص را در بازه [b,a [تخمین میزند. این تابع تخمین را با ارزیابی تابع در n فاصله برابر، با استفاده از ضرب هر مقدار در وزن n)/a-b (انجام میدهد. این مقادیر کمیمیتواند بعنوان مساحت مستطیل های کوچک که در زیر منحنی ها قرار دارند، در نظر گرفته شوند. و مجموع آنها یک تخمین برای کل مساحت زیر منحنی از a به b میباشد. ما میتوانیم این ریزمساحت ها رابه هر ترتیبی حساب کنیم. ما حتی میتوانیم این ریزمساحت ها را بصورت همزمان (b,a,n(fun_quad=q function محاسبه کنیم. فرض کنید روش هایی برای ذخیره نتایج جزئی و جمع آنها با یکدیگر به روش سازمان دهی شده، وجود دارد.
q=0.0;
w=(b-a)/n;
parfor i=1:n
x=((n-i)*a+(i-1)*b)/(n-1);
fx=bessely(4.5,x);
q=q+w*fx;
end
return
end
تهینه کنندگان:
حجت باقرزاده ، حمیدرضا پوررضا . زمستان ۹۲ دانشگاه فردوسی مشهد
دیگر پروژه ها:
مثالی از استخراج رنگ ها از تصاویر با پردازش موازی (mapreduce) در متلب
مجموعه: آموزش دستورات متلببرچسب ها الگوریتم های موازی, الگوریتم های موازی با شبیه ساز متلب, الگوریتم های موازی در متلب, حجت باقرزاده الگوریتم موازی, حل چند مثال الگوریتم های موازی, حمیدرضا پوررضا, حمیدرضا پوررضا الگوریتم موازی, خرید پروژه های الگوریتم های موازی, سفارش پروژه های الگوریتم های موازی, شبیه سازی الگوریتم های موازی, کاربد های الگوریتم های موازی, کاربرد الگوریتم های موازی, مثال های الگوریتم های موازی

