پردازش موازی در متلب – برنامه نویسی هوشمند https://matlab24.ir مشاوره و مشارکت در پیاده سازی الگوریتم های هوش مصنوعی و پیاده سازی نرم افزار های هوشمند Thu, 04 Aug 2016 08:21:25 +0000 fa-IR hourly 1 https://wordpress.org/?v=6.3.4 https://matlab24.ir/wp-content/uploads/2014/08/matlab24-55x55.jpg پردازش موازی در متلب – برنامه نویسی هوشمند https://matlab24.ir 32 32 کد موازی الگوریتم دایکسترا Paralell DIJKSTRA https://matlab24.ir/%da%a9%d8%af-%d9%85%d9%88%d8%a7%d8%b2%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%d8%af%d8%a7%db%8c%da%a9%d8%b3%d8%aa%d8%b1%d8%a7-paralell-dijkstra/ https://matlab24.ir/%da%a9%d8%af-%d9%85%d9%88%d8%a7%d8%b2%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%d8%af%d8%a7%db%8c%da%a9%d8%b3%d8%aa%d8%b1%d8%a7-paralell-dijkstra/#comments Tue, 01 Sep 2015 09:11:36 +0000 http://matlab24.ir/?p=884 کد موازی  الگوریتم دایکسترا Paralell DIJKSTRA در نظریه گراف، الگوریتم دایکسترا یکی از الگوریتم‌های پیمایش گراف است که توسط دانشمند

نوشته کد موازی الگوریتم دایکسترا Paralell DIJKSTRA اولین بار در برنامه نویسی هوشمند پدیدار شد.

]]>
کد موازی  الگوریتم دایکسترا Paralell DIJKSTRA

در نظریه گراف، الگوریتم دایکسترا یکی از الگوریتم‌های پیمایش گراف است که توسط دانشمند هلندی ، اِدْسْخِر دایْکْسْترا در سال ۱۹۵۹ ارایه شد.

این الگوریتم یکی از الگوریتم‌های پیمایش گراف است که مسئلهٔ کوتاه‌ترین مسیر از مبدأ واحد را برای گراف‌های وزن‌داری که یال با وزن منفی ندارند، حل می‌کند و در نهایت با ایجاد درخت کوتاه‌ترین مسیر، کوتاه‌ترین مسیر از مبدأ به همهٔ رأس‌های گراف را به دست می‌دهد. همچنین می‌توان از این الگوریتم برای پیدا کردن کوتاه‌ترین مسیر از مبدأ تا رأس مقصد به این ترتیب بهره جست که در حین اجرای الگوریتم به محض پیداشدن کوتاه‌ترین مسیر از مبدأ به مقصد، الگوریتم را متوقف کرد.

کد موازی الگوریتم دایکسترا Paralell DIJKSTRA

کد موازی الگوریتم دایکسترا Paralell DIJKSTRA

الگوریتم دایکسترا یکی از الگوریتم‌های مورد استفاده برای محاسبه کوتاه ترین مسیر تک منبع (single-source shortest path) است و مشابه الگوریتم پریم می‌باشد در صورتی که گراف یال با وزن منفی داشته باشد، این الگوریتم درست کار نمی‌کند و می‌بایست از الگوریتم‌های دیگر نظیر الگوریتم بلمن-فورد که پیچیدگی زمانی آنها بیشتر است استفاده کنیم.

خط مشی الگوریتم دایکسترا، مشابه با روش حریصانهٔ استفاده شده در الگوریتم پریم برای پیدا کردن زیر درخت فراگیر بهینه است.

 

روند الگوریتم دایکسترا مطابق زیر می‌باشد:

۱- انتخاب راس مبدا

۲- مجموعهٔ S، شامل رئوس گراف، معین می‌شود. در شروع، این مجموعه تهی بوده و با پیشرفت الگوریتم، این مجموعه رئوسی که کوتاه ترین مسیر به آن‌ها یافت شده است را در بر می‌گیرد.

۳- راس مبدا با اندیس صفر را در داخل S قرار می‌دهد.

۴- برای رئوس خارج از S، اندیسی معادل، طول یال + اندیس راس قبلی، در نظر می‌گیرد. اگر راس خارج از مجموعه دارای اندیس باشد، اندیس جدید کمترین مقدار از بین اندیس قبلی و طول یال + اندیس راس قبل، می‌باشد.

۵- از رئوس خارج مجموعه، راسی با کمترین اندیس انتخاب شده و به مجموعهٔ S اضافه می‌گردد.

۶- این کار را دوباره از مرحلهٔ ۴ ادامه داده تا راس مقصد وارد مجموعهٔ S شود.

در پایان اگر راس مقصد دارای اندیس باشد، اندیس آن نشان دهندهٔ مسافت بین مبدا و مقصد می‌باشد. در غیر این صورت هیچ مسیری بین مبدا و مقصد موجود نمی‌باشد.

همچنین برای پیدا کردن مسیر می‌توان اندیس دیگری برای هر راس در نظر گرفت که نشان دهندهٔ راس قبلی در مسیر طی شده باشد. بدین ترتیب پس از پایان اجرای الگوریتم، با دنبال کردن رئوس قبلی از مقصد به مبدا، کوتاه ترین مسیر بین دو نقطه نیز یافت می‌شود.

 

ما در این کد الگوریتم دایکسترا را بصورت موازی در متلب آماده کرده ایم . این کد با استفاده از SPMD موازی سازی شده است. این کد کوتاهترین مسیر از راس مبدا تا همه رئوس دیگر را پیدا میکند.

 

 

این کد با استفاده از SPMD در متلب موازی سازی شده است.

روال موازی سازی به این صورت می باشد که با استفاده از ابزار matlabpool موازی سازی انجام میشود و برای انجام کار ابتدا راس های گراف بین worker ها تقسیم میشوند و سپس در یک حلقه تکرار مراحل کار انجام میشود در هر مرحله از تکرار حلقه، هر worker نزدیک ترین راس از بین راس های خود به راس مبدا (راس های متصل شده) را انتخاب میکند و سپس اطلاعات همه workerها به client فرستاده میشود و از بین رئوس انتخاب شده توسط workerها ، راسی که کمترین مسیر را داشته است انتخاب میشود و این روال تا افزوده شده همه راس ها به مجموعه جواب ادامه می یابد

جهت دریافت کد از بخش زیر اقدام کرده و بصورت آنلاین محصول را خریداری و دانلود کنید

 

[parspalpaiddownloads id=”108″] 

 

ایمیل :matlab24ir@gmail.com و یا info@matlab24.ir

شماره تماس: 09120563264

 

گراف در نظر گرفته شده شامل 6 گره و 8 یال می باشد که بصورت زیر یالها وصل شده است:

N0--15--N2-100--N3
      \      |     /
       \     |    /
        40  20  10
          \  |  /
           \ | /
            N1
            / \
           /   \
          6    25
         /       \
        /         \
      N5----8-----N4
و در نهایت کوتاهترین مسیر از گره 0 به همه گره های دیگر که بصورت زیر می باشد را نمایش میدهد:

From 0 to:  0    1    2    3    4    5
 Distance:   0   35   15   45   49   41

جهت دریافت کد از بخش زیر اقدام کرده و بصورت آنلاین محصول را خریداری و دانلود کنید

 

[parspalpaiddownloads id=”108″]

 

نوشته کد موازی الگوریتم دایکسترا Paralell DIJKSTRA اولین بار در برنامه نویسی هوشمند پدیدار شد.

]]>
https://matlab24.ir/%da%a9%d8%af-%d9%85%d9%88%d8%a7%d8%b2%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%d8%af%d8%a7%db%8c%da%a9%d8%b3%d8%aa%d8%b1%d8%a7-paralell-dijkstra/feed/ 4
کد موازی کلونی زنبور عسل paralell ABC https://matlab24.ir/%da%a9%d8%af-%d9%85%d9%88%d8%a7%d8%b2%db%8c-%da%a9%d9%84%d9%88%d9%86%db%8c-%d8%b2%d9%86%d8%a8%d9%88%d8%b1-%d8%b9%d8%b3%d9%84-paralell-abc/ https://matlab24.ir/%da%a9%d8%af-%d9%85%d9%88%d8%a7%d8%b2%db%8c-%da%a9%d9%84%d9%88%d9%86%db%8c-%d8%b2%d9%86%d8%a8%d9%88%d8%b1-%d8%b9%d8%b3%d9%84-paralell-abc/#comments Fri, 07 Aug 2015 15:39:56 +0000 http://matlab24.ir/?p=860 کد موازی کلونی زنبور عسل paralell ABC پیاده سازی الگوریتم زنبور عسل موازی بر طبق مقاله معتبر از ژورنال ieee

نوشته کد موازی کلونی زنبور عسل paralell ABC اولین بار در برنامه نویسی هوشمند پدیدار شد.

]]>
کد موازی کلونی زنبور عسل paralell ABC

پیاده سازی الگوریتم زنبور عسل موازی بر طبق مقاله معتبر از ژورنال ieee انجام گرفته است . برای مشاهده مقاله اینجا را کلیک کنید  یا از لینک زیر دانلود کنید:   دانلود مقاله موازی زنبور عسل

 

در این کار ما الگوریتم کلونی زنبور عسل را با استفاده از دستور spmd بصورت موازی پیاده سازی کرده ایم. کد نوشته شده در نرم افزار متلب می باشد

 

کد موازی کلونی زنبور عسل paralell ABC

کد موازی کلونی زنبور عسل paralell ABC

 

همانطور که میدانید یکی از راههای موزای سازی در متلب استفاده از spmd می باشد که اگر تولباکس Paralell Computing  نصب باشد میتوان از ان استفاده کرد. به این ترتیب میتوان با اعمال تغییراتی بر الگوریتم معمولی، ان الگوریتم را به حالت موازی با قابلیت اجرا بر روی چندین هسته تبدیل کرد.

 

جهت دریافت کد الگوریتم موازی کلونی زنبور عسل در متلب از بخش زیر اقدام کرده و بصورت آنلاین خریداری و دانلود کنید

 

[parspalpaiddownloads id=”96″]

 

بسته تحویل شده به شما شامل موارد زیر می باشد:

– کد الگوریتم ABC که بصورت سریال و غیر موازی به همراه توضیحات کد

– کد موزای الگوریتم ABC  با نام PABC

– به همراه داکیومنت که شامل روال موازی سازی الگوریتم و توضیحات کد نوشته شده می باشد.

شماره تماس : 09120563264

نوشته کد موازی کلونی زنبور عسل paralell ABC اولین بار در برنامه نویسی هوشمند پدیدار شد.

]]>
https://matlab24.ir/%da%a9%d8%af-%d9%85%d9%88%d8%a7%d8%b2%db%8c-%da%a9%d9%84%d9%88%d9%86%db%8c-%d8%b2%d9%86%d8%a8%d9%88%d8%b1-%d8%b9%d8%b3%d9%84-paralell-abc/feed/ 7
موازی سازی الگوریتم ژنتیک برای حل TSP https://matlab24.ir/%d9%85%d9%88%d8%a7%d8%b2%db%8c-%d8%b3%d8%a7%d8%b2%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%da%98%d9%86%d8%aa%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ad%d9%84-tsp/ https://matlab24.ir/%d9%85%d9%88%d8%a7%d8%b2%db%8c-%d8%b3%d8%a7%d8%b2%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%da%98%d9%86%d8%aa%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ad%d9%84-tsp/#respond Fri, 31 Jul 2015 09:01:24 +0000 http://matlab24.ir/?p=851 موازی سازی الگوریتم ژنتیک برای حل TSP   در این کار، روال کار الگوریتم ژنتیک را به نحوی تغییر داده

نوشته موازی سازی الگوریتم ژنتیک برای حل TSP اولین بار در برنامه نویسی هوشمند پدیدار شد.

]]>
موازی سازی الگوریتم ژنتیک برای حل TSP

موازی سازی الگوریتم ژنتیک برای حل TSP

موازی سازی الگوریتم ژنتیک برای حل TSP

 

در این کار، روال کار الگوریتم ژنتیک را به نحوی تغییر داده ایم که بتوانیم ان را با استفاده از matlabpool و یا استفاده از دستور parfor بصورت موازی اجرا کنیم

 

بخشی از داکیومنت پروژه:

ما روال برنامه را که بصورت زیر بود

1 – ساختن تصادفی جمعیت اولیه (Pop)

2- ارزیابی جمعیت اولیه (fit)

3- تا شرط توقف برقرار نشده مراحل زیر را انجام بده

4-انتخاب والدین (selection)

5- ترکیب (Crossover)

6- جهش (Mutation)

7-ارزیابی نسل جدید (fit)

به شکل زیر تغییر دادیم تا بصورت موازی با دستور parfor اجرا شود:

  • ساختن جمعیت اولیه تصادفی و ارزیابی ان
  • تاشرط توقف برقرار نشده مراحل زیر را انجام بده
  • والدین را انتخاب کن
  • عملگر ترکیب را انجام بده و جهش را اعمال کن و ارزیابی کن

 

جهت دریافت کد متلب الگوریتم ژنتیک موازی برای حل فروشنده دوره گرد از بخش زیر اقدام کنید و بصورت انلاین کد برنامه به همراه فایل توضیحات 13 صفحه ای کد را خریداری و دانلود نمایید

 

[parspalpaiddownloads id=”73″]

 

ایمیل ما :matlab24ir@gmail.com و یا info@matlab24.ir

 

نوشته موازی سازی الگوریتم ژنتیک برای حل TSP اولین بار در برنامه نویسی هوشمند پدیدار شد.

]]>
https://matlab24.ir/%d9%85%d9%88%d8%a7%d8%b2%db%8c-%d8%b3%d8%a7%d8%b2%db%8c-%d8%a7%d9%84%da%af%d9%88%d8%b1%db%8c%d8%aa%d9%85-%da%98%d9%86%d8%aa%db%8c%da%a9-%d8%a8%d8%b1%d8%a7%db%8c-%d8%ad%d9%84-tsp/feed/ 0
پردازش موازی (Parallel Computing) در متلب https://matlab24.ir/%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d8%b4-%d9%85%d9%88%d8%a7%d8%b2%db%8c-parallel-computing-%d8%af%d8%b1-%d9%85%d8%aa%d9%84%d8%a8/ https://matlab24.ir/%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d8%b4-%d9%85%d9%88%d8%a7%d8%b2%db%8c-parallel-computing-%d8%af%d8%b1-%d9%85%d8%aa%d9%84%d8%a8/#respond Tue, 19 Aug 2014 11:59:35 +0000 http://matlab24.ir/?p=116 پردازش موازی (Parallel Computing) در متلب : نرم افزار متلب، این امکان را به وجود آورده است که در کامپیوترهای

نوشته پردازش موازی (Parallel Computing) در متلب اولین بار در برنامه نویسی هوشمند پدیدار شد.

]]>
پردازش موازی (Parallel Computing) در متلب :

نرم افزار متلب، این امکان را به وجود آورده است که در کامپیوترهای دارای پردازنده (CPU) چند هسته ای، از پردازش موازی (Parallel Computing) استفاده نماییم. در این مبحث آموزشی، قصد داریم که نحوه نوشتن کدهای متلب، برای پردازش موازی کدها را شرح بدهیم.

اگر بخواهیم کدهای متلب مورد نظرمان، به صورت موازی پردازش شوند (Parallel Computing)، باید شکل کلی کدها به صورت زیر باشد :

 

matlabpool(‘open’,2);
% your code
matlabpool(‘close’);

که در آن، به جای عبارت % your code ، باید کدهای متلب مورد نظر خود را بنویسید. به عدد 2 که درون پرانتز اولین دستور matlabpool نوشته شده است، دقت کنید. این عدد، تعداد هسته هایی (cores) را مشخص کرده است که قصد دارید توسط آنها، کدها به صورت موازی پردازش شوند. بنابراین مثلا اگر کامپیوتر شما دارای پردازنده (CPU) چهار هسته ای است، شما باید، حداکثر، عدد 4 را به جای آن بنویسید.

همچنین توجه داشته باشید که شما می توانید تعیین کنید که همه کدها یا یک یا چند بخش دلخواه از کدهای برنامه متلب خود را، به صورت موازی، پردازش نمایید، بنابراین تنها کافی است که آن بخش های مورد نظرتان از کدها را در میان دو عبارتی که در بالا به کار بردیم، قرار بدهید.

به مثال زیر توجه کنید :

مثال :

در ابتدا کدی را به صورت معمولی (بدون پردازش موازی) می نویسیم و سپس همان را با پردازش موازی اجرا می کنیم و همچنین زمان اجرای دستورات را هم با دو دستور tic و toc محاسبه می کنیم تا ببینیم که پردازش موازی، تا چه حد در سریعتر اجرا شدن کدهای برنامه، تاثیر دارد.

برنامه ای شامل دو حلقه for متوالی می نویسیم، البته به صورت معمولی و بدون استفاده از پردازش موازی :

 

clear all
close all
clc

tic
x=0;
for nn=1:1000
x=nn^5;
end
x

y=0;
for mm=1:1000
y=mm^5;
end
y
toc

نتیجه :

 

x =

1.0000e+015

y =

1.0000e+015

Elapsed time is 0.005328 seconds.

مشاهده می کنید که زمان پردازش دو حلقه for ، برابر 0.005328 ثانیه بوده است.

حالا این بار، از پردازش موازی استفاده می کنیم تا ببینیم تا چه حد، زمان پردازش کدها کاهش می یابد (البته شروع و پایان خود پردازش موازی، چند ثانیه ای طول می کشد، ولی این میزان، برای برنامه های بزرگ که مد نظر اکثر کاربران است، بسیار ناچیز می باشد) :

 

clear all
close all
clc

matlabpool(‘open’,2); % start of Parallel Computing
tic

x=0;
for nn=1:1000
x=nn^5;
end
x

y=0;
for mm=1:1000
y=mm^5;
end
y

toc
matlabpool(‘close’); % end of Parallel Computing

نتیجه :

 

Starting matlabpool using the ‘local’ configuration connected to 2 labs.

x =

1.0000e+015

y =

1.0000e+015

Elapsed time is 0.002837 seconds.
Sending a stop signal to all the labs stopped.

این بار، زمان پردازش دو حلقه for ، برابر با 0.002837 ثانیه شده است که از عدد قبلی (پردازش معمولی، پردازش سری)، کمتر است (تقریبا نصف).

نکته :

دقت کنید که در مثال بالا، تنها دو حلقه for ، به طور موازی با هم اجرا می شوند، اما کدهای درون هر حلقه for ، به طور موازی اجرا نخواهند شد (منظور این است که مثلا اگر حلقه for دارای پارامتری از 1 تا 1000 است، این 1000 بار اجرا شدن حلقه، به صورت موازی نخواهد بود، بلکه به صورت پشت سرهم و سری است).

اما شاید بخواهیم که دستورات درون حلقه for نیز به صورت موازی اجرا گردند، برای این منظور، دستور parfor در متلب در نظر گرفته شده است. دقت کنید که برای استفاده از این دستور، باید هر گام (مرحله) از اجرای حلقه، از دیگر گام ها (مراحل)، مستقل باشد. مثلا اگر در همان مثال قبل، دستورات for را به parfor تبدیل کنیم، جوابی غیر منتظره خواهیم گرفت، زیرا در هر گام (مرحله)، مقدار جدیدی برای متغیر x یا y در نظر گرفته می شود، بنابراین یک متغیر، در گام های مختلف اجرای حلقه، مقادیر متفاوت خواهد داشت، بنابراین گام ها از هم مستقل نیستند. پس نباید برای آن، پردازش موازی به کار ببریم.

برای درک بهتر این موضوع، به مثال زیر توجه کنید :

مثال :

در همان مثال قبل، به جای دستور for ، از دستور parfor استفاده می کنیم :

 

clear all
close all
clc

matlabpool(‘open’,2); % start of Parallel Computing
tic

x=0;
parfor nn=1:1000
x=nn^5;
end
x

y=0;
parfor mm=1:1000
y=mm^5;
end
y

toc
matlabpool(‘close’); % end of Parallel Computing

نتیجه :

 

Starting matlabpool using the ‘local’ configuration connected to 2 labs.

x =

0

y =

0

Elapsed time is 0.594762 seconds.
Sending a stop signal to all the labs stopped.

مطمئنا انتظار چنین پاسخی را نداشتید. این پاسخ به این دلیل است که گام های اجرای حلقه، از یکدیگر مستقل نمی باشند.

اکنون، مثالی را برای parfor می نویسیم که گام های حلقه، از هم مستقل باشند (تعداد گام ها را کمتر کردیم تا نتیجه راحتتر قابل نمایش باشد) :

مثال :

 

clear all
close all
clc

matlabpool(‘open’,2); % start of Parallel Computing
tic

x=zeros(1,10);
parfor nn=1:10
x(1,nn)=nn^5;
end
x

y=zeros(1,10);
parfor mm=1:10
y(1,mm)=mm^5;
end
y

toc
matlabpool(‘close’); % end of Parallel Computing

نتیجه :

 

Starting matlabpool using the ‘local’ configuration connected to 2 labs.

x =

Columns 1 through 7

1          32         243        1024        3125        7776       16807

Columns 8 through 10

32768       59049      100000

y =

Columns 1 through 7

1          32         243        1024        3125        7776       16807

Columns 8 through 10

32768       59049      100000

Elapsed time is 0.676398 seconds.
Sending a stop signal to all the labs stopped.

همین نتیجه را انتظار داشتیم. در این مثال، x و y ، هر کدام دارای 10 عنصر هستند، بنابراین، مثلا اگر دستورات حلقه x ، به صورت موازی اجرا گردند، 10 گام آن، در هم تداخل ندارند، زیرا هر بار، یک عنصر متفاوت از x ، مقداردهی می شود (هیچ دو گامی نیست که در آنها، یک عنصر مشترک، مقداردهی شود).

نکته :

یک سوال مهم، این است که آیا اگر یک تابع را به صورت m-file تعریف کنیم و سپس در یک برنامه متلب، دو بار به آن ارجاع دهیم و برنامه به صورت موازی اجرا شود، آیا عملکرد برنامه صحیح خواهد بود ؟

حال پاسخ این سوال را، با یک مثال، برای شما روشن خواهم کرد :

ابتدا یک تابع با نام my_function می سازیم (تابع به صورت m-file)، که کدهای آن به صورت زیر می باشد :

 

function [x] = my_function(x)
parfor nn=1:10
x(1,nn)=nn^5;
end

این کدها را درون یک m-file نوشته ایم و سپس آن را با نام my_function ذخیره نموده ایم. همچنین فایل این تابع و فایل برنامه ای که خواهیم نوشت، باید هر دو درون یک فولدر قرار داشته باشند (یا مسیر هر دو فایل را به مسیر های نرم افزار متلب اضافه کنیم).

 

سپس یک برنامه متلب می نویسم که در آن، دو بار به تابع my_function ، ارجاع داده شده است :

 

clear all
close all
clc

matlabpool(‘open’,2); % start of Parallel Computing
tic

x=zeros(1,10);
x=my_function(x)

y=zeros(1,10);
y=my_function(y)

toc
matlabpool(‘close’); % end of Parallel Computing

نتیجه :

 

Starting matlabpool using the ‘local’ configuration connected to 2 labs.

x =

Columns 1 through 7

1          32         243        1024        3125        7776       16807

Columns 8 through 10

32768       59049      100000

y =

Columns 1 through 7

1          32         243        1024        3125        7776       16807

Columns 8 through 10

32768       59049      100000

Elapsed time is 0.524047 seconds.
Sending a stop signal to all the labs stopped.

مشاهده می کنید که نتایج صحیح است (البته این پاسخ کلی برای پرسش مورد نظر ما است، اما امکان دارد که کاربر به گونه ای کدهای تابع را بنویسد که تداخل به وجود بیاید، مفهوم تداخل را قبلا برایتان شرح دادم، بنابراین همیشه چک کنید که آیا مراحل عملیات های مختلف، با هم تداخل دارند یا خیر).

بنابراین، پاسخ کلی، هم ((بله)) است و هم ((نه)). یعنی اینکه، اگر کدهای نوشته شده در تابع، تداخل در فرآیند موازی بودن، ایجاد نکنند، مشکلی وجود ندارد (مثل مثال ساده بالا که از کدهای تابع، معلوم است که تداخل ایجاد نمی کند) و اگر کدها، تداخل به وجود بیاورند، نتیجه ای غیرمنتظره، به دست می آید. پس همیشه، مستقل بودن پردازش ها را بررسی کنید.

برای آنکه خیالتان راحت شود، ابتدا کدها را به صورت سری اجرا کنید و بعد یک بار به طور موازی و نتیجه ها را مقایسه کنید. نگویید که خوب اینکه شد دو بار اجرا ! ، خود من برای شبیه سازی انتشار امواج الکترومغناطیسی، مجبور بودم که یک برنامه سنگین بنویسم و بعد آن را صدها بار اجرا نمایم و حالت های مختلف ناشی از ورودی های مختلف را مقایسه کنم، بنابراین تنها کافی بود که دو بار برنامه را تست کنم و بعد صدها بار، از برنامه بهینه شده استفاده نمایم، پروژه تعداد زیادی از دانشجویان نیز اینگونه می باشد و در این موارد، این دو بار اجرا کردن، ارزش صرف وقت را دارد.

نوشته پردازش موازی (Parallel Computing) در متلب اولین بار در برنامه نویسی هوشمند پدیدار شد.

]]>
https://matlab24.ir/%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d8%b4-%d9%85%d9%88%d8%a7%d8%b2%db%8c-parallel-computing-%d8%af%d8%b1-%d9%85%d8%aa%d9%84%d8%a8/feed/ 0
کد متلب خوشه بندی بصورت موازی Parallel Computing https://matlab24.ir/%da%a9%d8%af-%d9%85%d8%aa%d9%84%d8%a8-%d8%ae%d9%88%d8%b4%d9%87-%d8%a8%d9%86%d8%af%db%8c-%d8%a8%d8%b5%d9%88%d8%b1%d8%aa-%d9%85%d9%88%d8%a7%d8%b2%db%8c-parallel-computing/ https://matlab24.ir/%da%a9%d8%af-%d9%85%d8%aa%d9%84%d8%a8-%d8%ae%d9%88%d8%b4%d9%87-%d8%a8%d9%86%d8%af%db%8c-%d8%a8%d8%b5%d9%88%d8%b1%d8%aa-%d9%85%d9%88%d8%a7%d8%b2%db%8c-parallel-computing/#comments Tue, 19 Aug 2014 12:36:47 +0000 http://localhost:8080/matlab24/?p=45 کد متلب خوشه بندی بصورت موازی Parallel Computing   در این کد ما روش خوشه بندی کامینز Kmeans را بصورت

نوشته کد متلب خوشه بندی بصورت موازی Parallel Computing اولین بار در برنامه نویسی هوشمند پدیدار شد.

]]>
کد متلب خوشه بندی بصورت موازی Parallel Computing

 

در این کد ما روش خوشه بندی کامینز Kmeans را بصورت موازی یا paralell پیاده سازی کرده ایم و از ان برای سگمت کردن تصویر استفاده کرده ایم

همانطور که میدانید برای اینکه یک کد را بصورت موازی در متلب اجرا کنید باید کد را بصورتی بنویسید که امکان اجزای موازی ان وجود داشته باشد و دستوراتی که در حلقه parfor برای اجرای موازی قرار میگیرند باید مستقل از اندیس حلقه باشند یعنی یک کد درون حلقه به تکرارهای قبلی یا بعدی حلقه وابسته نباشد

کد متلب خوشه بندی بصورت موازی Parallel Computing

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

برای موازی کردن کد از مقاله با نام ‘Parallel Implementation of K-Means on Multi-Core Processors’

استفاده کرده ایم

همچنین برای پیاده سازی در متلب از تولباکس Paralell Computing و درستورات matlabpool و parfor استفاده کرده ایم

در پایان کد ما همچنین زمان های اجرا را مقایسه کرده ایم

زمان اجرای کد بصورت معمولی 75 ثانیه و زمان اجرای موازی کد 25 ثانیه می باشد

 

جهت دریافت کد متلب الگوريتم سگمنت کردن تصویر با الگوریتم K- Meansبصورت موازی از لینک زیر بصورت انلاین اقدام به خرید فرمایید

به همراه کد یک فایل توضیحات کد نیز برای شما ارسال خواهد شد

[parspalpaiddownloads id=”50″]

ایمیل : matlab24ir@gmail.com و یا info@matlab24.ir

شماره تماس : 09120563264

نوشته کد متلب خوشه بندی بصورت موازی Parallel Computing اولین بار در برنامه نویسی هوشمند پدیدار شد.

]]>
https://matlab24.ir/%da%a9%d8%af-%d9%85%d8%aa%d9%84%d8%a8-%d8%ae%d9%88%d8%b4%d9%87-%d8%a8%d9%86%d8%af%db%8c-%d8%a8%d8%b5%d9%88%d8%b1%d8%aa-%d9%85%d9%88%d8%a7%d8%b2%db%8c-parallel-computing/feed/ 1