GPGPU hesaplaması için doğrusal çözücü seçimi (OpenCL)


10

Konjugat Gradyan yöntemini kullanarak GPU ve OpenCL kullanarak ısı transferi sorunlarını çözmek için Sonlu Elemanlar Yönteminin çalışan bir çözümünü geliştirdim. Bu yöntemin ana dezavantajı, bellek için yüksek taleptir. Ayrıca, grafik kartlarında bellek genellikle çok sınırlıdır. İki seçenek görüyorum:

  1. Alt alan adları oluşturun ve ağın ana bilgisayar belleğiyle parçaları değiştirin
  2. Multifrontal yöntemler kullanın

Belirli mimariyi dikkate almak zorundayım. Değiştirme çok pahalı olabilir. CG yöntemi, GPGPU hesaplama bağlamında popülerdir, ancak CG ve multifrontal yöntemler (GPGPU durumunda) arasında herhangi bir karşılaştırma bulamıyorum. Multifrontal yöntem CG'den daha hızlı olabilir mi? Bu genel bir sorudur, aslında hala uygulamaya bağlıdır.


2
FEM kodundaki matrislerin global montajını yapıyor musunuz? veya matrissiz uygulamalar kullanıyor musunuz? (yani matrislerin açık oluşumu yok)
Allan P. Engsig-Karup

3
Hangi önkoşul kullanıyorsunuz ve alan adı nasıldır? İyi bir algoritma kullanan on yaşındaki bir masaüstü, boktan bir algoritma kullanarak bir GPU kümesini yenecek.
Jed Brown

Altı yüzlü veya basit kafesler mi kullanıyorsunuz? Bellek bir sorunsa ve tensör ürün temelli işlevlere sahip onaltılık öğeler kullanıyorsanız, bazı durumlarda yalnızca 1D operatörlerini kaydederek ve matrissiz bir uygulama (Allan'ın belirttiği gibi) kullanarak bellek tasarrufu yapabilirsiniz.
Jesse Chan

Yanıtlar:


2

Ben LibGeoDecomp'ta proje lideriyim , bu yüzden içeri girebileceğimi düşündüm.

Evet, LibGeoDecomp ile bir FEM uygulayabilirsiniz. Şu anda tam olarak bu kullanım durumu için geliştirilmiş bir veri kapsayıcısı üzerinde çalışıyoruz. Ama dürüst olmak gerekirse: bu çalışmanın tamamlanması hala aylar sürüyor ve o zamana kadar performans optimum olmayacak. Hala LibGeoDecomp'ı denemek istiyorsanız, e-posta yoluyla benimle iletişime geçmekten çekinmeyin .

Başka bir seçenek , düzensiz problemler için iyi optimize edilmiş çözücülere sahip Fenics olacaktır . Ama AFAIK bu durumda kendi çözücünüzü yazamazsınız.


1

Size yardımcı olup olmadığını bilmiyorum. Burada, özelleştirilebilir alan ayrıştırma tekniklerini (siteden) kullanan bir araç olan libgeodecomp'a bir bağlantı bulacaksınız . Bildiğim kadarıyla GPU'larla kullanılabilir. Sana yardım ederse, bana oy ver ;-)

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.