Ana içeriğe geç
Programlama

Futhark nadir bir taşma hatasını düzeltmek için tüm bölme işlemlerini yavaşlattı

Öne çıkanlar

  • Futhark, işaretli tamsayı bölmelerindeki tanımsız davranışı gidermek için çalışma zamanı koduna dallanma ekledi.
  • GPU üzerinde koşan sentetik testlerde çalışma süresi 5.548 mikrosaniyeden 12.592 mikrosaniyeye çıktı.
  • Genel GPU kıyaslama testlerinde ve sıralı CPU kodunda ölçülebilir bir performans kaybı görülmedi.

Futhark programlama dili geliştiricileri, ikiye tümleyen tamsayı temsilindeki asimetriden kaynaklanan nadir bir taşma hatasını gidermek için çalışma zamanı sisteminde değişikliğe gitti. 32 bitlik işaretli tamsayılarda en küçük negatif sayının -1 değerine bölünmesi, pozitif karşılığı temsil edilemediği için C dilinde tanımsız davranışa yol açıyordu. Geliştirici ekip, x86 mimarisinde programın çökmesine de neden olabilen ve 2⁶⁴ olasılıkta bir görülen bu durumu engellemek amacıyla bölme fonksiyonuna koşullu bir kontrol ekledi.

Yeni uygulamada bölenin -1 olup olmadığı her işlemde denetleniyor ve gerekirse işlem işaretsiz tamsayı aritmetiğiyle tamamlanıyor. Yapılan bu değişiklik, Futhark'ın genel GPU kıyaslama testlerinde belirgin bir performans kaybı yaratmadı. İşaretli tamsayı bölmelerinin gerçek senaryolarda nadir kullanılması ve bellek gecikmelerinin hesaplama maliyetini gizlemesi genel sistem başarımının korunmasını sağladı.

Özel olarak hazırlanan ve işlemciyi yalnızca bölme işlemleriyle zorlayan sentetik testlerde ise durum farklılık gösterdi. Sıralı C kodu modern CPU dallanma tahmin mekanizmaları sayesinde fark edilir bir yavaşlama yaşamazken, CUDA arka ucundaki sentetik test süresi 5.548 mikrosaniyeden 12.592 mikrosaniyeye yükseldi. Benzer bir yavaşlama HIP arka ucuyla AMD grafik işlemcilerinde de gözlendi. Geliştiriciler, hız kaybına rağmen tanımsız davranışların kabul edilemeyeceğini bildirdi.

Kaynak

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