• pragma omp master Quyidagi misolda master direktivasining ishlashi keltirilgan. n
  • Qayta tayyorlash va ularning malakasini oshirishni tashkil etish bosh ilmiy-metodik markazi




    Download 26,13 Mb.
    Pdf ko'rish
    bet587/593
    Sana27.05.2024
    Hajmi26,13 Mb.
    #254636
    1   ...   583   584   585   586   587   588   589   590   ...   593
    Bog'liq
    01 YANGI O‘ZBEKISTON

    omp_in_parallel()
    funksiyasi 1 qiymatni qaytaradi, agar aktiv holatdagi 
    parallel muhitdan chaqirilgan bо‘lsa.
    Quyidagi misolda 
    omp_in_parallel()
    funksiyasi qо‘llanilgan. mode 
    funksiyasi qaysi muhitdan chaqirilishiga qarab, “parallel muhit” yoki “ketma - ket 
    muhit” qatorlarini chop etishda qо‘llaniladi. 
    #include "stdafx.h" 
    #include  
    using namespace std; 
    void mode(void){ 
    if(omp_in_parallel()) 
    cout<<”parallel muhit"; 
    else 
    cout<<”ketma - ket muhit"; 

    int
    _tmain(
    int
    argc, _TCHAR* argv[]) 



    93 
    mode(); 
    #pragma omp parallel 

    #pragma omp master 

    mode(); 
    }} 
    return 0;

    C/C++ dasturlash tillarida yuqoridagi barcha shartlar 
    single 
    direktivasi bilan 
    birgalikda ye’lon qilinadi. 
    Dasturning belgilangan qismini qaysi oqim bajarishi tavsiflanmaydi. Agarda 
    nowait
    sharti e’lon qilinmasa, bitta oqim belgilangan fragmentni bajaradi, qolgan 
    oqimlar uning ishini tugashini kutib turadi. 
    single 
    direktivasi umumiy о‘zgaruvchilar 
    bilan ishlaganda kerak. 
    Master direktivasi kodning ma’lum bir qismini faqat bosh oqim bajarishi 
    uchun belgilaydi. Qolgan oqimlar ushbu qismni о‘tkazib yuborishadi va undan 
    quyida turgan operator bilan dasturni ishlashini davom ettiradi. Ushbu direktivada 
    sinxronizatsiya amalga oshirilmaydi. C/C++ dasturlash tilida direktiva quyidagicha 
    e’lon qilinadi: 
    #pragma omp master
    Quyidagi misolda master direktivasining ishlashi keltirilgan. 
    n
    о‘zgaruvchi 
    lokal hisoblanib, har bir oqim о‘zining nusxalari bilan ishlaydi. Dastavval barcha 
    oqimlar n о‘zgaruvchiga 1 qiymatini о‘zlashtirishadi. Sо‘ngra bosh oqim n 
    о‘zgaruvchiga 2 qiymatini о‘zlashtiradi va barcha oqimlar ushbu qiymatni ekranga 
    chop etadi. Misolda kо‘rinib turibdiki, master direktivasini har doim bitta oqim 
    bajaradi. Ushbu misolda barcha oqimlar 1 sonini ekranga chiqarsa, bosh oqim 
    dastlab 2 sonini, sо‘ngra esa 3 sonini ekranga chop etadi: 
    #include "stdafx.h" 
    #include  
    using namespace std; 
    int
    _tmain(
    int
    argc, _TCHAR* argv[]) 

    int n; 
    #pragma omp parallel private(n) 

    n=1; 
    #pragma omp master 

    n=2; 


    94 

    cout<<”n ning birinchi qiymati: “<< n; 
    #pragma omp barrier 
    #pragma omp master 

    n=3; 

    cout<
    return 0; 
    }
    Quyidagi misolda 
    private
    shartini ishlashi keltirilgan. Ushbu misolda parallel 
    muhitda n о‘zgaruvchi lokal о‘zgaruvchi sifatida e’lon qilingan. Bu har bir oqimning 
    n ning nusxlari bilan ishlashini bildiradi va har bir oqimning boshida n о‘zgaruvchi 
    initsializatsiya qilinadi. Dasturning bajarilish vaqtida n о‘zgaruvchining qiymati 
    tо‘rtta turli xil joylarda chop etiladi. Birinchi marta n о‘zgaruvchining qiymati 1 ga 
    о‘zlashtirilgandan keyin ketma - ket muhitda chop etiladi, ikkinchi marta barcha 
    oqimlar n о‘zgaruvchining nusxasini parallel muhitning boshida chop etadi. Keyin 
    barcha oqimlar о‘zining tartib nomerini 

    Download 26,13 Mb.
    1   ...   583   584   585   586   587   588   589   590   ...   593




    Download 26,13 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Qayta tayyorlash va ularning malakasini oshirishni tashkil etish bosh ilmiy-metodik markazi

    Download 26,13 Mb.
    Pdf ko'rish