Mavzu: Intel Cilk Plus kutubxonasi bilan tanishish va uning yordamida parallel dasturlar tuzish. Ishning maqsadi
Download 27.55 Kb.
|
6amaliy
- Bu sahifa navigatsiya:
- Mana cilk_spawn
- 2.2. cilk_sync
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 27.55 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling