|
Bitiruv malakaviy ishi
|
bet | 18/28 | Sana | 31.05.2024 | Hajmi | 6,58 Mb. | | #258326 |
Bog'liq BMI RakhimovAlijonFinal2024 (3)3.10-rasm.Yangi project hosil qilish
3.11-rasm. Yaratilgan project ni xususiyatini o‘zgartirish
3.12-rasm. Komplyatsiya bo‘ladigan platformani turini o‘zgartirish
Qo‘shimcha kutubxonaning *.h fayllarini loyihaga yuklash. Fayllar quyidagi yo‘l orqali chaqiriladi:
C:\Program Files (x86)\Intel\ComposerXE-2011\tbb\include\tbb
3.13-rasm. Qo‘shimcha kutubxonani yuklash
Qo‘shimcha kutubxonaning *.dll fayllarini loyihaga yuklash. Fayllar quyidagi yo‘l orqali chaqiriladi:
C:\Program Files (x86)\Intel\Composer XE-2011\tbb\ include\tbb\lib \ia32\ vc10
3.14-rasm. Qo‘shimcha kutubxonani yuklash
tbb.dll va tbb_debug.dll fayllarni project saqlanayotgan papkaga qo‘shib qo‘yish kerak.
#include "stdafx.h"
#include "task_scheduler_init.h"
#include "parallel_for.h"
#include "blocked_range.h"
#include
using namespace std;
using namespace tbb;
class TBB_CLASS
{
public:
void operator()(const blocked_range & range) const
{
for (int i = range.begin(); i != range.end ();i++)
{
cout<}
}};
int _tmain(int argc, _TCHAR* argv[])
{
task_scheduler_init init;
parallel_for (blocked_range (1,10),TBB_CLASS());
return 0;}
3.15-rasm. Oddiy dastur
Tasvirlar ustida raqamli ishlov berilganda vaqt masalasi asosiy muammo bo‘ladi, shuning uchun qayta ishlash jarayonlarini parallelashtirish eng maqbul yo‘llardan biri hisoblanadi. Algoritmlarni parallel holatga olib kelishdan keyingi bosqich esa parallel algoritmga hos ko‘pyadroli protsessorlar tanlashdan iboratdir. Chunki dasturiy qismni apparat qismga mosligini taminlash eng muhim masalalardan biridir.
Parallelashtirish vositasi sifatida CUDA, OpenMP texnologiyalari misol qilsa bo‘ladi.
/ Tbb oqimidan foydalanishning misoli
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
using namespace tbb;
int main(int argc, char* argv[])
{
Mat im1 = imread(argv[1]);
Mat imGray;
if (im1.data == nullptr)
{
cout << "Error while reading file " << argv[1];
return 1;
}
imshow("Input image", im1);
cvtColor(im1, imGray, CV_RGB2GRAY);
Mat im3, im4;
tbb_thread th1([&imGray, &im3]() // in fact, you can do this with C++ thread
{
int windowSize = 5; // starting threshold value
int constant = 5; // starting constant value
adaptiveThreshold(imGray, im3, 255,
CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY,
windowSize, constant);
});
tbb_thread th2([&imGray, &im4]()
{
cv::GaussianBlur(imGray, im4, cv::Size(3, 3), 5.0f);
});
th1.join();
th2.join();
imshow("Grayscale image", imGray);
imshow("Adaptive thresholding", im3);
imshow("Gaussian blur", im4);
cvWaitKey(0);
return 0;
Dasturni asosiy ishlash oynasi quyida keltirilgan (3.16-rasm). Bu oynada tasvirlar bilan ishlash uchun kerak bo‘ladigan asosiy funksiyalar majmuasi keltirilgan.
3.16-rasm. Dasturning asosiy oynasi
Dasturni ishga tushurgandan so‘ng kerakli siqiladigan tasvirni “Tasvir yuklash” tugmasini bosish orqali yuklab olamiz (3.17-rasm).
3.17-rasm. Tasvir yuklash
Kerakli tasvirni yuklab olingach bu tasvir haqidagi ma’lumotlar “Tasvir Info” deb nomlangan maydonchada paydo bo‘ladi. Bu maydonchada tasvirning bo‘yi va endining piksillarda o‘lchangan qiymatlari aks etadi. Buni 3.18-rasm da keltirilgan 2048 x 2048 tasvir o‘lchamlarini ko‘rishimiz mumkin. Bu tasvir hajmi 407 KB ni tashkil etadi.
3.18-rasm. Yuklangan tasvir.
Shundan so‘ng foydlanuvchi uchun qulaylik yaratish maqsadidan dasturda joylashgan “RGB” tugmasi orqali dasturga yuklangan tasvirning R – qizil kanal, G – yashil kanal va B – ko‘k kanallarini alohida maydinchada keltirilgan tarzda chiqarib qo‘yishi mumkin (3.19-rasm). bu funkisiyaning dasturda joriy etilishi parallel qayta ishlaganda har bir kanal bo‘yicha alohida qayta ishlash amalga oshishi haqida foydalanuvchiga tasavvur hosil qilishdan iborat.
3.19-rasm. Dasturga yuklangan raqamli tasvirnig RGB qiymatlarini akslantirish bosqichi
Keyingi bosqichda parallel holda tasvirlarni qayta ishlash holatini ko‘ramiz va chiqan natijalarni tahlil qilamiz (3.20-rasm).
3.20-rasm. Ketma-ket va parallel holda tasvirni qayta ishlash jarayonlarning
vaqt natijalari (Par Vaqt: TBB yordamida parallel vaqt, Ket Vaqt: CPUda ketma-ket vaqt)
Natijalarni solishtiradigan bo‘lsak, parallel hisoblashda sarflangan vaqt 2652 millisekundni tashkil etgan bo‘lsa, ketma – ket hisoblashda ketgan vaqt 8721 millisikundni tashkil etti. Erishilgan tezkorlikni topish uchun nisbatini hisoblaymiz.
Demak natija 3 dan oshdi. Bu jarayon 10 ta yadroga ega bo‘lgan Intel i7-12650H 2.5 Gh chastotaga ega bo‘lgan ko‘p yadroli protsessorli mashinada amalga oshirildi.
Tasvir natijaarini ko‘radigan bo‘lsak, haqiqiy tasvir hajmi yuklash jarayonida 407 KB ni tashkil etgan bo‘lsa, tasvirni qayta ishlash darajasi 1 qiymati bilan siqilganda 195 KB ni tashkil etdi. Natijada Tasvir o‘lchami 407/195 = 2.08 ga, ya’ni taxminan 2 marotaba qisqa
|
| |