Topshiriq № Mavzu: mpi paketi yordamida misollar yechish Ishdan maqsad


Kiritish va chiqish ma'lumotlariga misol



Yüklə 261,33 Kb.
səhifə8/21
tarix07.01.2024
ölçüsü261,33 Kb.
#208656
1   ...   4   5   6   7   8   9   10   11   ...   21
amaliy7

Kiritish va chiqish ma'lumotlariga misol

Kiritish ma’lumotlar

Chiqish ma’lumotlar

1000000000

3.14159265

16-Topshiriq. MPI dasturlarining masshtabliligini o‘rganish
OpenMP-dasturlarining kengaytirilishini o‘rganish uchun superkompyuterda bir qator tajribalar o‘tkazing. Quyidagi jadvalni to‘ldiring:

№ п/п

Dastur

Parametr N

Iplar soni

Bajarish vaqti (sek.)

57

“π soni” (11-topshiriqqa qarang)

100

1




58

10 000 000

1




59

4 000 000 000

1




60

100

2




61

10 000 000

2




62

4 000 000 000

2




63

100

4




64

10 000 000

4




65

4 000 000 000

4




66

100

6




67

10 000 000

6




68

4 000 000 000

6




69

100

8




70

10 000 000

8




71

4 000 000 000

8




72

100

10




73

10 000 000

10




74

4 000 000 000

10




75

100

12




76

10 000 000

12




77

4 000 000 000

12




Jadval ma‘lumotlariga asoslanib, N parametrining har bir qiymati uchun masshtablilik grafigini tuzing. Har bir grafik uchun qancha iplar sonida maksimal tezlashuvga erishilganligini aniqlang.
2. MPI+OpenMP dasturlash texnologiyasi
17-Topshiriq. Visual Studio 2022 da MPI va OpenMP-ni qo‘llab-quvvatlaydigan loyiha
Visual Studio 2022 da MPI va OpenMP yordami bilan minimal kodli loyiha yarating.
18-Topshiriq. “I am” dasturi
Har bir jarayonda n ta ip hosil qiluvchi dastur yozing. Har bir ip o‘zining ip nomerini, asosiy jarayon nomerini va barcha jarayonlardagi iplarning umumiy sonini quyidagi formatda ekranga chop qilishi kerak: I am thread from process. Number of hybrid threads = .
Kirish ma’lumotlari: butun n soni – ishga tushirilishi kerak bo‘lgan iplar soni.
Chiqish ma’lumotlari: I am thread from process. Number of hybrid threads = ko‘rinishdagi satr.
2 ta jarayon uchun kirish va chiqish ma'lumotlariga misol

Kiritish ma’lumotlar

Chiqish ma’lumotlar

3

I am 0 thread from 0 process. Number of hybrid threads = 6
I am 1 thread from 0 process. Number of hybrid threads = 6
I am 2 thread from 0 process. Number of hybrid threads = 6
I am 0 thread from 1 process. Number of hybrid threads = 6
I am 1 thread from 1 process. Number of hybrid threads = 6
I am 2 thread from 1 process. Number of hybrid threads = 6

19-Topshiriq. “π soni” dasturi
π sonini (6-amaliy ish 11-topshiriqqa qarang) hisoblash dasturini MPI+OpenMP dan foydalanib amalga oshiring.
Kirish ma’lumotlari: bitta butun N soni (hisoblash aniqligi).
Chiqish ma’lumotlari: bitta haqiqiy pi soni.
2 ta jarayon uchun kirish va chiqish ma'lumotlariga misol

Kiritish ma’lumotlar

Chiqish ma’lumotlar

1000000000

3.14159265


3. Metodik ko‘rsatmalar
1. MPI dasturlash texnologiyasi
1-topshiriq. MS Visual Studio muhitida MPI ni qo‘llab-quvvatlaydigan loyiha yaratish
1. Microsoft Visual Studio 2022 da minimal kod bilan mpi loyihasini yarating:
int main() {
return 0;
}
2. MPI-ni qo‘llab-quvvatlashni yoqish uchun qo‘shimcha loyiha kompilyatsiya parametrlarini o‘rnating:

  • Asosiy menyudan Project->Loyiha_nomi Properties-ni tanlang

  • Ochilgan oynadan Configuration Properties/C/C++/General ni tanlang. Additional Include Directories parametrining qiymatiga «C:\Program Files (x86)\Microsoft SDKs\MPI\Include» qiymatni o‘rnating. 1-rasmga qarang.


1-rasm.

  • Configuration Properties/Linker/General ni oching. Additional Library Directories parametr qiymatiga «C:\Program Files (x86)\Microsoft SDKs\MPI\lib»ni o‘rnating. 2-rasmga qarang.


2-rasm.

  • Configuration properties/Linker/Input Kengaytirish ni oching. Additional Dependencies parametriga qiymatni qo‘shing: «msmpi.lib». 3-rasmga qarang.


3-rasm

  • Ilovani kompilyatsiya qilish uchun F7 tugmasini bosing.

  • Ilovani ishga tushirish uchun kompilyatsiya qilingan ilovangiz joylashgan katalogda quyidagi tarkibga ega run.bat faylini yarating:

“c:\Program Files\Microsoft MPI\Bin\mpiexec” -n 2 -noprompt mpi.exe
PAUSE
bu yerda
-n - dasturdagi jarayonlar sonini belgilaydigan parametr,
-noprompt – ro‘yxatga olish so‘rovini bekor qilish parametri,
mpi.exe – sizning ilovangiz nomi.

4-rasm.

  • Endi siz avval yaratilgan bat-faylini ishga tushirishingiz mumkin.


5-rasm.
2-topshiriq. “I am!” dasturi.
1. MPI qo‘llab-quvvatlashi bilan Microsoft Visual Studio 2022 da mpi_i_am loyihasini yarating (1-topshiriqqa qarang).
2. MPI funksiyalari mavjud mpi.h sarlavha faylini qo‘shing. Sarlavha fayli ulanish qatori:
#include
3. MPI kutubxonasini initsializatsiya qiling. Buning uchun main funksiyada MPI_Init MPI-funksiyasini chaqiring:
MPI_Init (&argc, &argv);
Haqiqiy initsializatsiya qilish har bir dastur uchun ko‘pi bilan bir marta amalga oshiriladi va agar MPI allaqachon initsializatsiya qilingan bo‘lsa, unda hech qanday harakat bajarilmaydi va qismiy dasturdan darhol qaytadi.
Boshqa barcha MPI funksiyalarini faqat MPI_Init ga murojaat qilgandan keyin chaqirish mumkin!
MPI_Init buyruqlar satri parametrlarini parametr sifatida talab qiladi, bu sizning dasturingiz argc va argv main funksiya parametrlari orqali oladi. main funksiyaga argc va argv parametrlarini qo‘shing:
int main(int argc, char *argv[]){
//...
}
4. MPI_Comm_rank funksiyasidan foydalanib dasturdagi jarayon nomerini aniqlang:
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
bu yerda
birinchi parametr joriy jarayon nomerini aniqlanadigan kommunikatorni aniqlaydi. MPI_COMM_WORLD – bu MPI-ilovasidagi barcha jarayonlarni birlashtiruvchi kommunikator. Jimlik bo‘yicha yaratilgan.
rank – bu butun o‘zgaruvchi bo‘lib, bu funksiya joriy jarayonning nomerini qaytaradi.
5. MPI_Comm_size funksiyasi yordamida dasturdagi jarayonlar sonini aniqlang:
int size;
MPI_Comm_size(MPI_COMM_WORLD, &size);
bu yerda
birinchi parametr jarayonlar soni aniqlaydigan kommunikatorni belgilaydi.
size - bu butun o‘zgaruvchi bo‘lib, bu funksiya jarayonlarning umumiy sonini qaytaradi.
6. Chiqarish buyrug‘iga «I am process from processes!» satrini kiriting:
printf(“I am %d process from %d processes!\n”, rank, size);
7. Dastur oxirida MPI_Finalize funksiyasini chaqiring:
MPI_Finalize();
MPI_Finalize – ilovaning parallel qismini tugatish. Har qanday MPI-protseduralari, jumladan MPI_Initdan keyingi barcha murojaatlar yakunlanadi. MPI_Finalize ga murojaat qilingan vaqtdagi jarayonlarning, uning xabar almashishda ishtirokini talab qiladigan barcha harakatlar yakunlanishi kerak.
8. Ilovangizni kompilyatsiya qiling va ishga tushiring. To‘g‘ri natija ekranda chop qilinganligiga ishonch hosil qiling.

Yüklə 261,33 Kb.

Dostları ilə paylaş:
1   ...   4   5   6   7   8   9   10   11   ...   21




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin