Muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti kompyuter injiniringi ta’lim yo‘nalishi


Download 71.44 Kb.
bet2/3
Sana02.06.2024
Hajmi71.44 Kb.
#1834804
1   2   3
Bog'liq
OpenMP PAKET TARKIBINI VA ISHLASHINI O‘RGANISH

Amaliy qism
OpenMP kutubxonasini sozlash
OpenMP kutubxonasini Visual Studio 2015 muhitiga sozlash uchun quyidagi ketma-ketliklarni amalga oshiramiz:

  1. qadam. Visual Studio 2015 muhitida yangi project yaratib olamiz va uni OpenMP.cpp kengaytmada nomlaymiz (1.2-rasm).


1.2-rasm. Yangi OpenMP.cpp nomli project hosil qilish

  1. qadam. Yaratgan OpenMP.cpp projectimizni xususiyatlari (properties)ga kirib uning xususiyatlarini o ‘zgartiramiz (1.3-rasm).


1.3-rasm. Yaratilgan OpenMP.cpp projectini xususiyatini o‘zgartirish



  1. qadam. Ushbu qadamda, C/C++ -> Language bo‘limiga kirib OpenMP kutubxonasini yuklashni tasdiqlab quyamiz (1.4-rasm).




1.4-rasm. OpenMP kutubxonasini yuklashni tasdiqlash

OpenMP paketini Visual Studio muhitiga samarali o‘rnatilganiga ishonch hosil qilish uchun quyidagi kodni amalga oshiramiz, va natija (1.5-rasm) ni ko‘ramiz:


#include “stdafx.h” #include #include


using namespace std;


int _tmain(int argc, _TCHAR* argv[])


{

#pragma omp parallel


{
// parallel mintaqa

cout<<“Hello world”} system(“pause”);


return 0;
}



1.5-rasm. OpenMP kutubxonasi o’rnatilgandan so’ng kodni amalga oshirish.



1.6-rasm. OpenMP paketi yordamida yaratilgan mintaqada “Hello World” so‘zini har bir oqimlarga yuklash.

OpenMP paketida protsessorimizda alohida ijro birliklari mavjud bo‘lgani uchun shuncha ko‘p ish zarralari ishlaydi. Biroq, bu qiymatlarni quyidagi usullar bilan sozlash mumkin. Quyida keltirilgan misolda barcha thred(oqim)lar ko‘rsatiladi va har bir thred(oqim) berilgan vazifani bajaradi (natija: 1.7-rasm).


// OpenMP.cpp #include “stdafx.h” #include #include using namespace std; #define THREAD_NUM 4 int main()
{
// “parallel” blokdagi thredlar sonini belgilash
omp_set_num_threads(THREAD_NUM); #pragma omp parallel
{
cout<<“Thredlar soni: “<<cout<<“Thred raqami: “<cout << “Hello World” << “\n”; // har bir oqimda bajarish
}
return 0;
}

1.7-rasm. OpenMP paketi yordamida oqimlarni boshqarish

OpenMP paketi parallel ishlashni amalga oshiradi va biz bajarayotgan hisob- kitob ishlarni sezilarli darajada tezlashtiradi. Quyida keltirilgan misollar (yordamida massivlar ustida hisob-kitoblarni parallel mintaqasiz ishlaganda masalani ishlash jarayoni qancha vaqt talab etganini ko‘rishimiz mumkin:




OpenMP da parallel mintaqasiz ishlash (Natija 1.8-rasm)
// OpenMP.cpp
// OpenMP da parallel mintaqasiz ishlash #include “stdafx.h”
#include #include #include #include
#define ARRAY_SIZE 100000000
#define ARRAY_VALUE 1231 using namespace std;
int main() {
//jarayon bajarilish vaqtini aniqlash uchun kerakli
kalit so‘zlar
double itime, ftime, exec_time; itime = omp_get_wtime();
int *arr = new int[ARRAY_SIZE]; std::fill_n(arr, ARRAY_SIZE, ARRAY_VALUE); for (int i = 0; i < ARRAY_SIZE; i++)
{
arr[i]=arr[i]/arr[i]+arr[i]/5-14;
}
// Jarayonga ketgan vaqtni hisoblash ftime = omp_get_wtime();
exec_time = ftime - itime;
cout << “Sarflangan vaqt: “ << exec_time << endl;

return 0;


}




1.8-rasm.
Parallel mintaqasiz olingan natija

1.9-rasm.
Parallel mintaqada olingan natija

1.8-rasmda keltirilgan natija asosida biz massivlar ustida hisob-kitoblarni parallel mintaqasiz masalani ishlash jarayoni qancha vaqt talab etganini ko‘rdik, ana endi ushbu misolni parallel mintaqa bilan ishlaganimizda masalani ishlash jarayoni vaqti sezilarli darajada kamayganini ko‘rishimiz mumkin:





Download 71.44 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling