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

استفاده از GPU ها در MATLAB

 

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

 

بررسی اجمالی

در این پست، ما ابتدا اصول اولیه استفاده از 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

دانلود رایگان کد های برنامه نویسی آماده متلب MATLAB Pareto Front

دانلود فایل در ادامه مطلب

مشاوره انجام پروپزال انجام پایان نامه     کارشناسی ارشد     دکتری   انجام پروژه های دانشجویی   برنامه نویسی کدنویسی متلب matlab مطلب انجام پروژه matlab انجام پروژه متلب  انجام پروژه مطلب  Cplex Gams Lingo   ای اس پی ASPPHP   JAVA‌  جاوا  Delphi++C  Visual C  Assembly  #C    Visual Basic OMNET  OPNET  Linux  Oracle  MYSQL  SQLSERVER ‌   لینوکس     انجام پروژه   و در صورت تمایل    فیلم آموزشی پروژه  آموزش حضوری پروژه      Email : matlab_net@yahoo.com    Phone : 09190090258  گروه آموزشی متلب نت تمام الگوریتم های فرا ابتکاری گسسته پیوسته چند هدفه رشته های   مهندسی صنایع ، مدیریت ، کامپیوتر ،    هوش مصنوعی ، عمران ، برق ،   مالی ، ریاضی، مکانیک   و ... مشاوره و انجام پایان نامه های کارشناسی ارشد و دکتری تشخیص الگویادگیری ماشین پردازش صدا پردازش تصویر Image processing شبکه عصبی منطق فازی داده کاوی Data Mining شبیه سازی کامپیوتری توالی عملیات و زمان بندی  زنجیره تامین مدل سازی ریاضی مسیریابی وسیله نقلیه  سیستم تولیدی سلولیزمان بندی پروژهقابلیت اطمینانبرنامه ریزی تولیدانتخاب تامین کنندگانکنترل موجودی  تصمیم گیری چند معیاره  AHP SAW TOPSIS VIKOR PROMTHEE ENTROPY FUZZY GRAY فازی  قطعی  بازه ای   تحلیل پوششی داده ها BCC  DEA CCR   قابل توجه دانشجویانی که می خواهند در پایان نامه یا مقالات خود از هوش مصنوعی ، الگوریتم های فرا ابتکاری یا شبکه عصبی و... استفاده کنند  برای این دسته از دانشجویان بر روی مدل مد نظرشون پروژه پیاده سازی و آموزش داده خواهد شد  الگوریتم های بهینه سازی فرا ابتکاری فراابتکاری تکاملی   metaheuristicsانجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم ژنتیک  Genetic Algorithm GA   در با متلب matlab مطلب  برنامه ریزی ژنتیک Genetic Programming یا  GP     انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم شبیه سازی تبرید Simulated Annealing یا  SA     در با متلب matlab مطلب انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم بهینه سازی ازدحام ذرات Particle Swarm Optimization  یا    PSO     در با متلب matlab مطلب الگوریتم مورچگان الگوریتم پرندگان  الگوریتم پرندگان چند هدفه تکامل تفاضلی Differential Evolution یاDE     انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم بهینه سازی کلونی مورچگانAnt Colony Optimization یاACO   در با متلب matlab مطلب بهینه سازی کلونی مورچگان برای فضای پیوسته یا  ACOR    برنامه ریزی تکاملی Evolutionary Programming یا  EP    استراتژی های تکامل Evolution Strategies یاES    استراتژی های تکامل با تطبیق ماتریس کواریانس یا  CMAجستجوی ممنوعه Tabu Search یادر با متلب matlab مطلبTS   انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم الگوریتم زنبورهاBees Algorithm یاBA     در با متلب matlab مطلب انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم کلونی زنبورهای مصنوعی Artificial Bee Colony  یاABC    جستجوی هارمونیHarmony Search یا   HS    بهینه سازی مبتنی بر جغرافیای زیستی   BBO   Biogeography  Based Optimization  الگوریتم فرهنگCultural Algorithm یا   CA   انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم الگوریتم رقابت استعماریImperialist Competitive Algorithm یاICA    در با متلب matlab مطلب الگوریتم کرم شب تابFirefly Algorithm یا  FA     در با متلب matlab مطلب الگوریتم بهینه سازی بیزیBayesian Optimization Algorithm یاBOA    الگوریتم بهینه سازی بیزی سلسله مراتبی یاhBOA    سیستم ایمنی مصنوعیArtificial Immune System یاAIS    شبکه ایمنی مصنوعیArtificial Immune Network یاAIN    الگوریتم انتخاب تکثیریClonal Selection Algorithm یاCSA  الگوریتم های مبتنی بر الگوهای رفتاریMemetic Algorithms یاMA   الگوریتم جستجوی کاتالیستیCatalytic Search Algorithm   الگوریتم های تخمین توزیع یاEDA  انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم الگوریتم خفاش یا  Bat Algorithm   الگوریتم جهش قورباغهFrog Leaping    ازدحام ماهی های مصنوعیArtificial Fish Swarm یا AFS    انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم بهینه سازی ازدحام ذرات چند هدفه یاMOPSO در با متلب matlab مطلب الگوریتم بهینه سازی باکتری(Bacterial Foraging Optimization) یاBFO انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم الگوریتم ژنتیک چند هدفه با مرتب سازی نا مغلوب یاmulti objective optimization MOGA NSGA-II NRGA NSGA2 naga ii  در با متلب matlab مطلب انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم الگوریتم بهینه سازی فاخته COA Cuckoo optimization algorithm در با متلب matlab مطلب انجام پروژه های دانشجویی برنامه نویسی کدنویسی  الگوریتم الگوریتم جستجوی گرانشی  Gravitational search algorithm GSA در با متلب matlab مطلب   

 

اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آمار سایت
  • کل مطالب : 2400
  • کل نظرات : 284
  • افراد آنلاین : 5
  • تعداد اعضا : 24556
  • آی پی امروز : 64
  • آی پی دیروز : 146
  • بازدید امروز : 494
  • باردید دیروز : 879
  • گوگل امروز : 11
  • گوگل دیروز : 48
  • بازدید هفته : 494
  • بازدید ماه : 4,221
  • بازدید سال : 118,947
  • بازدید کلی : 5,764,589