16-Topshiriq. MPI dasturlarining masshtabliligini o‘rganish 1. Microsoft Visual Studio 2022 da mpi_reduce loyihasini oching (11-topshiriqqa qarang).
2. Topshiriqdagi jadvalga muvofiq bir qator tajribalar o‘tkazing. Aniqroq natijalarga erishish uchun har bir tajriba bir necha marta bajarilishi kerak, shundan so‘ng o‘rtacha qiymat yakuniy natija hisoblanadi.
3. Ilovangizni kompilyatsiya qilish va ishga tushiring.
2. MPI+OpenMP dasturlash texnologiyasi 17-Topshiriq. Visual Studio 2022 da MPI va OpenMP-ni qo‘llab-quvvatlaydigan loyiha 1. Visual Studio muhitida OpenMP ni qo‘llab-quvvatlaydigan konsol ilovasini yarating (6-amaliy ishga qarang).
2. MPICH loyihasiga ulaning (1-topshiriqqa qarang).
3. Ilovani kompilyatsiya qiling va ishga tushiring.
18-Topshiriq. “I am” dasturi 1. Visual Studio muhitida OpenMP va MPI-ni qo‘llab-quvvatlaydigan konsol ilovasini yarating (17-topshiriqqa qarang).
2. Jarayon nomerini va dasturdagi jarayonlarning umumiy sonini mos ravishda rank_mpi va size_mpi o‘zgaruvchilariga oling.
3. MPI_Inint va MPI_Finalize funksiyalari orasida OpenMP parallel direktivasi yordamida parallel hududni yarating:
MPI_Init(...);
// Operatorlar
#pragma omp parallel {
// Operatorlar
}
// Operatorlar
MPI_Finalize();
4. rank_omp va size_omp o‘zgaruvchilariga dasturdagi ip nomeri va iplar sonini oling.
5. Parallel maydon ichida ekranda aks ettirish uchun xabar yarating:
printf(“I am %d> thread from %d >process. Number of hydrid threads = %d.\n”, rank_omp, rank_mpi, size_omp*size_mpi);
6. Ilovangizni kompilyatsiya qiling va ishga tushiring.
19-Topshiriq. “π soni” dasturi 1. Visual Studio muhitida OpenMP va MPI-ni qo‘llab-quvvatlaydigan konsol ilovasini yarating (17-topshiriqqa qarang)
2. π sonini hisoblovchi dastur tuzing. Dasturning asosiy hisoblash qismi – for siklidir. Siklning barcha iteratsiyalarini jarayonlar o‘rtasida teng ulushlarda taqsimlang, masalan, quyidagicha:
for (i=rank; i// Hisob-kitoblar
}
bu yerda size_mpi – dasturdagi MPI jarayonlar soni.
3. Jarayon ichida OpenMP for direktivasidan foydalanib, takrorlashlarni iplar bo‘ylab taqsimlang.
4. Ilovangizni kompilyatsiya qiling va ishga tushiring. To‘g‘ri natija qaytarilganligiga ishonch hosil qiling.
1 Master-jarayon har qanday ixtiyoriy jarayon bo‘lishi mumkin, odatda bu 0 nomerli jarayon bo‘ladi.