Tek ve çift kayan nokta hassasiyeti


13

Tek hassasiyetli kayan nokta sayıları hafızanın yarısını kaplar ve modern makinelerde (GPU'larda bile) çift hassasiyetle karşılaştırıldığında neredeyse onlarla iki kat daha hızlı işlem yapılabilir. Sadece bulduğum birçok FDTD kodu tek duyarlıklı aritmetik ve depolama kullanır. Büyük ölçekli seyrek denklem sistemlerini çözmek için tek bir hassasiyetin ne zaman kabul edilebilir olduğuna dair bir kural var mı? Matris durum numarasına büyük ölçüde bağlı olması gerektiğini varsayıyorum.

Ayrıca, gerektiğinde çifte kesinlik kullanan ve çifte kesinlik gerekmeyen yerlerde tek etkili bir teknik vardır. Örneğin, bir matris vektör çarpımı veya bir vektör nokta ürünü için, sonuçları çift kesinlikli bir değişkente (iptal hatasını önlemek için) toplamak iyi bir fikir olabilir, ancak tek tek girişlerin birbiriyle çarpılması tek hassasiyet kullanılarak çoğaltılabilir.

Modern FPU'lar sorunsuz bir şekilde tek hassasiyetten (şamandıra) çift hassasiyete (çift) ve tersi yönde dönüşüm sağlıyor mu? Yoksa bu maliyetli işlemler mi?

Yanıtlar:


7

Önemsiz tüm problemler için (yani, performansın önemli olduğu durumlar için) sahip olduğunuz belleğin neredeyse tamamı matriste ve vektörlerde nispeten az olacaktır. Örneğin, Stokes denklemi için 3d Taylor-Hood öğeleri için, matristeki satır başına birkaç yüz öğeniz vardır ve bu, vektörler için gereken bellek miktarından büyük ölçüde ağır basar. Böylece matrisi yüzer ve vektörleri iki katına saklama fikri ile oynadık. Zamanlama sonuçlarımızı hatırlamıyorum ama yuvarlama vb. İle ilgili herhangi bir sorun görmediğimizi biliyorum. Bu yüzden bu yaklaşım kesinlikle işe yarıyor.


Teşekkürler, Prof. Bangerth. Yinelemeli matris çözücülere ne dersiniz? Matris-vektör ürünleri için çifte kesinlik veya çarpma için vektör ögelerini teke, birikim için ikiye yükselir misiniz?
Costis

Tabii ki yinelemeli çözücülerden bahsediyordum. Tüm vektörleri çift kesinlikte yapıyoruz (çünkü önemli değil), bu nedenle dst = matrix src işlemi double = float double olarak gerçekleşir. Daha sonra birikim çift kesinlikte gerçekleşir, ancak gerçekten önemli olursa çok şaşırırdım.
Wolfgang Bangerth

Orada bir yerde (belki de yirmi yıl öncesine kadar) nokta ürünlerinin çifte hassasiyetten daha yüksek yapılması gerektiğini gösteren bir kağıt var. Referansı kullanışlı değil, ama daha sonra bulabilir miyim göreceğim.
Bill Barth

Evet, bu beni şaşırtmaz. Bu da yaptığımızla eşleşiyor.
Wolfgang Bangerth

Nokta ürünler için dört hassasiyet mi kullanıyorsunuz? Eğer öyleyse, havalı! Bunu bir kütüphanede kimsenin yaptığını duymamıştım.
Bill Barth


3

Benim tavsiyem, tek kesinlik (şamandıra) kullanıldığında karar için esas olarak bellek tüketimine odaklanmak olacaktır. Bu yüzden bir FDTD hesaplaması için toplu veriler float kullanmalıdır, ancak problem tanımının kendisini (geometri, malzeme parametreleri, uyarma koşulları gibi) ve ilgili tüm meta verileri çift olarak tutarım.

Tüm performansı eleştirel olmayan ve derinlemesine analiz edilmeyen hesaplamaları iki katına çıkarırdım. Özellikle, çokgen veriyi ve geometrinin diğer tanımını ikiye (belki de tamsayı) iki katta tutacağım, çünkü deneyim teorinizde mümkün olsa bile, kodunuzun hesaplama geometrik parçalarını asla tam olarak sağlamlaştırmayacağınızı söyler.

İkide tutacağım üçüncü bir kısım, simetrik olmayan özdeğer ayrışımlarını kullanan kısayollar dahil olmak üzere analitik hesaplamalardır. Örnek olarak, parçalı olarak tanımlanmış bir dönel simetrik 2D fonksiyonum var ve Fourier dönüşümüne ihtiyacım var. FFT'leri ve "verimli" elde etmek için uygun "analitik düşük geçişli filtreleri" içeren çeşitli sayısal yollar olacaktır. Performansı kritik olmadığı için, bunun yerine Bessel işlevlerini içeren "kesin" bir analitik ifade kullandım. Bu başlangıç ​​için bir kısayol olduğundan ve karmaşık formülümün hata yayılımını analiz etmek için hiçbir zaman harcamadığım için, bu hesaplama için çift kesinlik kullanmalıyım. (Yine de formül için analitik eşdeğer ifadelerin yalnızca bir kısmının kullanılabilir olduğu ortaya çıktı,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.