Kompyuter injiniringi 210-21 guruh talabasi Rustamov Javohir
Download 58.66 Kb.
|
Kompyuter-arxitekturasi
- Bu sahifa navigatsiya:
- Foydalanilgan adabiyotlar
Amaliy qism
OpenMP kutubxonasini sozlash OpenMP kutubxonasini Visual Studio 2012 muhitiga sozlash uchun quyidagi ketma-ketliklarni amalga oshiramiz: 1-qadam. Visual Studio 2012 muhitida yangi project yaratib olamiz va uni OpenMP.cpp kengaytmada nomlaymiz (1.2-rasm). 1.2-rasm Yangi .cpp proyekt yaratib olish 2-qadam. Yaratgan OpenMP.cpp projectimizni xususiyatlari (properties)ga kirib uning xususiyatlarini o‘zgartiramiz (1.3-rasm). 1.3-rasm Yaratilgan OpenMP.cpp faylini xususiyatini o’zgartirish 3-qadam. Ushbu qadamda, C/C++ -> Language bo‘limiga kirib OpenMP kutubxonasini yuklashni tasdiqlab quyamiz (1.4-rasm). 1.4-rasm. OpenMP kutubxonasini yuklashini tasdiqlash belgilash 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<<"Salom Javohir "< return 0; } 1.5-rasm OpenMP paketi yordamida yaratilgan “Salom Javohir” so’zini har bir oqimlarga yuklash Biz quyidagi berilgan misolda barcha oqimlarni (thread) bajarilish jarayonini ko’rishimiz mumkin 1.7-rasm. // OpenMP.cpp : Defines the entry point for the console application. // #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 << "Salom Javohir" << "\n"; // har bir oqimda bajarish system("pause"); } return 0; } 1.7-rasm OpenMP paketi yordamida oqimlarni boshqarish OpenMP paketi orqali biz parallel ishlovni amalga oshiramiz va berilgan vazifani sezilarli darajada tezlasshtiradi. Hozirgi misolda jarayonga qancha vaqt talab etilganini ko’rishimiz mumkin: // 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 ishlov berish orqali olingan natija Biz massivlar ustida hisob-kitoblarni parallel ishlash jarayoni qancha vaqt talab etganligini ko’rdik. // OpenMP.cpp #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(); omp_set_num_threads(4); int *arr = new int[ARRAY_SIZE]; std::fill_n(arr, ARRAY_SIZE,ARRAY_VALUE); #pragma omp parallel for 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.9-rasm Parallel ishlov berishda oqimlar sonini bergan holdagi holat Yuqorida keltirilgan natijalarga ko‘rib turgamnimizdek, OpenMP C/C++ da multi-threading(ko‘p-oqimlar)dan foydalanish bizga ko‘p vaqtni tejash imkonini beradi. Xulosa Biz bu amaliy ish davomida OpenMP texnologiyasi faqat CPU protsessori uchun ishlab chiqilgan. OpenMP yordamida berilgan vazifani CPU parallel holatda ishlov olib boorish natijasida vaqtdan samarali yutuq berdi. Foydalanilgan adabiyotlar https://www.openmp.org/ https://en.wikipedia.org/wiki/OpenMP Download 58.66 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling