Academic Research in Educational Sciences Volume 4


Academic Research in Educational Sciences



Yüklə 132,29 Kb.
Pdf görüntüsü
səhifə11/15
tarix07.01.2024
ölçüsü132,29 Kb.
#201223
1   ...   7   8   9   10   11   12   13   14   15
dasturning-siklik-bolimlarini-optimallashtirish (1)

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] 



Yüklə 132,29 Kb.

Dostları ilə paylaş:
1   ...   7   8   9   10   11   12   13   14   15




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin