• Nazariy qism
  • OpenMP texnologiyasining versiyalari
  • TOPSHIRIQLAR
  • Telekommunikatsiya fakulteti 412-20 guruh talabasi Asliddin Islomov kompyuter arxitekturasi fanidan 4-topshiriq mavzu




    Download 330.16 Kb.
    Sana04.12.2022
    Hajmi330.16 Kb.
    #33111
    Bog'liq
    Asliddin Islomov-4
    3 amaliy ish , 2. Робототехника, 01,12,23 Иргашев Анвар Камолович 2, харбий мерос 8-мавзу

    Telekommunikatsiya fakulteti
    412-20 guruh talabasi
    Asliddin Islomov


    KOMPYUTER ARXITEKTURASI FANIDAN 4-TOPSHIRIQ


    MAVZU: OpenMP TEXNOLOGIYASI VA UNING IMKONIYATLARI


    Ishdan maqsad: OpenMP texnologiyasini va uning samarali natijalarini o’rganish

    hamda CUDA, OpenCL kabi texnologiyalar bilan taqqoslash va tahlil qilish.





    1. Nazariy qism

    OpenMP (Open Multoqimrocessing) kompilyator direktivasiga asoslangan parallel dasturlash modeli boʻlib, dastur ishlab chiquvchilarga oʻzlarining dastur kodlariga parallelizmni bosqichma-bosqich qoʻshish imkonini beradi.


    OpenMP - bu ko'p ish zarralarini amalga oshirish , parallellashtirish usuli bo'lib, bunda birlamchi oqim (ketma-ket bajariladigan ko'rsatmalar qatori) ma'lum miqdordagi pastki oqimlarni ajratib turadi va tizim ular orasida vazifani taqsimlaydi. Keyin oqimlar bir vaqtning o'zida ishlaydi , ish vaqti muhiti oqimlarni turli protsessorlarga ajratadi.


    har bir oqim kodning parallellashtirilgan qismini mustaqil ravishda bajaradi. Ish almashish konstruksiyalari vazifani oqimlar o'rtasida taqsimlash uchun ishlatilishi mumkin, shunda har bir oqim kodning ajratilgan qismini bajaradi. Shu tarzda OpenMP yordamida vazifalar parallelligi va ma'lumotlar parallelligiga erishish mumkin.


    Ma'lumotlar parallelligi - bu parallel hisoblash muhitida bir nechta protsessorlar bo'ylab parallellashtirish. U ma'lumotlarni parallel ravishda ishlaydigan turli tugunlar bo'ylab ma'lumotlarni tarqatishga qaratilgan. U har bir element ustida parallel ravishda ishlash orqali massivlar va matritsalar kabi oddiy ma'lumotlar tuzilmalarida qo'llanilishi mumkin. Bu parallelizmning boshqa shakli sifatida vazifa parallelizmidan farq qiladi.

    Vazifa parallelizmi (shuningdek, funksiya parallelligi va boshqaruv parallelligi deb ham ataladi ) parallel hisoblash muhitida bir nechta protsessorlarda kompyuter kodini parallellashtirish shaklidir . Vazifa parallelizmi turli protsessorlar bo'ylab jarayonlar yoki oqimlar tomonidan bir vaqtning o'zida bajariladigan vazifalarni taqsimlashga qaratilgan .


    Parallel dasturlash uchun OpenMP API spetsifikatsiyasi ko'pgina platformalarda C, C++ va Fortran tillarida ko'p platformali umumiy xotira ko'p ishlov berish dasturlashni qo'llab-quvvatlaydigan amaliy dasturlash interfeysini (API) taqdim etadi. U ishlash vaqtidagi xatti-harakatlarga ta'sir qiluvchi kompilyator direktivalari, kutubxona tartiblari va muhit o'zgaruvchilari to'plamidan iborat.


    OpenMP tugun ichidagi parallelizmga (umumiy xotirani ko'p ishlov berish) e'tibor qaratganligi sababli, uni bir nechta tugunlarda bajarish uchun MPI kabi xabarlarni uzatuvchi dasturlash modellari bilan birlashtirish mumkin.

    OpenMP kompilyator direktivalari toʻplami hamda C, C++ yoki FORTRAN tillarida yozilgan dasturlar uchun API boʻlib, umumiy xotira muhitlarida parallel dasturlashni qoʻllab-quvvatlaydi. OpenMP parallel hududlarni parallel ravishda ishlashi mumkin bo'lgan kod bloklari sifatida belgilaydi. Ilova ishlab chiquvchilari parallel hududlarda o'z kodlariga kompilyator direktivalarini kiritadilar va bu direktivalar OpenMP ish vaqti kutubxonasiga mintaqani parallel ravishda bajarishni buyuradi. Quyidagi C dasturi printf() ifodasini o'z ichiga olgan parallel hudud ustidagi kompilyator direktivasini ko'rsatadi –


    #include


    #include


    int main(int argc, char *argv[]){


    /* ketma-ket kod */


    #pragma omp parallel{


    printf("Men parallel mintaqaman"); /// parallell buyrug’i


    }


    /* ketma-ket kod */

    return 0;


    }
    OpenMP texnologiyasining versiyalari







    Versiya

    Til

    Ishlab chiqarilish

    sanasi






















    1

    OpenMP 4.5

    C/C++/Fortran

    2015-11-01













    2

    OpenMP 4.0

    C/C++/Fortran

    2013-07-01













    3

    OpenMP 3.1

    C/C++/Fortran

    2011-07-01













    4

    OpenMP 3.0

    C/C++/Fortran

    2008-05-01













    5

    OpenMP 2.5

    C/C++/Fortran

    2005-05-01













    6

    OpenMP 2.0c

    C/C++

    2002-03-01













    7

    OpenMP 2.0f

    Fortran

    2000-11-01













    8

    OpenMP 1,0c

    C/C++

    1998-10-01













    9

    OpenMP 1.0f

    Fortran

    1997-10-01













    #include


    #include


    int main (int argc, char *argv[])


    {

    #pragma omp parallel

    {

    printf ("Hello world! I'm thread %d out of %d threads.\n", omp_get_thread_num(), omp_get_num_threads());

    }

    return 0;

    }
    #pragma omp parallel


    Tizimda yadrolarni qayta ishlaydigan ko'plab oqimlarni yaratadi. Shunday qilib, ikki yadroli tizim uchun ikkita oqim yaratiladi, to'rt yadroli tizim uchun to'rtta yaratiladi; va hokazo. Keyin barcha oqimlar bir vaqtning o'zida parallel hududni bajaradi. Har bir oqim parallel hududdan chiqqanda, u tugatiladi. OpenMP kod mintaqalarini parallel ravishda ishga tushirish uchun bir nechta qo'shimcha ko'rsatmalar beradi, shu jumladan parallellashtirish tsikllari.


    Parallellashtirish bo'yicha ko'rsatmalarni taqdim etishdan tashqari, OpenMP ishlab chiquvchilarga parallelizmning bir nechta darajalaridan birini tanlash imkonini beradi. Masalan, ular oqimlar sonini qo'lda belgilashlari mumkin. Bundan tashqari, u ishlab chiquvchilarga ma'lumotlar oqimlar o'rtasida almashilganligini yoki oqim uchun shaxsiy ekanligini aniqlash imkonini beradi. OpenMP Linux, Windows va Mac OS X tizimlari uchun bir nechta ochiq manbali va tijorat kompilyatorlarida mavjud.


    TOPSHIRIQLAR


    package main


    import (
    "fmt"
    )


    func main() {
    for i := 1; i <= 100; i++ {
    go fmt.Println(i)
    //fmt.Println(i)
    }
    var a int
    fmt.Scan(&a)
    }





    Download 330.16 Kb.




    Download 330.16 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Telekommunikatsiya fakulteti 412-20 guruh talabasi Asliddin Islomov kompyuter arxitekturasi fanidan 4-topshiriq mavzu

    Download 330.16 Kb.