Curmudgeon'a cevap vermeliyim. Verimliliğim yukarıdaki önerilerden herhangi biriyle asla geliştirilmedi. Paralel olarak tercih ettiğim seçeneğe göre yavaş ve pahalı: İşlem başına bir gdb oturumu. Her gdb bir MPI işlemine bağlanabilir ve bir xterm'de oturabilir (bu otomatik olarak PETSc'de olur -start_in_debugger). Bunu mutlu bir şekilde 15 yıldır kullanıyorum. İtirazlar:
1) Global verilere bakamıyorum
MPI paylaşılan yok bir model olduğundan, küresel veri yok, yalnızca yerel veri var
2) Bu strateji birçok sürece ölçeklendirilmez
Hata da yok. Hatalar, bireysel işlemlerde olabilir, belki 1 veya 2 komşunun girişi olabilir. Gdb’yi kolayca katılan işlemlere kolayca ekleyebilirsiniz ( -debugger_nodes 0,5,17örneğin, kullandığınız PETSc’de ). Ayrıca, yukarıdaki sistemler her işlemden geçtiklerinde çok vazgeçerler, bu da onları yavaşlatır. Gdb yöntemi aslında, çok daha ölçeklenebilir.
Gdb de çok taşınabilir. Her yerde çalışır, C ++ ve Fortran'ı anlar ve çalışma içinde rasgele kod yürütmenize izin verir. İçinde çalışırken kolayca verileri görüntülemek için özel fonksiyonlar yazdım.