Academic Research in Educational Sciences Volume 4 | Issue 5 | 2023 ISSN: 2181-1385 ISI: 0,967 | Cite-Factor: 0,89 | SIS: 1,9 | ASI: 1,3 | SJIF: 5,771 | UIF: 6,1 sa 521 May, 2023 https://t.me/ares_uz Multidisciplinary Scientific Journal “create_vector_operation” funksiyasi (kodda ko'rsatilmagan) elementlarning bir
qismini vektor operatsiyasiga aylantirish jarayonini ifodalovchi to'ldiruvchidir. Ushbu
operatsiya vektorlashtirilgan ko'rsatmalar yoki vektorizatsiyaga xos kutubxonalardan
foydalanishni o'z ichiga olishi mumkin.
Natijada “vektor_op” vektor operatsiyasi keyin “new_loop_body” ga
qo'shiladi.
Loopdan keyin “loop_body” dan qolgan statementlar “new_loop_body” ga qo'shiladi.
Nihoyat, funktsiya vektorlashtirishni optimallashtirish qo'llanilgandan so'ng tsikl
tanasini ifodalovchi “new_loop_body” ni qaytaradi. [3]
9.
Loop Tiling. Ma'lumotlar joylashuvini yaxshilash va kesh o'tkazib
yuborilishini kamaytirish uchun katta halqani keshga mos keladigan kichikroq
halqalarga ajratadi.
Bu yerda
Loop Tiling uchun umumiy code:
Ushbu kodda “tile_loop” funksiyasi ikkita parametrni oladi: original halqa
tanasini ifodalovchi “loop_body” va har bir tile hajmini belgilaydigan “tile_size”
Funktsiya ichida tilelar soni (num_tiles) “loop_body” uzunligini “tile_size” ga bo‟lish
yo'li bilan hisoblanadi. Bu hosil bo'lishi mumkin bo'lgan to'liq tilelar sonini aniqlaydi
Yangi sikl tanasini tile bilan saqlash uchun “tiled_loop_body” deb nomlangan yangi
ro'yxat yaratiladi.
Tsikl 0 dan „num_tiles‟ oralig'ida takrorlanadi. Har bir tile uchun boshlang'ich
va tugatish indekslari „tile_size‟ asosida aniqlanadi. Joriy tilega mos keladigan
statementlar slicing yordamida “loop_body” dan chiqariladi.
Chiqarilgan tile statementlari har bir statementni alohida-alohida yangi sikl tanasiga
qo'shadigan kengaytirish funksiyasi yordamida “tiled_loop_body” ga qo'shiladi.
Tsikldan so'ng, to'liq tile hosil qila olmagan qolgan barcha statementlar
“tiled_loop_body” ga qo'shiladi.
Va nihoyat, funktsiya „tiled_loop_body‟ qiymatini qaytaradi, bu esa tile qo'yish
optimallashtirish qo'llanilgandan so'ng tsikl tanasini ifodalaydi.
def
tile_loop (loop_body, tile_size):
num_tiles = len(loop_body) // tile_size
# tilelar bilan yangi sikl tanasini yaratish
tiled_loop_body = []
for tile_idx in range(num_tiles):
# Oldingi tile uchun boshlang‟ich va oxirgi indexlarni aniqlash
start_idx = tile_idx * tile_size
end_idx = (tile_idx + 1) * tile_size
tile_statements = loop_body[start_idx:end_idx]