CUDA Programming Applications

کاربردهای برنامه نویسی کودا

CUDA Programming Applications

کاربردهای برنامه نویسی کودا

کتاب برنامه نویسی موازی با کودا


 
استفاده از توان محاسباتی رایانه‌ها در تحقیقات علمی و فعالیت‌های دانشگاهی، مراکز تحقیقاتی و شرکت‌های تجاری، کاربرد روزافزونی پیدا نموده است؛ ازاین‌رو نیاز به پردازش سریع‌تر افزایش یافته و به یک نیاز اساسی تبدیل شده است. سرعت کامپیوترهای شخصی کنونی نسبت به اجداد خود به‌طور سرسام‌آوری افزایش یافته است اما علیرغم وجود این موضوع باز جوابگوی نیازهای مطرح‌شده نیست. ازجمله عرصه‌هایی که احتیاج به کامپیوترهایی با سرعت پردازش بسیار بالا دارند می‌توان به برنامه‌های شبیه‌سازی در تحقیقات هسته‌ای، نانو فناوری محاسباتی، برنامه‌های پیش‌بینی وضعیت هوا، برنامه‌های فیلم‌سازی کامپیوتری، برنامه‌های ساخت انیمیشن حرفه‌ای و بسیاری از زمینه‌های مختلف دیگر که همگی به‌سرعت پردازش بسیار زیاد نیاز دارند تا در یک زمان مناسب به نتیجه برسند اشاره کرد. یک راه‌حل برای این معضل، استفاده از سوپرکامپیوترها است. درست است که سرعت پردازش سوپرکامپیوترها بسیار بالاتر از کامپیوترهای شخصی است اما استفاده از آن‌ها در همه موارد مقرون‌به‌صرفه نیست؛ ضمن آن‌که این فناوری در انحصار بعضی از کشورهای توسعه‌یافته است و سایر کشورها از دسترسی به این تجهیزات استراتژیک محروم هستند. راه‌حل دیگر در دستیابی به سرعت پردازش بسیار بالا، استفاده از روش پردازش موازی است. به بیان ساده در این روش چند پردازنده (در اینجا منظور پردازنده‏های گرافیکی) معمولی با همکاری یکدیگر به اجرای یک برنامه می‌پردازند که طی این همکاری، برنامه با سرعت بالاتری اجرا می‌شود. به عبارت دیگر، پردازش یا محاسبه‏ی موازی، شکلی از پردازش است که در آن دستورالعمل‌های بسیاری در یک زمان و به صورت هم‌زمان انجام می‌شوند و بر اساس این اصل اجرا می‌شوند که مسائل بزرگ را اغلب می‌توان به مسائل کوچک‌تر تقسیم نمود که سپس باهم و به‌صورت موازی اجرا شوند.  ادامه مطلب ...

کتابcomputer aided intelligent recognition techniques

در دو دهه اخیر کارهای با ارزشی در حوزه تشخیص کاراکتر صورت گرفته است و مقالات زیادی درباره این موضوع ارائه شده است، تشخیص کاراکتر تعامل خوبی را بین انسان و ماشین شامل پردازش اتوماتیک داده، اعتبارسنجی و غیره فراهم می نماید مانند برخی از نرم افزارهای بانکی (پرداخت قبض از روی بارکدو...)،نرم افزارهای علمی ، تجاری (مانند فروشگاههاو...)

مزیت دیگر نرم افزارهای تشخیص کاراکتر کاهش مداخله انسان در ورود داده و همچنین کاهش خطای تایپ تسریع امر خواندن داده می باشد، مخصوصا زمانی که داده به شکل خواندنی در سیستم موجود باشد، اما با تمام مزایایی که ذکر شد تشخیص حروف عربی بدلیل بهم پیوسته بودن حروف و شکل خاص حروف و سختی پردازش متن هنوز پتانسیل های زیادی را دارد،و همین پتانسل برای زبان چینی هم وجود دارد، کتاب computer aided intelligent recognition techniques در 24 فصل به معرفی و بررسی چندین الگوریتم و متد در مورد پردازش خودکار کاراکتر پرداخته است.


CUDA C Programming

کتاب CUDA C Programming توسط JOHN (RUNWEI) CHENG و  MAX GROSSMAN  و TY MCKERCHER در سال 2014 منتشر شد.این کتاب مقدمه ای خوب برای کسانی است که قصد در شروع برنامه نویسی موازی با پلتفرم کودا را دارند که به معرفی معماری و اجرای برنامه های کاربردی در حالت موازی پرداخته است، لذا از بازدیدکنندگان محترم تقاضا می شود برای درک مفهوم این کتاب فصول را به ترتیب خوانده و به اجرای مثالهای کتاب در محیط کودا بپردازند، این کتاب شامل ده فصل که در زیر به شرح مختصری ازآنها پرداخته شده است می باشد.



فصل اول به بررسی محاسبات موازی ناهمگن با پلتفرم CUDA شامل معرفی محاسبات موازی، برنامه نویسی موازی و معماری کامپیوتر و سپس به معرفی محاسبات ناهمگن شامل معماری و نمونه های ناهمگن  پرداخته است .سپس مثال ساده HelloWorld را به اجرا در آورده است.
فصل دوم به مدل برنامه نویسی با CUDA شامل ساختار برنامه نویسی با CUDA،مدیریت حافظه ، سازماندهی thread ها، راه اندازی کرنل کودا، نوشتن کرنل ،ارزیابی کرنل نوشته شده ،رفع خطاها ، کامپایل و اجرا و بررسی زمانبندی با CPU و GPU و سازماندهی thread های موازی ،شاخص گذاری ماتریسها با بلاکها و تردها،جمع ماتریسها با گریدها و بلاکهای دوبعدی و تک بعدی و همچنین با گریدهای دو بعدی و بلاکهای تک بعدی و مدیریت Device ها پرداخته است.
فصل سوم به مدل اجرا در CUDA شامل نگاه اجمالی به معماری GPUو FERMIو Kepler و درک ذات اجرای نخها ، بررسی موازی سازی ، باز کردن حلقه ها و موازی سازی پویا پرداخته است.
فصل چهارم به معرفی مدل حافظه CUDA ،مزایای سلسله مراتب حافظه ،مدیریت حافظه، تخصیص و آزادسازی حافظه ،الگوی دستیابی به حافظه ، خواندن و نوشتن سراسری در حافظه و پهنای باند در حافظه پرداخته است.
فصل پنجم به معرفی حافظه به اشتراک گذاشته شده در CUDA شامل تخصیص حافظه به اشتراک گذاشته شده ، تنظیمات مقدار حافظه اشتراکی ، همگام سازی ، بررسی آرایش داده در حافظه اشتراکی ، کاهش دسترسی به حافظه سراسری و ... می پردازد.
فصل ششم به معرفی رویدادها و Stram ها شامل CUDA Stream،زمانبندی Stream ، اولویت Stream، رویدادهای CUDA و همگام سازی Stream ها می پردازد.
فصل هفتم به معرفی دستورالعملهای CUDA شامل بهینه سازی برنامه های کاربردی ،توابع استاندارد ، تک دقتی در مقابل دقت مضاعف می پردازد.
فصل هشتم به معرفی برخی از کتابخانه های CUDA جهت دسترسی سریع به GPU می پردازد.
فصل نهم برنامه نویسی چند منظوره را با GPU و نحوه انتقال داده از CPU به GPU و بالعکس و همچنین از CPU به CPU و از GPU به GPU را شرح می دهد.
فصل دهم ملاحظاتی به اجرا و پیاده سازی برنامه در محیط CUDA دارد.

Computer Vision and Applications a guide for students and practitioners

این کتاب در 17 فصل توسط   Bernd Jahne و   Horst Haussecker در سال 2000 در موسسه Academic Press منشر گردید، این کتاب شامل رویکردهای جدید مبحث بینایی ماشین شامل کلیه فرآیندها از ابتدا که داده ها به شکل تصویر دیجیتال از محیط اطراف گرفته می شود تا مراحل نهایی درک و واکنش ماشین نسبت به عوامل محیطی می باشد، اصل این کتاب بر خواندن ترتیبی فصول می باشد تا فهم خواننده را از ابتدای فرایند گرفتن تصویر از محیط تا واکنش ماشین نسبت به محیط بالا برده و کل نیازهای خواننده را پوشش می دهد.

فصل اول: به معرفی المانهای بینایی ماشین، سیستمهای تصویربرداری، پردازش سیگنال برای بینایی ماشین، الگوهای تشخیص بر روی بینایی ماشین، ارزیابی کارآیی الگوریتم ها و کلاس بندی Task ها می پردازد.

فصل دوم:Radiation and Illumination (تابش و نورپردازی) به معرفی و اساس تابش الکترومغناطیسی، مقادیر رادیومتریکی ، اساس فتومتری، تکنیک های روشنایی و ... می پردازد.
فصل سوم:Imaging Optics  (تصویربرداری نوری) به معرفی مفهوم اساسی ژئومتری نوری، لنز، خواص نوری شیشه ، انحرافات ، فرمت تصاویر نوری ، موج و فوریه پرداخته است.
فصل چهارم:Radiometry of Imaging به معرفی سطوح مشاهده، اشباع در تصویربرداری ، تابش اشعه و همچنین تشخیص تابش و ... می پردازد.
فصل پنجم:به معرفی اصل حسگر تصویر ، فرآیند تصویربرداری، انتقال تصویر، تشخیص سیگنالهای الکتریکی،معماری سنسورهای تصویر برداری،بینایی رنگی و تصاویر رنگی پرداخته است.
فصل ششم:به معرفی تکنیکهای کالیبره ، مدل های دوربین و نرم افزارهای تصویربرداری پرداخته است.
فصل هفتم:تکنیکهایتصویربرداری سه بعدی،معرفی مشخصات سنسورهای سه بعدی و تداخل نوری را بیان نموده است.
فصل هشتم:(نمایش سیگنالهای چند بعدی ) به معرفی سیگنالهای پیوسته و گسسته و همچنین ارتباط بین آنها ،تبدیل فوریه گسسته و پیوسته و مقیاسهای سیگنالها و ... پرداخته است.
فصل نهم:به توضیح عملگرهای همسایگی شامل معرفی پایه ،فیلترهای خطی و غیرخطی ، فیلترهای بازگشتی ، میانگین محلی و تشخیص لبه پرداخته است.
فصل دهم:با عنوان motion به معرفی جریانات و تناظرات پایه و optic ، تکنیکهای فیلتر چهارگانه ، همبستگی و تطبیق و مدل کردن حرکات می پردازد.
فصل یازدهم:به بررسی الگوریتمهای تصویربرداری سه  بعدی  شامل stereopsis  و عمق focus می پردازد.
فصل دوازدهم:(طراحی فیلترهای غیرخطی) به معرفی و طراحی فیلتر ، انتخاب پارامتر، بسط و ارتباط رزولوشن های مختلف تصویر پرداخته است.
فصل سیزدهم:(قطعه بندی و هموار نمودن منعطف متغیرها) به معرفی پردازش تصاویر 2 و یا 3 بعدی و همچنین پردازش تصاویر برداری، و تصاویر متوالی پرداخته است.
فصل چهاردهم:به معرفی عملگرهای مورفولوژی شامل مقدماتی ، پایه و پیشرفته پرداخته است.
فصل پانزدهم :به بررسی مدل سازی احتمالی در بینایی ماشین پرداخته است.
فصل شانزدهم: به بررسی پردازش تصویر فازی شامل معرفی و درک پرداز ش تصویر فازی ، سیستم پردازش تصویر فازی و تئوری المانهای پردازش تصویر فازی و مثال های کاربردی پرداخته است.
فصل هفدهم : کاربرد شبکه عصبی در پردازش تصویر را بیان نموده است.