Kompyuter injiniringi 210-21 guruh talabasi Rustamov Javohir


Download 58.66 Kb.
bet2/2
Sana02.06.2024
Hajmi58.66 Kb.
#1836622
1   2
Bog'liq
Kompyuter-arxitekturasi

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 "<system("pause");
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<<"Thred raqami: "<"\n"; // Joriy holatdagi thred raqami
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



  1. https://www.openmp.org/

  2. https://en.wikipedia.org/wiki/OpenMP

Download 58.66 Kb.

Do'stlaringiz bilan baham:
1   2




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