CUDA Programming Applications

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

CUDA Programming Applications

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

نحوه تنظیمات کتابخانه opencv در visual studio

برای استفاده از توابع کتابخانه opencv در محیط visual studio پس از دانلود آخرین ورژن opencv از سایت opencv.org (با فیلتر شکن) و نصب آن یک پوشه به همین نام در درایو C ایجاد می شودتوجه داشته باشید پس از نصب بایستی مسیر پوشه bin  را طبق شکل زیر در ویندوز اضافه نمایید.





سپس بعد از ایجاد پروژه جدید سی پلاس پلاس مراحل زیر را به ترتیب انجام می دهیم
1-Include




2-Add liberary






در نهایت به این دو اسم lib. اضافه کرده و دکمه ok  را میزنیم و هم اکنون پروژه آماده استفاده از توابع کتابخانه opencv می باشد

پردازش تصویر در کودا

در این قسمت در نظر دارم نمونه تست پردازش تصویر که در کودا انجام دادم را برای شما عزیزان به اشتراک بگذارم.

در ابتدا با استفاده از توابع کتابخانه opencv تصویر را می خوانیم

سپس در کرنل کودا شمارنده ای از جنس thread تعریف نموده و دستور اصلی برنامه که می خواهیم هر پیکسل تصویر را در0.6 ضرب کند می نویسیم

سپس در قسمت main برنامه تصویر را خوانده و دو آرایه تعریف نموده و تصویر را به آرایه انتقال می دهیم سپس همانند جمع و ضرب آرایه ها که در قسمتهای قبلی گفته شد آن آرایه را به حافظه جی پی یو انتقال می دهیم و سپس تابع هسته اصلی کودا را فراخوانی می کنیم و دوباره آرایه را به حافظه سی پی یو منتقل می نماییم و سپس با دستور Mat Out = Mat(im.rows, im.cols, CV_8UC1, array1);آرایه را به Mat  تبدیل می نماییم تا بتوانیم با دستور imshow کتابخانه opencv نمایش دهیم.



,  و نتیجه کار:


که همانطور که مشاهده نمودید تصویر تیره تر شد.

نحوه تنظیم پشته و افزایش حجم ان

تنظیم پشته و افزایش حجم آن

در برخی از مواردکه با سایزهای بزرگی از ماتریس و یا بردار سرو کار دارید ، در هنگام انجام عملیات بر روی آنها احتمالا با خطایی مطابق شکل زیر مواجه شوید که مربوط به کمبود حجم حافظه stack است که بایستی این حجم را بطور دستی افزایش دادکه روند ان در زیر آمده است.



1-از نوار ابزار بالا گزینه project و سپس گزینه آخر properties را انتخاب می نماییم



2- در تب linker گزینه system را انتخاب می نماییم



3- سپس آیتمهای stack commit size و stack reserve size را با مقادیر بزرگ مثلا 100000 تنظیم می نماییم


چگونگی زمانگیری اجرای برنامه در محیط ++C

یکی از دلایلی که ما از پردازش موازی روی GPU استفاده می کنیم زمان اجرای کم پردازش در آن نسبت به CPU است پس این تناسب زمان برای ما حائز اهمیت است ، پس بنابراین از دستورات زیر به منظور محاسبه زمان اجرای برنامه در دو روش معمولی و موازی استفاده می کنیم و سپس به مقایسه انها می پردازیم ، که در پستهای بعدی با دیدن مثالهای کاربردی تفاوت زمان اجرای روشهای معمولی و موازی به طور چشم گیر قابل رویت است.

در ابتدای اجرای دستورات کلاک CPU را فعال نموده و زمان لحظه ای را در متغیری نگه می داریم ، سپس در پایان دستورات برنامه دوباره کلاک را زده و زمان شروع را از آن کم کرده و مدت زمان اجرای برنامه را بدست می آوریم.

Void RunProgress(void)

}

;Using  namespace std::chrono

;()Auto starttime=steady_clock::now

;double x=0

}For(double i=0;i<20000;i++)

;X+=i

}

;()Auto durationtime=std::chrono::duration_cast<std::chrono::microsecond>(steady_clock::now() – StartTime

;std::cout << "sum: " << DurationTime.count() << "    NanoS \n

}

;()Int main

}

for (int i = 0; i < 30; i++)

                }

;() RunProgres

               {

;()Getchar

{


که توابع زمان در کتابخانه chrono می باشد.و در اینجا چون از جنس microsecond تعریف کردیم میکرو ثانیه را برمی گرداند و می توان از گزینه های millisecond  و یا  nanosecond هم استفاده نمود.