Hata Ayiklama

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Hata Ayiklama - Presentation Transcript

    1. Koşut Uygulamalarda Hata Ayıklama ts@TayfunSen.com 17 Nisan 2009 BAŞARIM'09
    2. Yol Planı Company LOGO Benim deneyimlerim: C++, Boost & OpenMPI, Linux ve Açık Kaynaklı Çözümler (g++, gfilt, vim, gdb, ddd) Kendinize uyarlamanız gerekebilir • Koşut hata ayıklama neden zor? • ISINMA gfilt – anlaşılabilir C++ şablon hataları TURLARI • vim quickfix – hızlı bir düzenle-derle-hata ayıkla süreci • gdb, ddd, xgdb [favori hata ayıklayıcınızı yerleştirin] ile çalıştırmak veya bağlanmak • Diğer çözümler (ISP, Valgrind?) • Kaynaklar, Soru & Cevap Bölümü 2/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    3. Koşut Hata Ayıklama Company LOGO • Seri uygulamalarda bile hata ayıklamak kolay değil • Koşut uygulamalarda yeni hata tipleri var: race conditions, deadlocks... • Ve tabii ki karmaşıklık. • Bir soru: 5 işlem var, her biri 5 tane MPI çağrısı yapıyorsa kaç tane içiçelik (interleaving) durumu oluşur? (Yani kaç farklı çalıştırma olabilir?) 3/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    4. Koşut Hata Ayıklama Company LOGO • Kısa cevap: 10 Milyardan fazla. Uzun cevap: 25 MPI çağrısının her biri sıra ile seçilecek, her işlem için 5'erli çağrının sırası belirli: 25! / (5!)5 [1] • Programlarken hata yapmak çok kolay. • Bu yüzden iyi araçlara ihtiyaç var. 4/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    5. gfilt Company LOGO • C++ kullananlar için yararlı • Perl ile yazılmış bir filtre • Ne işe yaramakta? Örnek bir kullanım. • STL şablon hata mesajlarını anlaşılır hale getiriyor. Programcı için büyük kolaylık. • Visual Studio, Borland Builder … için sürümleri de var, bunların genel ismi STL Filt [2] 5/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    6. Vim Quickfix Company LOGO • Vim'in kendisi zaten başlıbaşına hayat kurtarıcı bir metin düzenleyicisi. • Quickfix özelliği ile hızlı bir derle-dene- hata ayıkla süreci yaşayabilirsiniz. • Örnek bir kullanım. • Benim ayarlarıma ulaşmak için, git deposu: http://github.com/tayfun/vim-conf/tree/master • # git clone git://github.com/tayfun/vim-conf.git 6/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    7. Eski dost gdb Company LOGO • Seri hata ayıklayıcıları kullanabilirsiniz. (koşut destekliler pahalı, örneğin totalview) • Öncesinde, derleme sırasında “-g” ve hata ayıklama yapacaksanız en iyilemeleri (optimizations) kapamanız gerekli. Örneğin “-O3” kullanıyorsanız hızlandırmak için, bunu kaldırmalısınız. Yoksa gdb Segmentation Fault verebilir. Kaynak kodu ve binary tutmadığı için. 7/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    8. Eski dost gdb Company LOGO • Daha rahat etmek için arka planda gdb kullanan bir arayüz kullanılabilir. ddd (benim favorim), xxgdb vs. • Özellikle karmaşık yapılarda (ağaçlar, çizgeler vs.) oldukça yararlı. • İki tür hata ayıklama yöntemi var: 1. Baştan gdb ile çalıştırmak mpirun ­np 2  xterm  ­e gdb ./myProg 2. Çalışan işleme bağlanmak ddd ­­pid 9921 8/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    9. Eski dost gdb Company LOGO 1. gdb ile çalıştırma gösterisi (MPI sürümleri arasında farklılıklar olabilir) 2. Çalışan bir işleme bağlanma gösterisi (bu nispeten daha taşınabilir (portable)) • İkinci yöntemin çeşitli avantajları var: Çalışma zamanında kontroller yapabilmek (iki pencere ile uğraşmamak) ve gdb'nin yavaş çalıştırma sorununu yaşamamak gibi 9/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    10. Eski dost gdb Company LOGO • Önceki gösterilerle ilgili olarak, küçük bir nokta var: TÜM ÇALIŞTIRMALAR YEREL BİLGİSAYARDAYDI! (çift çekirdekli bir makine ama, olsun) • Gerçek bir kümede durum nedir? • xterm gibi terminal (veya herhangi bir uygulama) çalıştırabilmek için X forwarding gerekli! Sistem yöneticinize danışın. • Yapabileceğiniz birşey daha var: SPMD ve MPMD'yi hatırlayın. 10/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    11. Eski dost gdb Company LOGO • OpenMPI ile birden fazla farklı programı çalıştırabilirsiniz, ve iletişiminiz aynen devam eder. • Bunu kullanarak bir işlem için hata ayıklama yapabilirsiniz: mpirun ­np 1 gdb ./myProg : ­np 1 ./myProg  <arguments> • Gerçek bir kümede gösterim. CENG HPC • Kendi durumunuza göre uyarlayın. Önerim, daha çok kendi makinenizde hata ayıklama yapmanız. (böylece küme kaynaklarını da kullanmamış olursunuz) 11/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    12. Eski dost gdb Company LOGO • Önceki sayfadaki bazı komutlar OpenMPI'a özgü idi. • MVAPICH2 ile durum biraz daha farklı (ve kolay?) # mpiexec ­gdb ­n 10 ./myProg # mpiexec ­gdba <jobid>  (mpdlistjobs'dan geliyor) • Tüm gdb'lerden gelen çıktılar aynı pencerede basılıyor. • X Forwarding'e gerek yok. • Detaylı bilgi Kullanıcı Rehberinde [4] 12/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    13. Eski dost gdb Company LOGO • OpenMP (MPI değil!) ile uğraşanlar varsa, durum biraz daha farklı. • İşletim Sistemi tüm hafızayı düzenlediği için, ve iplikler (thread) işlemlerden (process) daha bağımlı olduğu için hata ayıklama işi daha kolay (MPI'daki gibi X forwarding over SSH vs. gerekmiyor). • gdb'nin ve/ya grafik arayüzlerinin iplik yönetim komutlarını gözden geçirin. 13/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    14. ISP ve diğerleri? Company LOGO • ISP ve başka birkaç program ile formel bir doğrulama yapılabilir. • Önceki sayfada anlatılan milyarlarca içiçelik sayısı belirli bir teorik temel sayesinde azaltılıyor ve doğrulama yapılıyor. • Daha fazla bilgi için web sitesini ziyaret edin: http://www.cs.utah.edu/formal_verification/ISP-release/ [3] • Hafıza sorunları için valgrind kullanılabilir. 14/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    15. Kaynaklar Company LOGO [1] Konu hakkında daha fazla bilgi için bkz. Anh Vo, Sarvani Vakkalanka, Michael DeLisi, Ganesh Gopalakrishnan, Robert M. Kirby, and Rajeev Thakur, “Formal Verification of Practical MPI Programs,'' Principles and Practices of Parallel Programming (PPoPP) 2009, pp. 261-269. [2] gfilt programını indirmek için: http://www.bdsoft.com/tools/stlfilt.html [3] ISP için: http://www.cs.utah.edu/formal_verification/ISP-release/ [4] MPICH2 Kullanıcı dökümantasyonu: http://www.mcs.anl.gov/research/projects/mpich2/documentation/in [5] OpenMPI hata ayıklama ile ilgili daha fazla bilgi için: http://www.open-mpi.org/faq/?category=debugging Bu sunum slideshare'den indirilebilir: http://www.slideshare.net/tayfun 15/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama
    16. Soru & Cevap Company LOGO İlginiz için teşekkürler Sorular? 16/16 17 Nisan 2009 Koşut Uygulamalarda Hata Ayıklama

    + Tayfun SenTayfun Sen, 7 months ago

    custom

    421 views, 0 favs, 1 embeds more stats

    Koşut Uygulamalarda Hata Ayıklama Sunumu

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 421
      • 413 on SlideShare
      • 8 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 2
    Most viewed embeds
    • 8 views on http://blog.tayfunsen.com

    more

    All embeds
    • 8 views on http://blog.tayfunsen.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories