Döngü bölme - Loop splitting

Döngü bölme bir derleyici optimizasyonu tekniği. Basitleştirmeye çalışır döngü veya bağımlılıkları aynı gövdelere sahip olan ancak dizin aralığının farklı bitişik bölümleri üzerinde yineleyen birden çok döngüye bölerek ortadan kaldırın.

Döngü soyma

Döngü soyma, herhangi bir sorunlu ilk (veya son) birkaç yinelemeyi döngüden ayıran ve bunları döngü gövdesinin dışında gerçekleştiren özel bir döngü bölme durumudur.

Şöyle bir döngü yazıldığını varsayalım:

 int p = 10; için (int ben=0; ben<10; ++ben) {   y[ben] = x[ben] + x[p];   p = ben; // p değişkenine i ekle }

Dikkat edin p = 10 yalnızca ilk yineleme ve diğer tüm yinelemeler için, p = i - 1. Bir derleyici bundan yararlanarak gevşeme döngüden ilk iterasyonu (veya "soyma").

İlk yinelemeyi soyduktan sonra, kod şöyle görünecektir:

 y[0] = x[0] + x[10]; için (int ben=1; ben<10; ++ben) {   y[ben] = x[ben] + x[ben-1]; }

Bu eşdeğer form, değişken ihtiyacını ortadan kaldırır p döngü gövdesinin içinde.

Döngü soyma tanıtıldı gcc 3.4 sürümünde. GCC 7'de daha genelleştirilmiş döngü bölme eklendi.[1]

Terimin kısa tarihi

Görünüşe göre bu terim ilk kez Cannings, Thompson ve Skolnick tarafından kullanılıyordu.[2] (insan) kalıtım için hesaplamalı modeller hakkındaki 1976 makalesinde. Orada terim, fenotipik bilgileri ebeveynlere çökertmek için bir yöntemi belirtmek için kullanıldı. Oradan bu terim, karmaşık soyağacları üzerindeki olasılık fonksiyonları hakkındaki ufuk açıcı makaleleri de dahil olmak üzere makalelerinde yeniden kullanıldı.[3]

Derleyici teknolojisinde terim ilk olarak 1980'lerin sonlarında VLIW ve süperscalar derleme hakkındaki makalelerde ortaya çıktı. [4] ve.[5]

Referanslar

  1. ^ https://gcc.gnu.org/gcc-7/changes.html
  2. ^ Cannings, C .; Thompson, E. A .; Skolnick, H.H. (1976). "Karmaşık şecerelerde olasılıkların özyinelemeli türetilmesi". Uygulamalı Olasılıktaki Gelişmeler. 8 (4): 622–625. doi:10.2307/1425918.
  3. ^ Cannings, C .; Thompson, E. A .; Skolnick, H.H. (1978). "Karmaşık şecerelerde olasılık fonksiyonları". Uygulamalı Olasılıktaki Gelişmeler. 10 (1): 26–61. doi:10.2307/1426718.
  4. ^ Callahan, D .; Kennedy, Ken (1988). "Dağıtılmış Hafızalı Çok İşlemciler için Program Derleme". Süper Hesaplama Dergisi. 2 (2): 151–169. doi:10.1007 / BF00128175.
  5. ^ Mahlke, S. A .; Lin, D. C .; Chen, W. Y .; Hank, R. E .; Bringman, R.A. (1992). Hiper blok kullanarak önceden belirlenmiş yürütme için etkili derleyici desteği. 25. Uluslararası Mikromimarlık Sempozyumu. s. 45–54.

daha fazla okuma