• Amaliyot darsidagi mashqlar
  • Mashq Tafsilotlari
  • Vektorlarni qoshish
  • Mavzu: Vektorlash Usullari Vektorlash (vectorization)




    Download 362,01 Kb.
    Sana09.10.2024
    Hajmi362,01 Kb.
    #274338
    Bog'liq
    6-Amaliyot Matyakubov Odamboy


    912.21-guruh talabasi Matyakubov Odamboy.

    6-Amaliyot


    Mavzu: Vektorlash Usullari
    Vektorlash (vectorization) — parallel kompyuter arxitekturasida ma'lumotlarni bir vaqtning o'zida bir nechta elementlar bilan ishlash imkonini beruvchi dasturlash texnikasidir. Bu usul kompyuterning hisoblash quvvatini oshirish va dastur samaradorligini yaxshilash maqsadida qo'llaniladi.
    Ma'lumotlarni parallel ishlash: Vektorlash, odatda, ma'lumotlar to'plamlarini bir vaqtning o'zida qayta ishlash imkonini beradi. Bu, masalan, vektorlar (bir o'lchovli massivlar) yoki matritsalar (ikki o'lchovli massivlar) bilan ishlaganda juda muhimdir.
    import numpy as np
    # Ikki vektorni yig'ish
    a = np.array([1, 2, 3, 4])
    b = np.array([5, 6, 7, 8])
    c = a + b # Natija: array([ 6, 8, 10, 12])
    Vektorlash — parallel hisoblash va samaradorlikni oshirishda muhim vosita. U ma'lumotlar bilan ishlashni soddalashtirib, hisoblash jarayonini tezlashtiradi. Vektorlashni to'g'ri qo'llash orqali dastur samaradorligini sezilarli darajada oshirish mumkin
    Amaliyot darsidagi mashqlar
    Mashq 1: Soddalashtirilgan vektorlash
    Talabalarga ikki vektorni qo'shishni amalga oshirish vazifasini bering. Har bir talaba o'z vektorlarini yaratishi va ularni qo'shishi kerak.
    Mashq 2: SIMD qo'llash
    Talabalarga SIMD usuli yordamida bir xil operatsiyani (masalan, vektor elementlarini ko'paytirish) bajarishni taklif eting. Talabalar har bir element uchun bitta operatsiya bajarishi va natijani chiqarishi kerak.
    Mashq 3: OpenMP bilan parallel dasturlash
    Talabalarga OpenMP yordamida oddiy dastur yozishni so'rang. Masalan, massivning barcha elementlarini 2 ga ko'paytirish. Har bir talaba o'z dasturini yozadi va uning samaradorligini o'lchaydi.
    Mashq 4: CUDA dasturlash
    Agar laboratoriya imkoniyatlari mavjud bo'lsa, talabalarga CUDA yordamida vektorlarni ko'paytirish dasturini yozishni taklif eting. Bunda, talabalarga GPU resurslaridan qanday foydalanishni tushuntirish kerak.
    Mashq Tafsilotlari
    Vektorlarni tayyorlash:
    Har bir talaba o'z dasturida ikkita vektor yaratadi. Har bir vektor 1000000 elementdan iborat bo'ladi.
    Vektorlarning birinchi elementi 1 dan boshlanadi va har bir keyingi element 1 ga oshadi (ya'ni, birinchi vektor [1, 2, 3, ..., 1000000] va ikkinchi vektor [1, 2, 3, ..., 1000000] bo'ladi).
    Vektorlarni qo'shish:
    Har bir talaba ikki vektorni qo'shishi va natijaviy vektorni hosil qilishi kerak. Bunda natijaviy vektorning har bir elementi ikki vektordagi mos elementlarning yig'indisi bo'lishi kerak.
    Parallel Dasturlash:
    Talabalar OpenMP kutubxonasidan foydalanib, vektorlarni parallel ravishda qo'shishni amalga oshiradilar.
    #include
    #include
    #define SIZE 1000000
    int main() {
    int a[SIZE], b[SIZE], c[SIZE];
    // Vektorlarni to'ldirish
    for (int i = 0; i < SIZE; i++) {
    a[i] = i + 1;
    b[i] = i + 1;
    }
    // Parallel qo'shish
    #pragma omp parallel for
    for (int i = 0; i < SIZE; i++) {
    c[i] = a[i] + b[i];
    }
    // Natijani chiqarish
    printf("c[0] = %d, c[999999] = %d\n", c[0], c[SIZE-1]);
    return 0;
    }
    1-misol
    Talabalarga ikki vektorni qo'shishni amalga oshirish vektorlarini yaratishi va ularni qo'shishildi.

    2- misol
    vektor elementlarini ko'paytirish

    Download 362,01 Kb.




    Download 362,01 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Mavzu: Vektorlash Usullari Vektorlash (vectorization)

    Download 362,01 Kb.