Verimli üç eksenli matris algoritması uygulaması


12

Fiziksel bir problemi örtük sayısal şema kullanarak çözüyorum. Bu beni tridiagonal matris ile doğrusal bir denklemin çözülmesine götürüyor. Ben kodlu ettik bu algoritma Wikipedia'dan. Bu tür bir denklemin optimize edilmiş bir şekilde çözülmesini sağlayan etkili bir kütüphane olup olmadığını merak ediyorum. Önemli bir not, matrisin sadece sistem parametreleri değiştiğinde değişmesidir, bu yüzden güzel bir performans bonusu için bazı algoritma adımlarını önceden hesaplama fırsatım oldu. C ++ kullanıyorum.


Bir sistem ne kadar büyük, paralel olması gerekiyor mu?
aterrel

1
Boyut gerekli doğruluğa bağlıdır (yüz ila on binlerce değer). Şimdi tek çekirdekli bir bilgisayarda kodlama yapıyorum, ancak birçok cpus ile üniversite süper bilgisayarına erişmek mümkün, bu yüzden paralellik desteği iyi olurdu.
GMK

Yanıtlar:


15

Muhtemelen LAPACK uygulamasıyla başlamalısınız,? Gtsv, örneğin, dgtsv . Dağıtılmış bellek sürümü istiyorsanız, ScaLAPACK'in p? Gtsv ile başlamak isteyebilirsiniz.

DÜZENLEME: Matrisiniz çok sık değişmediği için, LAPACK rutin? Gtsv'sini çarpanlara ayırma adımına,? Gttrf ve çözme aşamasına,? Gttr'lere bölerek tridiagonal matrisi fazladan çarpanlara ayırmayı önleyebilirsiniz. ScaLAPACK'de aynı amaca hizmet eden benzer şekilde adlandırılmış rutinler vardır.


Teşekkür ederim, ihtiyacım olan şey gibi görünüyor. Şimdi bu rutinleri kodumdan çalıştırmayı deneyeceğim.
'23

1
C ++ 'dan çağırdığınızdan, bir "C" {} bloğunun içindeki prototipi bildirdiğinizden emin olun. Sisteminize bağlı olarak, rutin isme bir alt çizgi eklemeniz gerekebilir.
Jack Poulson

2

Dağıtılmış paralel sistemler için : Çevrimiçi örneklerin bulunduğu paralel üçgen çözücüye sahip ScaLAPACK'i denemedim . Bir LANL yayınında David Moulton tarafından önerilen bir yöntemi başarı ile denedim . Bunu kodlamak, yapmak istediğinizden daha fazla olabilir, ancak LAPACK kullanarak, ileriye doğru boğulur.


1

Burada 975'te ilginç bir özyinelemeli algoritma buldum. Umut verici görünüyor, daha deneyimli insanların bunun hakkında ne söylediğini merak ediyorum.


Sayısal Tarifler içinde bazı hatalar var. Kullanılacak kod kaynağı açısından, bazıları klasik olarak kabul etse de, en iyisi değildir. ScaLAPACK en azından özyineli döngüsel azaltma kadar etkili bir algoritma uygulamadıysa şaşırırdım.
Geoff Oxberry
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.