• Misol
  • Raqamli texnologiyalar vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti qarshi filiali “kompyuter injiniringi” fakulteti




    Download 143,49 Kb.
    bet5/13
    Sana25.05.2024
    Hajmi143,49 Kb.
    #253828
    1   2   3   4   5   6   7   8   9   ...   13
    Bog'liq
    1-amaliy ish

      Bu sahifa navigatsiya:
    • Misol

    parallel_uchun_har bir algoritm


    Parallellik algoritmi ::p arallel_for_each C++ standart kutubxonasi kabi iterativ konteynerdagi vazifalarni parallel ravishda bajaradi. parallel_forAlgoritm bilan bir xil bo'lish mantig'idan foydalanadi .
    Algoritm C++ standart kutubxonasi algoritmiga std::for_each gaparallel_for_each o'xshaydi , bundan tashqari algoritm vazifalarni bir vaqtda bajaradi. Boshqa parallel algoritmlar singari, ular ham muayyan tartibda vazifalarni bajarmaydi.parallel_for_eachparallel_for_each
    parallel_for_eachAlgoritm oldingi iteratorlarda ham, tasodifiy kirish iteratorlarida ham ishlayotgan bo'lsa-da, u tasodifiy kirish iteratorlarida yaxshiroq ishlaydi.

    Misol


    Quyidagi misol algoritmning asosiy tuzilishini ko'rsatadi parallel_for_each. Ushbu misol konsol qiymatlarining har birini std::array obyektida parallel ravishda chop etadi .
    C++Nusxalash
    // parallel-for-each-structure.cpp
    // compile with: /EHsc
    #include

    #include
    #include
    #include


    using namespace concurrency;
    using namespace std;


    int wmain()
    {
    // Create an array of integer values.
    array values = { 1, 2, 3, 4, 5 };


    // Print each value in the array in parallel.
    parallel_for_each(begin(values), end(values), [](int value) {
    wstringstream ss;
    ss << value << L' ';
    wcout << ss.str();
    });
    }
    /* Sample output:
    5 4 3 1 2
    */
    Ushbu misol quyidagi namunaviy chiqishni ishlab chiqaradi:
    Chiqish Nusxalash
    4 5 1 2 3
    parallel_for_eachAlgoritm har bir elementda parallel ravishda ishlaganligi sababli, konsolda qiymatlarni chop etish tartibi boshqacha bo'ladi.
    Algoritmdan qanday foydalanishning to'liq misoli uchun parallel_for_eachqarang : Qanday qilib: parallel_for_each Loop yaratish.

    parallel_invoke algoritmi


    Parallellik algoritmi::p arallel_invoke bir qator vazifalarni parallel ravishda bajaradi. Har bir vazifa bajarilmaguncha qaytib kelmaydi. Ushbu algoritm bir vaqtning o'zida bajarilishi kerak bo'lgan bir nechta mustaqil vazifalar mavjud bo'lganda foydalidir.
    Algoritm parallel_invokebir qator ishchi funktsiyalarni (lambda funktsiyalari, funktsiya ob'ektlari yoki funktsiya ko'rsatkichlari) parametr sifatida oladi. parallel_invokeIkki va o'nta parametrlarni qabul qilish uchun algoritm haddan tashqari yuklangan. O'tkazilgan har bir funktsiya parallel_invokenull parametrlarni qabul qilishi kerak.
    Boshqa parallel algoritmlar singari, parallel_invokeular ham muayyan tartibda vazifalarni bajarmaydi. Vazifalar parallelligi bo'limi parallel_invokealgoritmning vazifalar va vazifa guruhlari bilan qanday bog'liqligini tushuntiradi .

    Misol


    Quyidagi misol algoritmning asosiy tuzilishini ko'rsatadi parallel_invoke. Ushbu misol parallel ravishda uchta mahalliy o'zgaruvchidagi funktsiyani chaqiradi twiceva natijani konsolga chop etadi.
    C++Nusxalash
    // parallel-invoke-structure.cpp
    // compile with: /EHsc
    #include

    #include
    #include


    using namespace concurrency;
    using namespace std;


    // Returns the result of adding a value to itself.
    template
    T twice(const T& t) {
    return t + t;
    }


    int wmain()
    {
    // Define several values.
    int n = 54;
    double d = 5.6;
    wstring s = L"Hello";


    // Call the twice function on each value concurrently.
    parallel_invoke(
    [&n] { n = twice(n); },
    [&d] { d = twice(d); },
    [&s] { s = twice(s); }
    );


    // Print the values to the console.
    wcout << n << L' ' << d << L' ' << s << endl;
    }
    Misol quyidagi natijani beradi.
    Chiqish Nusxalash
    108 11.2 HelloHello

    Download 143,49 Kb.
    1   2   3   4   5   6   7   8   9   ...   13




    Download 143,49 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Raqamli texnologiyalar vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti qarshi filiali “kompyuter injiniringi” fakulteti

    Download 143,49 Kb.