loading...

انجام پروژه متلب

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

 

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

 

بررسی اجمالی

در این پست، ما ابتدا اصول اولیه استفاده از GPU با MATLAB را بیان و سپس به سمت حل معادله موج مرتبه 2 با استفاده از این قابلیت GPU حرکت می کنیم. از آنجا که نسخه ی نمایشی ساخته شده بود، توابع GPU موجود در MATLAB افزایش یافته است.قابلیت GPU نشان داده شده در این پست به جعبه ابزار محاسبات موازی (Parallel Computing Toolbox) احتیاج دارد.

سابقه و هدف GPU

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

یک قاعده سرانگشتی مناسب این است که مسئله شما ممکن است برای GPU مناسب باشد، اگر چنین باشد:

Massively parallel: محاسبات می تواند به صدها یا هزاران واحدهای مستقل از هم شکسته شود. شما بهترین کارایی را زمانی خواهید دید که همه هسته ها به کار گرفته شده اند (بهره گیری از خاصیت موازی بودن ذاتی GPU). به ظاهر ساده، محاسبات vectorized MATLAB روی آرایه با صدها هزار عنصر را اغلب می توان در این دسته جا داد.

Computationally intensive (محاسباتی فشرده): زمان صرف شده در محاسبات به طور قابل توجهی بیش از زمان صرف شده در انتقال اطلاعات به (از) حافظه GPU است. از آنجا که پردازنده گرافیکی (GPU) از طریق باس PCI Express به پردازنده میزبان (Host CPU) متصل شده، دسترسی به حافظه کندتر از CPU قدیمی است. این به این معنی است که به طور کلی افزایش سرعت محاسباتی با میزان انتقال داده ها محدود شده است که در الگوریتم شما جای می گیرد.

برنامه های کاربردی که این معیارها را ایفا نمی کنند ممکن است در عمل  بر روی یک GPU نسبت به یک CPU کندتر اجرا شوند.

 

 

 

آنچه ما در مورد GPU یاد می گیریم

با این زمینه، ما اکنون می توانیم کار با GPU در MATLAB را شروع کنیم.اجازه دهید با بررسی GPU مورد نظرمان تنها برای مشاهده آنچه با آن کار می کنیم، شروع کنیم:

gpuDevice

ans =

parallel.gpu.CUDADevice handle

Package: parallel.gpu

Properties:

Name: 'Tesla C2050 / C2070'

Index: 1

ComputeCapability: '2.0'

SupportsDouble: 1

DriverVersion: 4

MaxThreadsPerBlock: 1024

MaxShmemPerBlock: 49152

MaxThreadBlockSize: [1024 1024 64]

MaxGridSize: [65535 65535]

SIMDWidth: 32

TotalMemory: 3.1820e+009

FreeMemory: 2.6005e+009

MultiprocessorCount: 14

ClockRateKHz: 1147000

ComputeMode: 'Default'

GPUOverlapsTransfers: 1

KernelExecutionTimeout: 1

CanMapHostMemory: 1

DeviceSupported: 1

DeviceSelected: 1

ما یک Tesla C2050 را دنبال می کنیم.در حال حاضر، جعبه ابزار محاسبات موازی(Parallel Computing Toolbox) از GPUهای NVDIA با قابلیت محاسبه 1.3 یا بالاتر پشتیبانی می کند.

یک مثال ساده با استفاده از توابع غیرمنتظره (Overloaded Functions)

بیش از 100 نوع عملیات (به عنوان مثال FFT، IFFFT، EIG) در حال حاضر به عنوان توابع ساخته شده در MATLAB در دسترس هستند که می توانند به طور مستقیم بر روی پردازنده گرافیکی (GPU) با ارائه یک آرگومان ورودی از نوع آرایه GPU  اجرا شوند. این توابع فعال GPU یعنی (GPU-enabled functions) غیرمنتظره (overload) هستند، به عبارت دیگر، آنها متمایز از وابستگی به نوع داده آرگومان های داده شده به آنها عمل می کنند.

اجازه دهید یک آرایه GPU ایجاد و با استفاده از GPU یک FFT را اجرا کنیم.با این حال، اجازه دهید ابتدا این کار را بر روی CPU انجام دهیم تا بتوانیم تفاوت در کد و عملکرد را ببینیم:

A1 = rand(3000,3000);

tic;

B1 = fft(A1);

time1 = toc;

برای انجام عملیات مشابه بر روی GPU، ما ابتدا gpuArray را برای انتقال داده ها از فضای کاری MATLAB را به حافظه دستگاه به کار می بریم. سپس می توانیم FFT را اجرا کنیم که یکی از توابع غیرمنتظره روی آن داده است:

A2 = gpuArray(A1);

tic;

B2 = fft(A2);

time2 = toc;

 

مورد دوم بر روی GPU و نه روی CPU اجرا شده است چون ورودی اش (GPUArray) بر روی GPU قرار دارد. در نتیجه، B2، بر روی پردازنده گرافیکی (GPU) ذخیره شده است. با این حال، آن است که هنوز در فضای کاری MATLAB قابل مشاهده است. با اجرای کلاس (B2) ما می توانیم ببینیم که آن نیز یک GPUArray است.

class(B2)

 

ans =

parallel.gpu.GPUArray

 

برای آوردن اطلاعات به CPU، ما gather را اجرا می کنیم

 

B2 = gather(B2);

class(B2)

 

ans =

double

 

B2 در حال حاضر بر روی CPU است و یک کلاس از double دارد.

 

افزایش سرعت کارکرد برای مثال ساده ما

در این مثال ساده، ما می توانیم افزایش سرعت  اجرای FFT بر روی داده های خود را محاسبه کنیم.

speedUp = time1/time2;

disp(speedUp)

3.6122

 

به نظر می رسد مانند FFT ما روی پردازنده گرافیکی تقریبآ 3.5 برابر سریعتر در حال اجرا است  این بسیار خوب است، به ومخصوصآ چون FFT در هسته MATLAB چند رشته (multi-threaded) است. با این حال، برای انجام یک مقایسه واقعی، ما واقعا باید زمان صرف انتقال بردار به (و از) GPU را در نظر بگبریم. اگر ما این کار را انجام دهیم، پی می بریم که شتاب ما تا حد زیادی کاهش می یابد. بیایید ببینیم که اگر ما زمان را برای انجام انتقال داده هایمان در نظر بگیریم، چه اتفاقی می افتد.

 

tic;

A3 = gpuArray(A1);

B3 = fft(A3);

B3 = gather(B3);

time3 = toc;

 

speedUp = time1/time3;

disp(speedUp)

 

0.5676

 

درک و محدود کردن انتقال سرجمع (Overhead) داده های شما

انتقال سرجمع داده (Data transfer overhead) می تواند خیلی مهم باشد چون اجرای کلی برنامه کاربردی را تنزل می دهد، به خصوص اگر شما بارها و بارها بین CPU و GPU برای اجرای تعداد نسبتآ کمی عملیات محاسباتی فشرده تبادل داده کنید. با این حال همه امید از دست نرفته است! با محدود کردن انتقال اطلاعات بین GPU و CPU، ما هنوز هم می توانیم به سرعت کارکرد بالا دست یابیم.

 

به جای ایجاد داده ها در CPU و انتقال آن به GPU، ما می توانیم مستقیمآ بر روی GPU داده را ایجاد کنیم. بیایید ببینید که  اثرات زمان ما چگونه است. برای دقیق بودن، ما همچنین باید کد اصلی سریال از جمله زمان لازم برای تولید ماتریس تصادفی بر روی پردازنده retime کنیم.

 

tic;

A4 = rand(3000,3000);

B4 = fft(A4);

time4 = toc;

 

tic;

A5 = parallel.gpu.GPUArray.rand(3000,3000);

B5 = fft(A5);

B5 = gather(B5);

time5 = toc;

 

speedUp = time4/time5;

disp(speedUp);

 

 

1.4100

 

این بهتر است، اگر چه ما هنوز هم نفوذ جمع آوری داده ها از پردازنده گرافیکی را می ببینیم. در این نسخه ی نمایشی ساده، اثر اغراق آمیز است زیرا ما در حال اجرای عملیات سریع در GPU هستیم. این برای انجام عملیات مختلف بر روی داده ها تا زمانی که بر روی GPU باشد و آوردن اطلاعات CPU تنها زمانی که مورد نیاز است، کار آمدتر است.

 

حل معادله موج

 

در مثال بالا برای قرار دادن متن، اجازه دهید از قابلیت یکسان GPU در "دنیای واقعی" مسئله استفاده کنیم. برای این کار، ما می خواهیم برای حل معادله موج مرتبه دوم:

 

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

تغییر کد برای اجرای الگوریتم بر روی GPU

در هنگام شتاب الگوریتم ما، ما روی بالا بردن سرعت کد در مدت زمان اصلی پله while-loop تمرکز می کنیم. عملیات در  بخشی از کد (به عنوان مثال FFT و ifft، ضرب ماتریس) همگی توابع غیرمنتظریه (overloaded functions)  هستند که با GPU کار می کنند. در نتیجه، ما نیازی به تغییر الگوریتم در هر راه برای اجرا بر روی GPU نداریم. ما به سادگی انتقال داده ها را به GPU و به CPU زمانی که به پایان رسید، می رسیم.

به دلیل طولانی شدن متن، ادامه ی مقاله در پست بعدی درج خواهد شد...

,pareto front,particle swarm optimization,partitioning clustering methods,path planning,pattern mining,pattern recognition,pca,pca غیر خطی,pesa,pesa-ii,pid,pid controller,pid controler in matlab,pid controler in متلب,pid controler in مطلب,point detection,pole assignment,popup menu,portfolio management,portfolio optimization,principal component analysis,project scheduling,property,pso,pso استاندارد پیوسته,pso چند هدفه,pso گسسته باینری,pso traveling salesman problem,pso travelling salesman problem,qap,quadprog,quadratic assignment problem,radial basis function,rbf,rcpsp,reference type,register transfer logic,regression,regular expressions,regularized filtering,reliability,resource allocation,response surface method,rsm,rtl,rule mining,sce-ua,scheduling,scm,self-organizing maps,sfla,sfla استاندارد,shufflee,shuffled frog leaping algorithmm,signal processing

ارسال نظر برای این مطلب

نام
ایمیل (منتشر نمی‌شود) (لازم)
وبسایت
:) :( ;) :D ;)) :X :? :P :* =(( :O @};- :B /:) :S
نظر خصوصی
مشخصات شما ذخیره شود ؟ [حذف مشخصات] [شکلک ها]
کد امنیتیرفرش کد امنیتی
دسته بندی موضوعات
  • خانه متلب
  • فیلم های آموزشی رایگان
  • دانلود رایگان کدهای متلب
  • دانلود پروژه های متلب
  • انجام پروژه متلب
  • تدریس خصوصی و دوره های آموزشی
  • دانلود جزوه کتاب پایان نامه
  • آموزش برنامه نویسی متلب
  • آموزش الگوریتم های فراابتکاری
  • آموزش شبکه عصبی
  • آموزش منطق فازی
  • آموزش داده کاوی
  • آموزش مهندسی صنایع و مدیریت
  • آموزش مهندسی برق و کامپیوتر
  • اموزش مهندسی مکانیک و عمران
  • آموزش هوش مصنوعی
  • آموزش پردازش تصویر
  • آموزش تصمیم گیری چند معیاره
  • دانلود پروژه های مهندسی صنایع
  • دانلود پروژه های بهینه سازی
  • دانلود پروژه های الگوریتم های فراابتکاری
  • دانلود پروژه های تصمیم گیری چند معیاره
  • الگوریتم ژنتیک
  • الگوریتم فاخته
  • الگوریتم خفاش
  • الگوریتم هارمونی
  • الگوریتم کرم شبتاب
  • الگوریتم تکامل تفاضلی
  • الگوریتم قورباغه
  • الگوریتم زنبور
  • الگوریتم کلونی زنبور
  • الگوریتم مورچگان
  • الگوریتم تبرید
  • الگوریتم پرندگان
  • الگوریتم رقابت استعماری
  • برنامه ریزی تولید
  • زمانبندی
  • پوشش
  • مسیریابی وسیله نقلیه
  • نرم افزار های مهندسی صنایع
  • زنجیره تامین
  • توالی عملیات
  • مدیریت پروژه
  • مسیریابی
  • مکان یابی
  • AHP
  • SAW
  • VIKOR
  • TOPSIS
  • permutation
  • entropy
  • nonlinear
  • spline
  • heun
  • runge
  • fixed
  • newton
  • bisection
  • polyfit
  • ccna
  • prezi
  • mcitp
  • pspice
  • sql
  • open
  • اطلاعات کاربری
    نام کاربری :
    رمز عبور :
  • فراموشی رمز عبور؟
  • آمار سایت
  • کل مطالب : 2400
  • کل نظرات : 278
  • افراد آنلاین : 2
  • تعداد اعضا : 23085
  • آی پی امروز : 92
  • آی پی دیروز : 142
  • بازدید امروز : 918
  • باردید دیروز : 1,060
  • گوگل امروز : 18
  • گوگل دیروز : 58
  • بازدید هفته : 1,978
  • بازدید ماه : 23,925
  • بازدید سال : 691,484
  • بازدید کلی : 4,850,941