Sinxronizatsiya jarayonlarning to'g'ri ketma-ketligini anglatadi. Sinxronizatsiya zarurati yoki umumiy resursni jarayonlar o'rtasida taqsimlanishi yoki jarayonlarning bir-biridan mantiqiy bog'liqligi tufayli kelib chiqadi.
MPI_REDUCE (sendbuf, recvbuf, count, ma'lumotlar turi, op, root, comm): kirish parametri sendbuf (turi - alternativ) jo'natish buferining manzilini o'z ichiga oladi; recvbuf (turi - muqobil) qabul qilish buferining manzilini o'z ichiga oladi (faqat ildiz jarayoni foydalanadi); count (type - integer) jo'natish buferidagi elementlar soni; yuborish buferining ma'lumotlar turi (turi - descriptor) ma'lumotlar turi; op (type - descriptor) qisqartirish amalini o'z ichiga oladi; asosiy jarayonning root (type - integer) raqami; comm (type - descriptor) Jamoa operatsiyasi amalga oshiriladigan guruhning kommunikatori. MPI_REDUCE funktsiyasi op operatsiyasi yordamida har bir jarayonning kirish bufer yozuvlarini birlashtiradi va biriktirilgan qiymatni root jarayoni raqamlangan chiqish buferiga qaytaradi.
MPI_BCAST (bufer, hisoblash, ma'lumotlar turi, root, comm): ikki tomonlama (kirish / chiqish) parametr buferi (tip - alternativ) jo'natish / qabul qilish buferining boshlanish manzilini o'z ichiga oladi; kirish parametrlari soni (type - integer) buferdagi yozuvlar sonini o'z ichiga oladi; kirish parametri ma'lumot turi (type - descriptor) buferdagi ma'lumotlar turini tavsiflaydi; kirish parametri root (type - integer) ildiz jarayoni sonini o'z ichiga oladi; kirish parametri comm (tip - descriptor) - bu kollektiv operatsiya bajariladigan guruhning kommunikatori. MPI_BCAST translyatsiya funktsiyasi root jarayonidan guruhdagi barcha jarayonlarga, shu jumladan o'ziga xabar yuboradi. Uni guruhdagi barcha jarayonlar comm, root uchun bir xil argumentlar bilan chaqiradi. Boshqaruv qaytgach, root buferining tarkibi barcha jarayonlarga ko'chirilgan bo'ladi.
Uchala algoritmni ham ko'rib chiqamiz.
Skalyar parallellikka asoslangan algoritm, ya'ni. Integral1DMK_par (...) funktsiyasida amalga oshirilgan pastadir parallelligi. Ushbu algoritmda raqamlar integratsiya oralig'ining hosil qilingan nuqtalar soniga nisbati teng bo'lgan ma'lum bir qadam bilan hosil qilinadi. Bu qadam kamaygan sari koordinata o'qi bo'ylab sonlarning bir tekis taqsimlanishiga erishishga imkon beradi. Natijada, usulning yaqinlashishi, shuningdek hisob-kitoblarning aniqligini oshirish.
Ushbu algoritmda har bir jarayon quyidagi asosiy bosqichlarni bajaradi:
Ishlayotgan jarayonlarning sonini olish, uning sonini olish.
Tashqi tsiklning boshlanishi.
Ikki qo'shni takrorlashda integral qiymatini o'z ichiga olgan o'zgaruvchilarni initsializatsiya qilish (chiqish holatini tekshirish uchun).
Jarayon raqami va joriy vaqt bilan psevdo-tasodifiy sonlar generatorini ishga tushirish.
Raqamlarni yaratish bosqichini hisoblash.
Tasodifiy nuqta hisoblangan parallel funktsiya aylanasi, shu nuqtadagi funktsiya qiymati va qisman yig'indisi to'planadi. Loopda har bir jarayon o'rtacha totpt / totproc takrorlanishini bajaradi (totproc - ishlayotgan jarayonlar soni, totpt - hosil qilingan nuqtalar soni). 3.2.1-jadvalda 6 ta protsessor guruhi (totproc = 6) va totpt = 20 uchun tsikl takrorlanishining jarayonlar bo'yicha taqsimlanishiga misol keltirilgan:
3.2.1-jadval.
Do'stlaringiz bilan baham: |