O‘zbekiston respublikasi raqamli texnologiyalar vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti kompyuter injiniringi fakulteti Kompyuter arxitekturasi fanidan Mavzu: Openmp paketi yordamida misollar yechish




Download 368,02 Kb.
bet2/2
Sana12.02.2024
Hajmi368,02 Kb.
#154861
1   2
Bog'liq
arxitektur 4
xudo xoxlasa tushadi99%, 3-labarotoriya ishi Saralash usul va algoritmlarini tadqiq qilis, cmd buyruqlari, Incremental model nima, 1matematik, word sAM 1 savol, Документ Microsoft Word (4), Ma\'ruzalar (2), ЛАБОРАТОРНАЯ РАБОТА N1, Dasturlash 2, Ariza, Qalandarova Gulshoda, 1648631455, 1650692784, 1651669892 (2)
2-topshiriq
1. Microsoft Visual Studio 2022 da yangi loyiha yarating.
2. main funksiyada k iplar bilan parallel soha yarating. Quyidagi kodni joylashtiring:
rank = omp_get_thread_num();
printf("I am %d thread.\n", rank);

Dastur kodi:


#include
#include

int main() {


int k;
printf("Enter the number of threads (K): ");
scanf("%d", &k);
#pragma omp parallel num_threads(k)
{
int rank = omp_get_thread_num();
printf("I am %d thread.\n", rank);
}
return 0;
}

Dastur va natija screenshootlari:



3. rank o‘zgaruvchini umumiy o‘zgaruvchi sifatida aniqlang. Buning uchun parallel soha boshlanishidan oldin rank o‘zgaruvchisini e’lon qilish kifoya. Ilovani kompilyatsiya qilib va ishga tushiring. Dastur to‘g‘ri natija beradimi?


Dastur kodi:


#include
#include
// rank nomi bilan global o’zgaruvchi e’lon qilinyapti
int rank;
int main() {
int k;
printf("Enter the number of threads (K): ");
scanf("%d", &k);
rank = 0;
#pragma omp parallel num_threads(k) shared(rank)
{
rank = omp_get_thread_num();
printf("I am %d thread.\n", rank);
}
return 0;
}
Dastur va natija screenshootlari:


4. Uzoq hisoblashlarni simulyatsiya qiluvchi parallel sohaga quyidagi tarzda kod qo‘shing:
rank = omp_get_thread_num();
Sleep (100); // Uzoq hisoblarni simulyatsiya qilish
printf ("I am %d thread.\ n", rank);
Ma’lumotnoma: Sleep funksiyasi kirish parametrida millisekundlarda ko‘rsatilgan belgilangan vaqt oralig‘ida dastur bajarilishini to‘xtatib turadi. Ushbu funksiyani dasturingizda ishlatish uchun siz Windows.h sarlavha faylini kiritishingiz kerak.
5. Ilovani kompilyatsiya qiling va ishga tushiring. Dastur to‘g‘ri natija beradimi?

Dastur kodi:


#include
#include
#include
int main() {
int k;

// Kiritish: Threadlar soni


printf("Threadlar sonini kiriting (K): ");
scanf("%d", &k);

// Parallel xona yaratish


#pragma omp parallel num_threads(k)
{
// Thread raqamini olish
int rank = omp_get_thread_num();
// Sun’iy kutish hosil qilish
Sleep(1000);

// Thread raqamini ekranga chiqarish


printf("Men %d threadman.\n", rank);
}
return 0;
}
Dastur va natija screenshootlari:


6. rank o‘zgaruvchini xususiy sifatida qayta aniqlang. Buning uchun parallel direktivaga private() parametrini qo‘shish va rank o‘zgaruvchisini qavs ichiga qo‘ying:
#pragma omp parallel private(rank)
7. Ilovangizni kompilyatsiya qiling va ishga tushiring. Yuqoridagi barcha natijalarni tushuntiring.

Dastur kodi:


#include
#include
#include

int main() {


int k;
std::cout << "Enter the number of threads (K): ";
std::cin >> k;
#pragma omp parallel private(rank) num_threads(k)
{
int rank = omp_get_thread_num();
Sleep(1000);
#pragma omp critical
std::cout << "I am " << rank << " thread." << std::endl;
}
return 0;
}
Dastur va natija screenshootlari:


Xulosa
Yozilgan tepadagi kodlar orqali quyidagilar ta’minlandi:

  1. Parallel Threadlar bilan Ekranga Chiqarish: Dastur parallel xonalar orqali K ta ip yaratadi va har bir ip o'z nomerini ekranga chiqaradi. Har bir ipning o'zi mavjud ma'lumotlarni o'zi yaratadi.

  2. Umumiy o‘zgaruvchilarni ishlatish: Global (umumiy) o‘zgaruvchilardan foydalanib, ularni parallel sohadagi har bir thread bilan ulashish uchun kodi. Bu xususiyati ko‘rsatish uchun umumiy o‘zgaruvchi rankni paralel soha boshlanishidan oldin e’lon qilish kifoya.

Ushbu dasturlar paralel bajarish va global o'zgaruvchilardan foydalanishni ko'rsatish uchun OpenMP ni qo'llandi.

Download 368,02 Kb.
1   2




Download 368,02 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



O‘zbekiston respublikasi raqamli texnologiyalar vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti kompyuter injiniringi fakulteti Kompyuter arxitekturasi fanidan Mavzu: Openmp paketi yordamida misollar yechish

Download 368,02 Kb.