بهره مندی از قدرت پردازش GPU در فرآیندهای محاسباتی
25% Off200,000 تومان
150,000 تومان
پرداخت و دریافت فایل
200,000 تومان
150,000 تومان
پرداخت و دریافت فایل
چکیده
با توجه به اینکه در سالهای اخیر پردازندههای چند هستهای و GPU های چند هستهای به عنوان ابزار مقرون به صرفهای برای استفاده در سیستمهای مختلف مناسب بودهاند. امروزه کامپیوترهای رو میزی. لپتاپها و ابر رایانهها و محیطهای ابری که شامل پردازندههای چند هستهای CPU و GPU میباشند بسیار رایج هستند. در نتیجه ارائهی سیستم عاملهایی برای محاسبات که بر روی CPU و GPU اجرا شوند مورد توجه بسیار زیادی است.
هدف از ارائهی این تحقیق
هدف از ارائهی این تحقیق نیز ارائهی روشی جهت استفادهی همزمان از قدرت پردازشی پردازندههای CPU و GPU است. به طوری که بتوان از حداکثر توانایی سیستم در اختیار استفاده نمود. همانطور که وارد حوزه محاسبات GPU میشویم. برنامه های کاربردی ذاتا موازی به طور فزآیندهای از توانایی فراوان محاسبات موازی GPU برای رسیدن به کارایی و بازدهی بالاتر استفاده میکنند. برنامههای کاربردی که قبلا به علت زمان بالای اجرای آنها نامناسب بودند امروزه توسط محاسبات GPU قابل انجام هستند.
در سالهای اخیر تلاشهای قابل توجهی در جهت موازی سازی الگوریتمها و اجرای موازی فرایندهای محاسباتی انجام شده است. و هر یک از شرکتهای بزرگ و مشهور، اقداماتی در جهت موازی کردن اجرای دستورات و الگوریتمها انجام دادهاند. تا بتوانند زمان اجرای فرآیندهای محاسباتی را کاهش دهند که در این بین، شرکت NVIDIA پا را از مرزها فراتر گذاشته و راه-حلی برای اجرای موازی دستورات با بهرهمندی از قدرت پردازش GPU ابداع نموده است.
شرکت NVIDIA
شرکت NVIDIA با ایجاد پلت فرم CUDA(Compute Unified Device Architecture ) و طراحی GPU های جدید خود که قابلیت پردازش چندین هزار دستور در واحد زمان را دارد، راهکار جدیدی برای اجرای موازی الگوریتمها را فراهم نموده است. GPU برای عملیات بسیار موازی طراحی شده در حالی که یک CPU برنامهها را بصورت سریال انجام میدهد. به همین دلیل GPU ها واحد محاسبهگر موازی با ترانزیستورهای تعداد بالا را دارند در حالیکه CPU واحد پردازشگر کمتری نسبت به GPU را دارد. لذا با بهرهگیری از قدرت پردازش GPU و CPU به طور همزمان میتوان سرعت اجرا را بسیار بالا برد. در سالهای اخیر پلت فرم CUDA پیشرفت قابل توجهی در جهت پیادهسازیها ایفا نموده که در این بین میتوان به زمینههای پزشکی، نظامی و نجومی اشاره کرد.
چالشی که در این راستا در این پژوهش انجام شده اجرای چند الگوریتم محاسباتی با بهرهمندی از قدرت پردازش GPU و سپس CPU میباشد. در ادامه زمانهای بدست آمده از اجرای GPU با زمانهای بدست آمده از اجرای CPU مقایسه شده است. در این پژوهش ابتدا روشهای قبلی که از GPU برای فرآیندهای محاسباتی استفاده شده است را مرور کرده و سپس چند نمونه از الگویتمهای محاسباتی را توسط قدرت پردازش GPU پیادهسازی و اجرا مینماییم.
فصل اول – مقدمه 1
1-1 پردازش موازی 2
1-2 موازی¬سازی الگوریتم¬های محاسباتی 2
1-3 اهمیت پردازش موازی 3
1-4 مزایای استفاده از پردازش موازی 4
1-5 استفاده از پردازش موازی در پردازش تصویر 5
1-6 ظهور پردازش CPU 5
1-7 ظهور پردازش GPU 6
1-7-1 معماری پردازنده¬های گرافیکی GPU 6
1-7-2 معماری GPUهای مدرن 8
1-7-3 محاسبات چندپردازنده گرافیکی 9
1-7-3-1 حافظه¬های GPU 9
1-8 نتیجه گیری 10
فصل دوم-مفاهیم پایه 12
2-1 پلت فرم CUDA 13
2-2 معماری CUDA 14
2-2-1 مدل سخت افزاری 14
2-2-2 مدل برنامه نویسی 15
2-3 تطبیق الگوریتم به مدل CUDA با استفاده از گرید و بلاک و نخ 16
2-3-1 نخ 16
2-3-2 گرید و بلاک 18
2-4 مدل حافظه 18
2-5 مدل برنامه¬نویسی ناهمگن 20
2-6 سیستم¬های اشتراکی GPU 21
2-7 کاربردهای CUDA 22
2-7-1 تصاویر پزشکی 22
2-7-2 محاسبات دینامیک سیالات 22
2-7-3 علوم محیط زیست 23
2-7-4 پردازش تصویر 23
2-8 نتیجه گیری 24
فصل سوم – مروری بر کارهای پیشین 25
3-1 شتاب دادن به محاسبه فاصله اقلیدسین در ماتریس با استفاده از GPU 26
3-2 مدل¬سازی عملکرد و بهینه¬سازی ضرب برداری ماتریس اسپارس بوسیله پلت¬فرم CUDA 27
3-3 طراحی ناهمگن FPGA – GPU – CPU در زمان واقعی برای نگاشت فیزیولوژیک نقشهبرداری نوری قلب 28
3-4 بهبود عملکرد دادهکاوی در Weka از طریق شتاب GPU 30
3-5 روش موازی حذف نویز از تصویر بصورت ترکیبی با استفاده از CPU و GPU 33
3-6 افزایش سرعت الگوریتم رمزنگاری تصویر مبتنی بر آشوب با استفاده از GPGPU 35
3-7 رمزنگاری تصویر مبتنی بر آشوب در GPU 38
3-8 رمزنگاری تصویر با استفاده از الگوریتم RSA در CUDA 41
3-9 شتاب دادن به الگوریتم استاندارد رمزنگاری/رمزگشایی پیشرفته (AES) بوسیله GPU 44
3-10 اجرای رمزنگاری استاندارد پیشرفته برای رمزنگاری/رمزگشایی تصاویر و متن در GPU 47
3-11 نتیجه گیری 53
فصل چهارم – پیاده¬سازی فرآیندهای محاسباتی 54
4-1 موازی¬سازی ضرب دو ماتریس 55
4-2 موازی¬سازی جمع دو ماتریس 56
4-3 موازی¬سازی ضرب داخلی دو بردار 56
4-4 موازی¬سازی عملیات بیتی XOR بر روی ماتریس 57
4-5 موازی¬سازی جمع برداری 57
4-6 موازی¬سازی محاسبه عدد pi 57
4-7 عملیات اتمیک در CUDA 58
4-8 محاسبه فاصله اقلیدسی 58
4-9 موازی¬سازی الگوریتم Quick Sort 59
4-10 موازی¬سازی الگوریتم Radix Sort 60
4-11 موازی¬سازی الگوریتم Bitonic mergsort 60
4-12 نتیجه گیری 61
فصل پنجم -ارزیابی کارایی و نتایج شبیهسازی 62
5-1 راه اندازی تجربی و پیاده¬سازی 63
5-2 نتایج اجرای موازی الگوریتم ضرب ماتریس 63
5-3 نتایج اجرای موازی الگوریتم جمع ماتریس 64
5-4 نتایج اجرای الگوریتم موازی¬سازی شده ضرب داخلی دوبردار 65
5-5 نتایج اجرای موازی عملیات بیتی XOR بر روی ماتریس 67
5-6 نتایج اجرای الگوریتم موازی¬سازی شده جمع برداری 68
5-7 نتایج اجرای الگوریتم موازی¬سازی شده محاسبه عدد Pi 70
5-8 نتایج اجرای موازی عملیات اتمیک XOR بر روی آرایهها 70
پردازش GPU فرآیند محاسباتی
5-9 نتایج اجرای موازی محاسبه فاصله اقلیدسی 71
5-10 نتایج اجرای الگوریتم موازی¬سازی شده Quick Sort 72
5-11 نتایج اجرای الگوریتم موازی¬سازی شده Radix Sort 75
5-12 نتایج اجرای الگوریتم موازی¬سازی شده Bitonic Sort 77
5-13 مقایسه زمانهای اجرای سه الگوریتم Quick Sort, Radix Sort, Bitonic Sort با پنج توزیع متفاوت 79
5-13-1 مقایسه با تعداد نخ 128 و تعداد عناصر 512 79
5-13-2 مقایسه با تعداد نخ 128 و تعداد عناصر 1024 80
5-14 نتیجه گیری 81
فصل ششم- نتیجه گیری و کارهای آتی 82
6-1 نتیجه گیری 83
6-2 کارهای آتی 83
منابع و مراجع 85
پردازش GPU فرآیند محاسباتی
الگوریتم محاسباتی , واحد پردازش گرافیکی , محاسبه معماری دستگاه یکپارچه , واحد پردازش مرکزی , موازی سازی , سیستم پردازش موازی , سیستم چند پردازشی , computational algorithm , graphics processing unit , compute unified device architecture , central processing unit , parallel processing system , multiprocessing system