CUDA Programming Applications

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

CUDA Programming Applications

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

تاریخچه opencv

opencv مخفف عبارت open source computer vision یک کتابخانه از توابع برنامه نویسی با هدف بینایی ماشین بلادرنگ توسط شرکت اینتل در سال 1999 برای ردیابی اشعه و نمایش سه بعدی دیوار ابداع و ارئه گردید.سپس توسط آزمایشگاه تحقیقاتی Willow garage  پشتیبانی شد. محیط کدنویسی  opencv پلتفرم ++C می باشد و همچنان جامعیت خود را باتوجه به این که توسط زبان C که قدیمی تر است توسعه داده شده است حفظ نموده است و همچنین چارچوبهای یادگیری عمیق را پشتیبانی می نماید، این کتابخانه علاوه بر پلتفرم ++C در پلتفرمهای پایتون، جاوا، متلب و اکتاو و ... قابل دسترس است. تسریع سخت افزاری این کتابخانه برپایه پردازنده گرافیکی است که توسط پلتفرمهای CUDA که مختص شرکت NVIDIA در سال 2010 ارائه شد و OPENCL که در سال 2012 توسط شرکت Apple توسعه داده شد قابل دسترس است.opencv توسط سیستم عاملهای Windows,Mac,Linux,FreeBSD,NetBSD,openBSD پشتیبانی می شود. در فایلی که توسط آقای باقری اصل ارائه گردیده جزییات بهتری قابل مشاهده می باشد.

لینک دانلود مستقیم از سایت opencv.org که با فیلتر شکن قابل دانلود است.


Moments and Moment Invariants in Pattern Recognition

این کتاب اشاره ای بر مباحث پیش پردازش تصویر جهت امر بینایی ماشین داشته و سپس به بررسی الگوریتمهایی در زمینه بینایی ماشین پرداخته است، و در 9 فصل توسط آقایان Jan Flusser و Tomáš Suk و خانم Barbara Zitová اعضای گروه کامپیوتر دانشگاه www.avcr.cz  جمهوری چک در سال 2009 به چاپ رسید.




   

دستورات cudaThreadSynchronize و cudaDeviceSynchronize

تفاوت بین دستورات cudaThreadSynchronize وcudaDeviceSynchronize در چیست؟
بنظر می رسد بسیاری از برنامه های کاربردی از تابع cudaThreadSynchronize بسیار استفاده نموده انداما اسناد اخیر شرکت NVIDIA در این رابطه بیان نموده است که تابع cudaThreadSynchronize بعلت منعکس نکردن رفتار واقعی خود منسوخ شده است و بعلت تشابه زیاد کارآیی آن با کارآیی تابع cudaDeviceSynchronize از این تابع بجای آن استفاده می شودو وظیفه اصلی آن همگام سازی تردهای داخل GPU بوده و ربطی به CPU ندارد مکان قرار گیری این دستور ،بعد از فراخوانی آخرین کرنل می باشد. مانند شکل زیر


با استفاده از این دستور به استفاده بهینه تری از حافظه و همچنین کاهش مصرف زمان پردازش دست می یابیم،نتیجه 6 آزمونی که برای جمع دوبردار با 8192 عنصر اجرا شد با استفاده از این دستور و همچنین بدون استفاده از آن در جدول زیر آمده است.


شماره آزمونبا استفاده از دستورcudaDeviceSynchronizeبدون استفاده از دستور cudaDeviceSynchronize
1
2479028microsecond
2486615microsecond
2
2503691microsecond
2573641microsecond
3
2576774microsecond
2570786microsecond
4
2470012microsecond
2629837microsecond
5
2571920microsecond
2710080microsecond
6
2495909microsecond
2618598microsecond


پایگاه داده AT&T

یک پایگاه داده نسبتا خوب که مربوط به دانشگاه کمبریج شامل چندین تصویر چهره گرفته شده مابین سالهای 1992 تا 1994 می باشد که برای هر تصویر چهره فولدری شامل 10 تصویر در حالات مختلف از آن چهره وجود دارد.

http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html