• Bajardi: S.Omonov Qabul qildi: Sh. Muqimov 6-Amaliy ishi. Mavzu
  • Mana cilk_spawn
  • 2.2. cilk_sync
  • Fanidan 6 – Amaliy ishi Bajardi: S. Omonov Qabul qildi: Sh. Muqimov




    Download 57,52 Kb.
    Sana02.12.2023
    Hajmi57,52 Kb.
    #109515
    Bog'liq
    6-amaliy ishi.Omonov Sarvar




    O’ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALAR
    VAZIRLIGI
    MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
    QARSHI FILIALI




    KOMPYUTER INJINIRINGI FAKULTETI
    K I-11-20 GURUH TALABASINING

    Parallel ishlov berish

    FANIDAN


    6 – Amaliy ishi

    Bajardi: S.Omonov

    Qabul qildi: Sh. Muqimov

    6-Amaliy ishi.
    Mavzu: Intel Cilk Plus kutubxonasi bilan tanishish va uning yordamida parallel dasturlar tuzish.
    Ishning maqsadi: ntel Cilk Plus kutubxonasi bilan tanishish va uning yordamida parallel dasturlar tuzish haqida tushunchaga ega bulish va bajarish.
    Intel Cilk Plus - bu ko'p bosqichli dasturlarni yozishni soddalashtirish uchun mo'ljallangan C++ tilining kengaytmasi . Cilk Plus - bu dinamik mavzuni rejalashtiruvchi va kompilyatorga ma'lum bir rejalashtirish sxemasidan foydalanish imkoniyati haqida gapiradigan kalit so'zlar to'plami. ICC kompilyatori uchun Cilk Plus qo'llab-quvvatlashi amalga oshirildi .
    Cilk Plus va ish vaqtini qo'llab-quvvatlash kutubxonasi ABI uchun texnik xususiyatlar Intel tomonidan 2010 yilda nashr etilgan [1]
    2011 yil avgust oyida Intel bepul GCC kompilyatorining 4.7 filialiga va BSD3 litsenziyasi ostida ish vaqtini qo'llab-quvvatlash kutubxonasining ochiq manba kodiga Cilk Plus buyruqlari qo'shilganligini e'lon qildi 

    Mana cilk_spawn dan aniqroq foydalanish . Quyidagi misolda biz “Salom dunyo!” xabarini chop qilmoqchimiz. va keyin "Bajarildi!" dastur tugashidan oldin. Kodni bir necha marta ishga tushiring.

    #include
    #include

    static void hello(){
    int i=0;
    for(i=0;i<1000000;i++)
    printf("");
    printf("Hello ");
    }

    static void world(){
    int i=0;
    for(i=0;i<1000000;i++)
    printf("");
    printf("world! ");
    }

    int main(){
    cilk_spawn hello();
    cilk_spawn world();
    printf("Done! ");
    }

    #include
    #include

    using namespace std;

    static void hello(){
    for(int i=0;i<1000000;i++)
    cout << "";
    cout << "Hello " << endl;
    }

    static void world(){
    for(int i=0;i<1000000;i++)
    cout << "";
    cout << "world! " << endl;
    }

    int main(){
    cilk_spawn hello();
    cilk_spawn world();
    cout << "Done! ";
    }
    Ehtimol siz payqagan narsa shundaki, xabarlar ko'pincha tartibsiz chop etiladi. Buning sababi, cilk_spawn ularni asinxron tarzda ishga tushiradi. Hello() va world() funksiyalarining har biri ichida tsikllar bo'lgani uchun "Bajarildi!" ba'zan hello() , world() yoki ikkalasidan oldin chop etishi mumkin . E'tibor bering, biz dastur uchun qo'shimcha ishlarni yaratish uchun tsikllardan foydalanganmiz - agar siz tsikllarni olib tashlasangiz, bayonotlar tartibda chop etiladi, ya'ni cilk_spawn quvvatidan to'liq foydalanish uchun sizga katta hajmdagi ish kerak bo'ladi.

    2.2. cilk_sync
    Oldingi misolni ko'rib chiqsangiz, parallel ravishda ishlarni bajarishning ba'zi nojo'ya ta'sirlarini ko'rishingiz mumkin - vazifalar ko'pincha tugaydi. Ba'zan siz ba'zi vazifalarni tartibda bajarilishini xohlaysiz, chunki ular bir-biriga bog'liq bo'lishi mumkin, bu holda siz cilk_sync dan foydalanasiz .

    Agar siz cilk_sync kodini kodning biror joyiga joylashtirsangiz, bu dastur davom etishi uchun avval yaratilgan barcha vazifalar bir-birini bajarishini kutishiga olib keladi. Oldingi "Salom dunyo! Bajarildi!" Masalan, bitta cilk_sync iborasini "Bajarildi!" chop etilgan bo'lsa, "Bajarildi!" hello() va world() lar o'z ishini tugatgandan keyingina chop etiladi .


    #include
    #include

    .
    .
    .

    int main(){
    cilk_spawn hello();
    cilk_spawn world();
    cilk_sync;
    printf("Done! ");
    }

    Download 57,52 Kb.




    Download 57,52 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Fanidan 6 – Amaliy ishi Bajardi: S. Omonov Qabul qildi: Sh. Muqimov

    Download 57,52 Kb.