19
ام ه ن ب دا خ

به نام خدا

  • Upload
    mervyn

  • View
    33

  • Download
    1

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: به نام خدا

به نام خدا

Page 2: به نام خدا

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

GPGPU

:تهیه کننده

صفری منصور

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

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

1392بهار

Page 3: به نام خدا

فهرست

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

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

vs CPU)

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

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

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

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

نتیجه گیری•

Hamedan University of Technology 3 GPGPU

Page 4: به نام خدا

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

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

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

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

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

می شوند.

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

fetcher

Instructiondecoder

MemoryRegisters

ALU

Hamedan University of Technology 4 GPGPU

Page 5: به نام خدا

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

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

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

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

Hamedan University of Technology 5 GPGPU

Page 6: به نام خدا

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

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

Hamedan University of Technology 6 GPGPU

Page 7: به نام خدا

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

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

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

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

Hamedan University of Technology 7 GPGPU

Page 8: به نام خدا

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

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

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

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

Hamedan University of Technology 8 GPGPU

Page 9: به نام خدا

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

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

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

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

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

Hamedan University of Technology 9 GPGPU

Page 10: به نام خدا

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

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

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

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

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

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

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

Hamedan University of Technology 10 GPGPU

Page 11: به نام خدا

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

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

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

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

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

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

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

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

Hamedan University of Technology 11 GPGPU

Page 12: به نام خدا

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

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

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

پس می گیرد

Hamedan University of Technology 12 GPGPU

Page 13: به نام خدا

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

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

مشاهده می کنید.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

Page 14: به نام خدا

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

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

// 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

Page 15: به نام خدا

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

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

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

__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

Page 16: به نام خدا

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

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

// 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

Page 17: به نام خدا

نتیجه گیری

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

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

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

پردازش تصویر

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

Hamedan University of Technology 17 GPGPU

Page 18: به نام خدا

Hamedan University of Technology 18 GPGPU

Page 19: به نام خدا

منابع

• 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