Blok Krylov Metotları ve geliştirilmekte olan BİM++ (Blok İteratif Metotlar) Paketi Ali Dinler 6 Mart 2008 Matematik Bölüm Semineri 1 Özet Giriş Üç 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 Blok Eliminasyon-I A ve C Köşegen Matrisler Matris-Matris çarpımının performansını sadece köşegen elemanları kullanarak arttırabiliriz 11 Blok Eliminasyon-II Benzer şekilde 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 Blok GMRES-I GMRES Algoritması 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 PAKET? 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 18 LAPACK www.netlib.org/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 LAPACK Kullanımı BİM++'ın daha kolay kullanılması için CPPLAPACK’e eklemeler yaptık CoV Sütun Vektör RoV Satır Vektör CroV Kompleks Satır Vektör CgeM Kompleks Genel Matris GeM Genel Matris SyM Simetrik Matris BaM Bant Matris SpM Seyrek (Sparse) Matris CheM Kompleks Hermityan Matris CbaM Kompleks Bant Matris CspM Kompleks Seyrek (Sparse) Matris CcoV Kompleks Sütun Vektör tr() Matrisin izini bulur qqr() QR ayrışımı yapar ve Q matrisini verir rqr() QR ayrışımı yapar ve R matrisini verir qr() QR ayrışımı yapar ve Q ve R matrisini verir 21 CPPLAPACK Kullanımı C++ teknolojisi? 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 Blok Conjugate Gradient Metot Blok Bi-Conjugate Gradient Metot Bbicgstab Bgmres Blok Bi-Conjugate Gradient Stabilized Metot Blok Generalized Minimal Residual Bgmres(m) 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