به نام خدا

Preview:

DESCRIPTION

به نام خدا. استفاده عمومی‌از پردازنده‌های گرافیکی GPGPU تهیه کننده: منصور صفری استاد راهنما: مهندس مه لقا افراسیابی بهار 1392. فهرست. معماری پردازنده‌ها تفاوت پردازنده‌های گرافیکی با پردازنده‌های اصلی ( GPU vs CPU ) برنامه نویسی موازی - PowerPoint PPT Presentation

Citation preview

به نام خدا

استفاده عمومی از پردازنده های گرافیکی

GPGPU

:تهیه کننده

صفری منصور

:استاد راهنما

مهندس مه لقا افراسیابی

1392بهار

فهرست

معماری پردازنده ها•

GPUتفاوت پردازنده های گرافیکی با پردازنده های اصلی )•

vs CPU)

برنامه نویسی موازی•

پردازش های مناسب برای اجرا با پردازنده های گرافیکی•

چگونگی استفاده از پردازنده های گرافیکی برای •

پردازش های عمومی

نتیجه گیری•

Hamedan University of Technology 3 GPGPU

حداقل واح-د های م-ورد نی-از ب-رای پ-ردازش فرآین-د ش-دن محق-ق و کن--ترل حافظ--ه، واح--دهای

محاسبه و منطق هستند.

ک-ه داده ه-ایی و دس-تورالعمل ها می ش-وند نگه-داری حافظ-ه در توس-ط واح-د کن-ترل خوان-ده ش-ده

و مورد بررسی قرار می گیرند.

واح-د محاس-به و منط-ق ب-ا توج-ه از ش-ده ص-ادر فرمان ه-ای ب-ه واح-د کن-ترل پ-ردازش مناس-ب را ب-ا داده انج-ام داده ه-ا روی ب-ر تکمی-ل فرآین-د پ-ردازش نت-ایج در نویس-ی ب-از حافظ-ه واح-د

می شوند.

معماری پردازنده هاInstruction

fetcher

Instructiondecoder

MemoryRegisters

ALU

Hamedan University of Technology 4 GPGPU

تفاوت پردازنده های گرافیکی با پردازنده های اصلی

ام-روزه تقریب-ا تمامی پردازن-ده هایی ک-ه در سیس-تم ها اس-تفاده می ش-وند هس-ته 8 ت-ا 2 ه-ای ام-روز-ی بین- CPUبیش -از ی-ک هس-ته م-حاس-ب-اتی دار-ن-د.

م-حاس-بات-ی دارن-د- ک-ه هر-ک-دا-م م-ی ت-وا-ن-د ب-ا -س-رعت -بس-ی-ار -ب-اال- م-حاس-با-ت را انجام دهد.

( ALUه-ا در تع-داد هس-ته های محاس-باتی )GPU ه-ا ب-ا CPUبزرگ-ترین تف-اوت هس-ته محا-سباتی و-جو-د دار-د. 512ها ب-یش -از GPUاست.- امر-وزه د-ر

Hamedan University of Technology 5 GPGPU

تفاوت پردازنده های گرافیکی با پردازنده های اصلی

(NVIDIA – Fermi )هاGPUمعماری

Hamedan University of Technology 6 GPGPU

برنامه نویسی موازی

تمامی سیس-تم عامل ها و س-خت افزارهای کن-ونی از قابلیت ه-ای چن-د ( پش-تیبانی multi thread( و اج-رای چن-د نخی )multi process )برن-امگی

می کنن-د و ب-ا آنه-ا س-ازگاری کام-ل دارن-د. ب-ا این ش-رایط تنه-ا ع-املی اج-را ب-ه ص-ورت م-وازی )چن-د نخی( برنام-ه ی-ک تع-یین می کن-د ک-ه

( نخی ت-ک ص-ورت ب-ه ی-ا خ-ود single threadش-ود داخلی س-اختار )برنامه است.

Hamedan University of Technology 7 GPGPU

برنامه نویسی موازی

اج-رای همزم-ان ب-رای از قابلیت ه-ایی ک-ه سیس-تم عامل ه-ا جدای ه-ای چن-د هس-ته ای ن-یز میتوانن-د چن-د پ-ردازش را CPUبرنامه ه-ا دارن-د

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

پردازش میشوند.

Hamedan University of Technology 8 GPGPU

پردازش های مناسب برای اجرا با

پردازنده های گرافیکی

نس-بت ب-ه ALUه-ا از نظ-ر تع-داد واح-دهای GPUاز آنج-ایی ک-ه برت-ری CPU ه-ا ک-امال مش-هود اس-ت و همچ-نین ب-ه این نتیج-ه رس-یدیم ک-ه ب-ا

بیش-تر تع-داد ب-ه ALUداش-تن را پ-ردازش بیش-تری تع-داد میت-وان ه-ا میتوانن-د در GPUص-ورت همزم-ان اج-را ک-رد، میت-وان دری-افت ک-ه

ه-ا CPUاج-رای ان-واع خاص-ی از برنامه ه-ا ب-ا اختالف بس-یار زی-ادی از پیشی بگیرند.

Hamedan University of Technology 9 GPGPU

پردازش های مناسب برای اجرا با

پردازنده های گرافیکی

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

در ارتباط هستند را می توان از این نوع الگوریتم ها دانست.

اینگون-ه الگوریتم ه-ا و ی-ا برنامه ه-ا را براح-تی می ت-وان ب-ه گون-ه ای ص-ورت ب-ه و ش-وند تقس-یم زی-ادی قس-مت های ب-ه ک-ه نوش-ت از زی-ادی بس-یار قس-مت های زی-را درآین-د. اج-را ب-ه همزم-ان محاس-بات در این برنامه ه-ا هیچگون-ه وابس-تگی ب-ه نتیج-ه ی-ا خاتم-ه

محاسبات قسمت دیگر ندارند.

برای مثال ضرب دو ماتریس:

Hamedan University of Technology 10 GPGPU

چگونگی استفاده از پردازنده های گرافیکی برای

پردازش های عمومی

کامپایلره--ای و ابزاره--ا تاکنون برنامه نویس--ی ب--رای متف--اوتی

GPGPU هن-وز اس-ت. ش-ده ارائ-ه بین زی---ادی بس--یار اختالف--ات

س--ازنده و GPUش--رکت های ه--ا وج-ود. زمین-ه این نویس-ان برنام-ه

Nvidiaه-ا یع-نی GPUتنه-ا س-ازندگان هرک-دام کامپایلر ه-ای خ-اص AMDو

خ-ود را ارائ-ه کرده ان-د ک-ه این ک-ار را ب-رای برنام-ه نویس-ان دش-وار می کن-د از کمپانی ه--ا این دو ه--ر ولی

OpenCL.پشیبانی می کنند

Hamedan University of Technology 11 GPGPU

چگونگی استفاده از پردازنده های گرافیکی برای

پردازش های عمومی

در کلی که GPGPUقاعده است صورت این به CPU (HOST)( دس--تورالعمل ها KERNELS بخش ه--ای ب--ه را )( می ده-د و نت-ایج را DEVICE )ی-ا ب-ه ط-ور کلی GPUمختل-ف

پس می گیرد

Hamedan University of Technology 12 GPGPU

چگونگی استفاده از پردازنده های گرافیکی برای

پردازش های عمومی

مشاهده می کنید.CUDA C و ب-ا اس-تفاده از Cدر اینج-ا برنام-ه جم-ع دو ع-دد را ب-ا زب-ان

__global__ void add( int *a, int *b, int *c){*c = *a + *b;

}Int main( void ) {Int a, b, c; // host copies of a, b, cInt *dev_a, *dev_b, *dev_c; // device copies of a, b, cInt size = sizeof( int); // we need space for an integer

// allocate device copies of a, b, c

cudaMalloc( (void**)&dev_a, size );cudaMalloc( (void**)&dev_b, size );cudaMalloc( (void**)&dev_c, size );a = 2;b = 7;

Hamedan University of Technology 13 GPGPU

چگونگی استفاده از پردازنده های گرافیکی برای

پردازش های عمومی

// copy inputs to device

cudaMemcpy( dev_a, &a, size, cudaMemcpyHostToDevice);cudaMemcpy( dev_b, &b, size, cudaMemcpyHostToDevice);

// launch add() kernel on GPU, passing parameters

add<<< 1, 1 >>>( dev_a, dev_b, dev_c);

// copy device result back to host copy of c

cudaMemcpy( &c, dev_c, size, cudaMemcpyDeviceToHost);cudaFree( dev_a);cudaFree( dev_b);cudaFree( dev_c);

Return 0;}

Hamedan University of Technology 14 GPGPU

چگونگی استفاده از پردازنده های گرافیکی برای

پردازش های عمومی

در ک-دی ک-ه مش-اهده ک-ردیم تنه-ا دو ع-دد ب-ا هم جم-ع می ش-دند، در ک-دی ک-ه در- ادامه آم-ده ا-ست آر-ایه ای- از اعداد -با هم- جمع خو-اهند شد-.

__global__ void add( int *a, int *b, int *c ) {c[blockIdx.x] = a[blockIdx.x] + b[blockIdx.x];}#define N 512int main( void ) {int *a, *b, *c; // host copies of a, b, cint *dev_a, *dev_b, *dev_c; // device copies of a, b, cint size = N *sizeof( int); // we need space for 512 integers// allocate device copies of a, b, ccudaMalloc( (void**)&dev_a, size );cudaMalloc( (void**)&dev_b, size );cudaMalloc( (void**)&dev_c, size );a = (int*)malloc( size );b = (int*)malloc( size );c = (int*)malloc( size );random_ints( a, N );random_ints( b, N );Hamedan University of Technology 15 GPGPU

چگونگی استفاده از پردازنده های گرافیکی برای

پردازش های عمومی

// copy inputs to device

cudaMemcpy( dev_a, a, size, cudaMemcpyHostToDevice);cudaMemcpy( dev_b, b, size, cudaMemcpyHostToDevice);

// launch add() kernel with N parallel blocks

add<<< N, 1 >>>( dev_a, dev_b, dev_c);

// copy device result back to host copy of c

cudaMemcpy( c, dev_c, size, cudaMemcpyDeviceToHost);free( a ); free( b ); free( c );cudaFree( dev_a);cudaFree( dev_b);cudaFree( dev_c);return 0;}

Hamedan University of Technology 16 GPGPU

نتیجه گیری

در پردازش های وابسته به شبکهGPGPUاستفاده از •

در آنتی ویروس هاGPGPUاستفاده از •

در برنامه های پردازش سیگنال و GPGPUاستفاده از •

پردازش تصویر

در سرعت بخشیدن به پایگاه های دادهGPGPUاستفاده از •

Hamedan University of Technology 17 GPGPU

Hamedan University of Technology 18 GPGPU

منابع

• Matthew Scarpino, OpenCL in Action: Manning

Publications Co, 2012.

• Jason Sanders, Edward Kandrot. CUDA by example:

NVIDIA Co, 2012.

• CUDA - NVIDIA Developer Zone (

https://developer.nvidia.com/category/zone/cuda-zone)

• OpenACC Home (www.openacc-standard.org)

Hamedan University of Technology 19 GPGPU