Muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti kompyuter injiniringi ta’lim yo‘nalishi
Download 71.44 Kb.
|
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: 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 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 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 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 { // “parallel” blokdagi thredlar sonini belgilash omp_set_num_threads(THREAD_NUM); #pragma omp parallel { cout<<“Thredlar soni: “< } 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 #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-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: |
ma'muriyatiga murojaat qiling