Blok Krylov Metotları ve geliştirilmekte olan BİM++ (Blok İteratif Metotlar) Paketi Ali Dinler 6 Mart 2008 Matematik Bölüm Semineri 1
Giriş Özet Üç Boyutta Yüksek Hız ve Sıcaklık Gradyanlı Akışkanlar İçin Sıkıştırılabilir Sınır Tabaka Problemi Blok Metotlar Blok Krylov Metotları LAPACK BİM++ Gelecek 2
Giriş Navier-Stokes denklemlerinin ayrılmamış akımlar için sadeleştirilmiş halleri = sınır tabaka denklemleri Neyi Çözüyoruz? Düz levha için Laminar Daimi (Steady- state) Viskoz Sıkıştırılabilir N-S denklemlerini Sonlu Farklar Yüksek sıcaklık ve hız gradyanları durumunda gelen ek terimler ile oluşan yeni sınır tabaka denklemleri 3
Üç Boyutta Sıkıştırılabilir Sınır Tabaka Denklemleri Daimi halde ve dış basınç sabit olduğunda Süreklilik Denklemi X yönünde momentum denk. Y yönünde momentum denk. Enerji Denklemi 4
Yüksek Hız ve Sıcaklık Gradyanlı Akışkanlar İçin Sıkıştırılabilir Sınır Tabaka Denklemleri Süreklilik Denklemi ------------------- X yönünde momentum denk. ------------------- Enerji Denklemi ----------------- 5
Sınır Koşulları 6
Sayısal Ayrıklaştırmalar-I Bunun yerine (m,n-1/2) noktası için fark denklemleri Süreklilik denkleminin açık(explisit) şeması 7
Sayısal Ayrıklaştırmalar-II Kapalı (implisit) Hız ve Sıcaklık Şemaları İki Boyutta Üç Boyutta Anti-simetrik Üçlü Bant Sistem GMRES? Anti-simetrik Beşli Bant Sistem 8
KISACASI Fiziksel Problem KTDD ya da KTDD sistemi Ayrıklaştırma Ax=b ya da AX=B Genellikle A büyük (dim(a)>10^4) ve seyrek (sparse) 9
Blok Metotlar Blok algoritmalar performanslı, tek vektör yerine vektör bloklarını kullanmak performanslı Seyrek (Sparse) Matris Üçlü Bant Sistem! Sadece Köşegen, alt-köşegen ve üstköşegen elemanları kullanarak çözüm Üç Boyutlu durumda? Blok Üçlü Bant Sistem! Alt ve üst-köşegen bloklar köşegen matris! Blok LU ayrışımı, ileri ve geri yok etme 10
A ve C Köşegen Matrisler Blok Eliminasyon-I Matris-Matris çarpımının performansını sadece köşegen elemanları kullanarak arttırabiliriz 11
Benzer şekilde Blok Eliminasyon-II 12
Blok Eliminasyon-III İleri ve geri yoketme ile sonuca ulaşırız İleri Yoketme Bir kere LU ayrışımı yapıldıktan sonra farklı sağ taraflar ile çözmek kolay Geri Yoketme 13
Blok Krylov Krylov Metotları i) Krylov metotları, en genel anlamda, matris-vektör çarpımları ile Ax=b lineer sistemini çözen metotlardır ii) Çözümü Krylov altuzayında arayan metotlardır GMRES, CG, CGS, TFQMR, Bi-CGSTAB Çözüm Krylov altuzayında (arama uzayı ya da muhtemel çözümler uzayı) Teorem: nxn lik tekil olmayan Ax=b lineer sisteminin çözümü m boyutlu Krylov altuzayındadır. (m<=n) Uygun problemler için ÇOK HIZLI çözüm. GMRES (büyük lineer sis. en önemli iteratif yöntem) 14
GMRES Algoritması Blok GMRES-I Krylov altuzayının m boyutlu ortonormal bazını bul (GS Arnoldi) Hessenberg? matisini oluştur (Arnoldi) En küçük kareler problemini çöz (QR) Tek vektörle değil vektör blokları ile Tek sağ taraflı sistem? BGMRES Blok Arnoldi Ortogonal bloklar 15
Blok GMRES-II Uygulamada: BGMRES(m) Direk metotlardan üstün BGMRES e göre daha kötü yakınsar Ortogonalliğin kaybedilmesi Yuvarlama hataları Matris kötü huylu Householder ortogonalleştirmesi Tekrar ortogonalleştirme Biz? 16
BİM++ Yardım edenler: Onur Dinçer, Ali Demirci Simetrik ve simetrik olmayan blok lineer sistemleri çözen iteratif metotlar paketi C/C++ C++ F77 17
Yüksek başarımlı ve kolay kullanılabilir bir paket oluşturmaya Algoritmaları daha kısa ve daha anlaşılır şekilde programlamaya Kullanmak için olabildiğince az programlama bilgisi gerektiren bir paket oluşturmaya Tekrar kullanılabilir, taşınabilir ve kolayca geliştirilebilir bir paket olmasına Windows ortamında çalışabilir bir paket olmasına çalıştık. Bir dokümantasyonu var Bir web sitesi var www2.itu.edu.tr/~dinlera/bimpp PAKET? 18
www.netlib.org/lapack LAPACK Lineer sistem (Ax=b hatta AX=B) Lineer en küçük kareler Özdeğer-özvektör problemleri için F77 dilinde yazılmış açık kaynak kodlu özgür bir kütüphane Yüksek başarımlı Blok matris işlemleri yapıyor (blok matris-matris çarpımı gibi) 1000 nin üzerinde fonksiyon içeriyor Windows a kurulabilir Çok parametreli fonksiyonlardan oluşuyor, örneğin matris-matris çarpımı: call SGEMM(TRANSA,TRANSB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC) 19
LAPACK LINPACK EISPACK LAPACK 20
CoV Sütun Vektör RoV Satır Vektör GeM Genel Matris SyM Simetrik Matris BaM Bant Matris SpM Seyrek (Sparse) Matris CcoV Kompleks Sütun Vektör LAPACK Kullanımı BİM++'ın daha kolay kullanılması için CPPLAPACK e eklemeler yaptık CroV Kompleks Satır Vektör CgeM Kompleks Genel Matris CheM Kompleks Hermityan Matris CbaM Kompleks Bant Matris CspM Kompleks Seyrek (Sparse) Matris tr() qqr() rqr() qr() Matrisin izini bulur QR ayrışımı yapar ve Q matrisini verir QR ayrışımı yapar ve R matrisini verir QR ayrışımı yapar ve Q ve R matrisini verir 21
C++ teknolojisi? CPPLAPACK Kullanımı Algoritma 22
Algoritmalar BİM++, en az programlama bilgisi ile hatta hiç C++ bilgisi gerektirmeden kullanılabilir yüksek başarımlı bir paket Bcg Bbcg Bbicgstab Bgmres Bgmres(m) Blok Conjugate Gradient Metot Blok Bi-Conjugate Gradient Metot Blok Bi-Conjugate Gradient Stabilized Metot Blok Generalized Minimal Residual Blok Generalized Minimal Residual restarted Ayrıntılar için dokümantasyona bakınız. 23
BİM++ Kullanımı GeM A, B; Bcg(A,B,eps,kmax); Bbcg(A,B,B,eps,kmax); Bbicgstab(A,B,B,eps,kmax); Bgmres(A,B); Başlangıç vektörü sıfır vektör alındı B matrisinin üzerine sonucu yazar Blok Krylov Metotları her matris için çalışmaz. Yakınsar Yakınsaklık Problemi! Yavaş Yakınsar Yakınsamaz 24
1. BİM++ ı Windows'ta kullanabilir miyiz? Evet 2. Sorun olursa? dinlera@itu.edu.tr 3. BİM++ ı kullanmak için C++ bilmek gerekiyor mu? Hayır. Her C kodu bir C++ kodudur. C yi kullanın! 4. ATLAS (Automatically Tuned Linear Algebra Software) ı kullanabilir miyiz? Evet 5. Kendimize ait bir kütüphane? Evet Bizim. 25
Gelecek Önkoşullandırıcılar (preconditioners) Çok çekirdekli (Multi-core) sistemler için BİM++ Paralel BİM++ (PBİM++)? 26
Teşekkürler 27