• Mavzu
  • 1-Amaliy mashg’ulot




    Download 1,69 Mb.
    bet23/35
    Sana22.05.2024
    Hajmi1,69 Mb.
    #250113
    1   ...   19   20   21   22   23   24   25   26   ...   35
    Bog'liq
    1-Amaliy mashg’ulot (1)

      Bu sahifa navigatsiya:
    • Mavzu
    Nazorat savollari:

    1. ParaLab nima?

    2. ParaLab tizimini umumiy hususiyatlari nima?

    3. Tarmoq xarakteristikalari nima?

    4. ParaLab dasturiy tizimidan foydalanish shartlarini tushuntirib bering.



    Amaliy mashg’ulot №9


    Mavzu: Parallel dasturlash texnologiyalari.
    Ishdan maqsad: Talabalarda parallel dasturlash texnologiyalari to’g’risida tushuncha hosil qilish.
    Nazariy qism
    Darhol aytish kerakki, bir necha xil parallel dasturlash texnologiyalari mavjud. Bundan tashqari, ushbu texnologiyalar nafaqat dasturlash tillarida, balki parallel tizimlarni qurishda me'moriy yondashuvlarda ham farq qiladi.
    Masalan, ba'zi texnologiyalar bir nechta kompyuterlar asosida (ikkalasi ham bir xil va har xil turdagi) parallel echimlar qurishni nazarda tutsa, boshqalari bir nechta protsessor yadrolari bo'lgan bitta mashinada ishlashni nazarda tutadi.
    Bir nechta kompyuterlarga asoslangan tizimlar taqsimlangan hisoblash tizimlari sinfiga kiradi. Bunday echimlar uzoq vaqtdan beri qo'llanilib kelinmoqda, ularni soha mutaxassislari yaxshi tushunishadi, ular haqida juda ko'p adabiyotlar mavjud. Tarqatilgan hisoblash texnologiyasining eng yorqin namunasi MPI (Message Passing Interface). MPI - bu parallel dasturlashda eng keng tarqalgan ma'lumotlar almashinuvi interfeysi standarti; ko'p sonli kompyuter platformalari uchun dasturlar mavjud. MPI dasturchiga mashina arxitekturasidan (umumiy / umumiy xotiraga ega bo'lgan uniprotsessor / multiprotsessor), filiallarning o'zaro joylashuvidan (bir xil protsessorda yoki boshqasida) qat'i nazar, parallel dastur doirasida tarmoqlarning o'zaro ta'sirining yagona mexanizmini taqdim etadi.
    MPI umumiy xotiraga ega tizimlar uchun mo'ljallanganligi sababli, uni umumiy xotirali tizimda parallel jarayonni tashkil qilish uchun ishlatish yaxshi emas. Bu juda keraksiz va murakkab bo'ladi, shuning uchun OpenMP kabi echimlar ishlab chiqila boshlandi. Garchi, albatta, sizga bitta mashina uchun MPI echimlarini ishlab chiqarishga hech narsa to'sqinlik qilmaydi.
    Ammo bitta mashinada ishlash uchun parallel dasturlash tizimlari nisbatan yaqinda rivojlana boshladi. Yo'q, albatta, siz bularni mutlaqo yangi g'oyalar deb o'ylamasligingiz kerak, ammo ish stolida ko'p yadroli tizimlarning paydo bo'lishi (aniqrog'i yaqinda kelishi bilan) dasturchilar OpenMP, Intel Thread Building Blocks, Microsoft Parallel Extensions kabi texnologiyalarga e'tibor berishlari kerak. va boshqalar.
    Parallel dasturlash texnologiyasi dasturni asta-sekin parallel qilish imkoniyatini qo'llab-quvvatlashi juda muhimdir. Ha, ideal parallel dasturni birdaniga parallel ravishda yozish kerakligi yoki hatto parallellash umuman muammo bo'lmagan ba'zi bir funktsional tillarda yaxshiroq yozilishi kerakligi aniq ... Ammo dasturchilar haqiqiy dunyoda yashaydilar va ishlaydi, bu erda yangi burchakli funktsional F # o'rniga 10 MB kod mavjud eng yaxshisi, C ++ da yoki umuman C da.Bu kod asta-sekin parallel bo'lishi kerak. Bunday holda, OpenMP texnologiyasi (masalan) juda yaxshi tanlov bo'ladi. Ilovada parallellashtirishga eng kerakli joylarni tanlab, ularni birinchi navbatda parallel qilish imkonini beradi. Amalda bu shunday ko'rinadi. Ba'zi bir profil vositasi yordamida dasturchi dasturdagi eng uzoq vaqt davom etadigan to'siqlarni qidiradi. Nima uchun asbobdan foydalanish kerak? Negaki, taniqli bo'lmagan 10 Mb hajmdagi loyihadagi fikr kuchi "to'siqlarni" topa olmaydi. Keyin dasturchi OpenMP-dan foydalanib, bu to'siqlarni parallel qiladi. Shundan so'ng, kerakli dastur ko'rsatkichlari olinmaguncha, keyingi to'siqlarni va boshqalarni qidirishingiz mumkin. Parallel versiyani ishlab chiqish jarayoni to'xtatilishi, oraliq nashrlar chiqarilishi va kerak bo'lganda unga qaytarilishi mumkin. Shuning uchun, xususan, OpenMP texnologiyasi juda mashhur bo'lib qoldi.
    OpenMP nima?
    OpenMP (Open Multi-Processing) - bu umumiy xotira ko'p protsessorli (SMP) tizimlarida ko'p qirrali dasturlarni dasturlash uchun mo'ljallangan kompilyator direktivalari, kutubxona tartiblari va atrof-muhit o'zgaruvchilari to'plami.
    Birinchi OpenMP standarti 1997 yilda oson ko'chma ko'p qirrali dasturlarni yozishga qaratilgan API sifatida ishlab chiqilgan. Dastlab u Fortran tiliga asoslangan edi, ammo keyinchalik u C va C ++ tillarini o'z ichiga oldi.
    OpenMP interfeysi eng mashhur parallel dasturlash texnologiyalaridan biriga aylandi. OpenMP ko'plab protsessorlarga ega bo'lgan superkompyuter tizimlarini dasturlashda ham, ish stoli foydalanuvchi tizimlarida yoki masalan, Xbox 360 da muvaffaqiyatli qo'llanilmoqda.
    OpenMP spetsifikatsiyasi bir nechta yirik kompyuter texnikasi va dasturiy ta'minot ishlab chiqaruvchilari tomonidan ishlab chiqilmoqda, ularning ishi OpenMP Architecture Review Board (ARB) notijorat tashkiloti tomonidan tartibga solinadi.
    OpenMP filiallarni birlashtirish bilan parallel ijro modelidan foydalanadi. OpenMP dasturi boshlang'ich ish zarrachasi deb nomlangan bajarilishning yagona yo'nalishi sifatida boshlanadi. Ip parallel konstruktsiyaga duch kelganda, u o'zidan va bir qator qo'shimcha iplardan iborat yangi iplar guruhini yaratadi va yangi iplar guruhidagi asosiy ipga aylanadi. Yangi guruhning barcha a'zolari (shu jumladan asosiy) parallel qurilish ichidagi kodni bajaradilar. Parallel qurilish oxirida yashirin to'siq mavjud. Parallel qurilishdan so'ng faqat asosiy ish zarrachasi maxsus kodni bajarishni davom ettiradi. Boshqa parallel mintaqalar parallel mintaqada joylashishi mumkin, unda asl mintaqaning har bir oqimi uning oqimlari guruhi uchun asosiy oqimga aylanadi. O'rnatilgan mintaqalar, o'z navbatida, chuqurroq uyalash darajasidagi mintaqalarni o'z ichiga olishi mumkin.
    Parallel ravishda ishlaydigan guruhdagi iplar sonini bir necha usul bilan boshqarish mumkin. Ulardan biri OMP_NUM_THREADS muhit o'zgaruvchisidan foydalanmoqda. Boshqa usul - omp_set_num_threads () protsedurasini chaqirish. Yana bir usul - num_threads ifodasini parallel ko'rsatma bilan birgalikda ishlatish.
    Parallel dasturlash bo'yicha kelgusi eslatmalar to'g'risida e'lon
    Ushbu post bilan biz OpenMP texnologiyasi va parallel dasturlarni ishlab chiqish vositalari bilan tanishishga bag'ishlangan kichik nashrlar seriyasini boshlaymiz. Quyidagi yozuvlarda siz quyidagilarni bilib olasiz:
    • parallel dasturlarni ishlab chiqish uchun qanday vositalar zarurligi;
    • parallel dasturni noldan qanday yaratish;
    • OpenMP texnologiyasidan foydalangan holda mavjud dasturga qanday qilib parallel ijro qo'shilishi mumkin;
    • OpenMP-ilovalarni ishlab chiqishda qanday tipik muammolar yuzaga keladi va ularni qanday aniqlash mumkin;
    • parallel dasturlarni optimallashtirish.
    Darslarning navbatdagi chiqishini kuting va izohlarda parallel dasturlashning qaysi mavzulari sizni qiziqtirganligini yozing. Va keyin biz sizning istaklaringiz asosida qo'shimcha yozuvlarni olib boramiz.



    Download 1,69 Mb.
    1   ...   19   20   21   22   23   24   25   26   ...   35




    Download 1,69 Mb.