Dasturiy ta’minotning yaratilish bosqichlari

|
Dasturiy ta’minotning yaratilish bosqichlari
|
bet | 17/28 | Sana | 31.05.2024 | Hajmi | 6,58 Mb. | | #258326 |
Bog'liq BMI RakhimovAlijonFinal2024 (3)3.2.Dasturiy ta’minotning yaratilish bosqichlari
OpenCV va C++ dasturlash tilining TBB kutubxonasidan foydalangan holda ko‘p yadroli protsessorlarda tasvirlarga parallel ishlov beruvchi dastur ishlab chiqish bosqichlarini ketma-ketlikda ko‘rib chiqamiz:
OpenCV yuklab olish va o‘rnatish:
OpenCVni mahalliy kompyuteringizga yuklab olish va oʻrnatish uchun quyidagi amallarni bajaramiz:
qadam: https://opencv.org/releases/ saytiga o‘tamiz va oxirgi versiyada (4.5.0) Windows tugmasini tanlaymiz va o‘rnatish fayli yuklab olinadi.
3.1-rasm. OpenCV o‘rnatish
2-qadam: Yuklab olingan faylni ochamiz. o‘z-o‘zidan zip fayl ochiladi. o‘rnatishni davom ettirishdan oldin C:\ diskida OpenCV nomli papkani yaratamiz. o‘rnatuvchini ishga tushiramiz va zip faylni yaratilgan C:\opencv papkasiga chiqaramiz:
3.2-rasm. OpenCV nomli fayl
1-qadam: Keyingi qadam tizim yo‘liga ikkilik fayllarni qo‘shishdir. Administrator imtiyozlari bilan buyruq satrini ochamiz va buyruqni yozamiz: setx -m OPENCV_DIR C:\opencv\build\x64\vc15-Bu tizim o‘zgaruvchisi sifatida OPENCV_dir ni qo‘shadi.
3.3-rasm. CMD, OpenCV
4-qadam: Atrof-muhit o‘zgaruvchilari sozlamalarini ochamiz. Path-ga o‘tamiz va %OPENCV_DIR%\bin qo‘shamiz:
3.4-rasm. Sozlamalar bo‘limi
OpenCV sozlamalari shu yerda amalga oshiriladi. Keyingi qadam Visual Studio loyihasi konfiguratsiyasini davom ettirishdir.
Visual Studio loyihasi konfiguratsiyasi:
qadam : Yangi Visual Studio loyihasini ishga tushiramiz va C++ Console ilovasi shablonini tanlaymiz:
3.5-rasm. Visual Studio
qadam: Loyiha yaratilgandan so‘ng Debug-ni x64 platformalariga o‘zgartiramiz, chunki biz C:\opencv\build\x64\vc15 da x64 versiyasidan foydalanmoqdamiz.
3.6-rasm. Debug
3-qadam: Loyiha ichida Xususiyatlar yorlig‘ini ochamiz:
3.7-rasm. Xususiyatlar yorlig‘i
4-qadam: Konfiguratsiya xususiyatlari ichida VC++ kataloglarini tanlaymiz. Keyingi qadam, OpenCV-ga kataloglar va kutubxona kataloglarini qo‘shish uchun kiritilgan kataloglarni va kutubxona kataloglarini tahrirlashdir. Avval "Kataloglarni qo‘shish" ni tanlaymiz, so‘ng "o‘zgartirish" tugmasini bosamiz, yangi oyna ochiladi. Sariq rangli tugma bo‘lgan "Yangi qator qo‘shish" tugmasini bosamiz va OpenCV C:\opencv\build\include kataloglarini kiritish yo‘lini kiritamiz.
3.8-rasm. VC++ kataloglar ro‘yxati
Xuddi shunday kutubxona kataloglari uchun Kutubxona kataloglarini tanlang va yuqoridagi amallarni takrorlaymiz. Yagona o‘zgarish OpenCV kataloglari uchun kutubxona kataloglari yo‘li bo‘ladi, ya’ni C:\opencv\build\x64\vc15\lib
3.9-rasm. Kutubxona kataloglari
Intel Threading Building Blocks (TBB) kutubxonasi parallel oqimli dasturlashda C++ dasturlash tili tomonidan foydalanuvchilarga taqdim etilgan qo‘shimcha imkoniyat hisoblanadi. TBB C++ ning maxsus shablonlarini amalga oshirishga va ko‘p oqimli dasturlashning yuqori bo‘lmagan qisimlarini parallellashtirish maqsadida taklif qilingan. TBB turli operatsion tizimlar va turli arxitektorlar bilan ham hisoblashlarni amalga oshira oladi. TBB kutubxona parallel dasturlashning umumiy muammolarni hal etish uchun turli funktsiya va sinflardan iborat misol uchun:
• parallel_for funktsiyasi – chegarasi aniqlangan parallel sikllar uchun;
• parallel_reduce funktsiyasi-parallel sikllar uchun (kombinatsiya qilish yo‘l bilan);
• parallel_while sinf – iterasyon soni noma’lum bo‘lgan parallel sikllarni yaratish;
• pipeline sinf - konveyer hisoblarni amalga oshirirish uchun;
Intel TBB yordamida parallel qayta ishlashni amalga oshirish TBB ning asosiy pradseduralaridan foydalaishdan oldin asosiy dastur blokida task_scheduler_init sinfiga yangi obyekt yaratib initsializatsiya qilishimiz kerak.u quyidagicha amalga oshiriladi:
#include "tbb/task_scheduler_init.h"
using namespace tbb;
int main( ) {
task_scheduler_init init;
...
return 0;
}
Biz quyida TBB ning maxsus sinf va funksiyalaridan foydalanib parallel oqimlarni hosil qilishni ko‘rib o‘tamiz.Misol sifatida oddiy holatda ma’lum oraliqdagi sonlarni yig‘indisini hisoblashning TBB kutubxonasi yordamida amalga oshirish.
class TBB_SUM
{
public:
// Vazifa,qaysiki tbb yordamida parallel hisoblanadi
// Kirish parametrlari kata bo‘lmagan diapazondagi sonlar
void operatori () (const blocked_range & range) const
{
int s=0;
for (int i = range.begin (); i! = range.end () ; i ++)
{
s+=i;
}
cout<<”Sonlar yig‘indisi:”<< s;
}};
Endi biz bu sinfdan asosiy dasturda foydalanamiz.Avvalambor yangi object hosil qilib olishimiz va parallel_for funksiyasidan foydalanmog‘imiz kekak.
int _tmain (int argc, _TCHAR * ARGV [])
{
task_scheduler_init init;
parallel_for (blocked_range (1000,1500),TBB_SUM ());
return 0;
}
TBB turli platformalarda ham oqimlar ustida ishlash uchun qulay hisoblanadi. U bir platformada qanday ishlasa boshqasida ham shunday ishlaydi Yana bir afzalligi shundaki oqimlarlar soni protsessor yadrolari soniga teng bo‘ladi va kutubxona to‘liq paralforma oqimlarining optimal sonini aniqlaydi(ya’ni u parallel oqimlarni hosil qilishda oqimlar sonini ko‘pligiga emas balki optimal sonini aniqlagan holda hisoblashlarni amalga oshiradi). Intelning Threading Building Blocks (TBB) kutubxonasi zamonaviy ko‘p yadroli protsessorlardan to‘liq foydalana oladigan dasturiy ta’minotni ishlab chiqishni soddalashtirish uchun mo‘ljallangan keng qo‘llaniladigan parallel dasturlash kutubxonasi. U ishlab chiquvchilarga samarali, kengaytiriladigan va portativ parallel kod yozishga yordam beradigan boy vositalar to‘plamini taqdim etadi.
Intel TBB kutubxonasini sozlash.
|
| |