Ana içeriğe geç
Programlama

Kayan nokta hileleriyle CLZ ve CTZ vektörleştirildi

Öne çıkanlar

  • Kayan nokta üs alanları logaritmik özellik gösterdiği için clz ve ctz hesaplamasında kullanılabiliyor.
  • Hazırlanan yöntem AVX2 destekli x86 işlemcilerde vektörel sıfır sayımını mümkün kılıyor.
  • 64 bitlik veriler için arama tablosu ve vpsadbw komutuyla alternatif bir ctz algoritması geliştirildi.

Yazılımcı purplesyringa, modern işlemcilerde bulunan ve tamsayıların başındaki ya da sonundaki sıfır bitlerini sayan clz ile ctz komutlarını vektörleştiren yeni yöntemler geliştirdiğini duyurdu. Geliştirici, üzerinde çalıştığı FPU öykünücüsü sırasında kayan nokta hesaplamalarının üs alanını logaritma gibi kullanarak bu komutları SIMD komut setleriyle paralel hale getirdi.

Geliştirilen ilk teknikte IEEE 754 kayan nokta biçiminin üs özellikleri kullanılıyor. Değerler çift duyarlıklı (f64) sayılara dönüştürülüp belirli kayan nokta sabitleriyle işleme sokulduğunda, üs alanındaki kaydırma ve çıkarma işlemleri doğrudan sıfır sayısını veriyor. Yöntem, AVX-512 desteği bulunmayan eski veya standart AVX2 destekli x86 işlemcilerde de vektörel bit sayımına olanak tanıyor.

Araştırmanın ilerleyen aşamalarında Nikolay Malkovsky ve arya dradjica'nın katkılarıyla de Bruijn dizileri ve arama tabloları (LUT) içeren alternatifler de denendi. Özellikle 64 bitlik tam sayılar için vpshufb ve vpsadbw komutlarından yararlanan arama tablosu tabanlı yöntem, vektörleşmiş bit sayma operasyonları için yeni bir alternatif oluşturdu.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.