PETSc ve Trilinos arasındaki temel farklar nelerdir?


24

Söyleyebileceğim kadarıyla, iki büyük jenerik ABD Enerji Bakanlığı hesaplamalı bilim yazılımı çerçevesi PETSc ve Trilinos'tur . İlk bakışta, dil farklılıklarının ötesinde benzer görünüyorlar (C'ye karşı C ++). İki çerçeve arasındaki temel farklar nelerdir ve birini seçmenin diğerine göre hangisini etkilemesi gerekir? (Kurumsal önyargıları ve mevcut altyapıyı görmezden gelin.)


1
Bir süre önce bir CFD kurulunda (2009'dan itibaren) biraz modası geçmiş bir tartışma vardı ; belki sormamız gereken en iyi soru şudur: o zamandan beri, her iki paketin tasarımında da önemli değişiklikler oldu mu?
aeismail,

Ahmed, bu tartışma daha çok önkoşullara odaklanıyor. Yinelemeli çözücüler tartışmalarından daha geniş bir bakış açısına sahip olmayı umuyordum. Ayrıca, bilim dalında PETSc hakkında çok fazla konuşma olduğu için, Trilinos'un kendisine de bazı yazılar yazması gerektiğini düşündüm ve bu, Trilinos kullanıcısının sorması gereken ilk sorulardan biri gibi görünüyor. Trilinos veya PETSc hakkında fazla bir şey bilmiyorum, bu yüzden cevabın da bir şeyler öğrenmeme yardımcı olacağını düşündüm.
Geoff Oxberry

Yanıtlar:


19

Kültürde, kodlama tarzında ve yeteneklerde büyük farklılıklar var. Muhtemelen temel fark, Trilinos'un FEM problemlerini çözmek için bir ortam sağlamaya çalışmasıdır ve PETSc, seyrek lineer cebir problemlerini çözmek için bir ortam sağlar.

Bu neden önemli?

  • Trilinos, FEM çözücüsünün ayrı bölümleriyle ilgili çok sayıda paket sağlayacaktır. Bazen bu paketler birlikte çalışırlar, bazen işe yaramazlar. Baz bileşenler bile kendi ambalajlarında ve gelişmiş C ++ aletlerinde
  • PETSC, üzerine inşa edilebilecek küçük bir miktar çekirdek rutin sağlar ancak FEM çözümleyicilerini üçüncü taraf paketlerine bırakır. Bu nedenle, sadece FEM'den daha büyük bir toplulukla ilişkilidir. Örneğin, öz çözücüler bile, muhtemelen lineer cebirin büyük bir parçası olan üçüncü taraflardır.
  • Sonuç olarak, Trilinos kendi paketleri içinde iyi çalışmaya odaklanır ve PETSc birçok ara katman paketini çağıran arayüzlere sahiptir (bu nedenle sık sık "hafif ağırlık" olarak adlandırıldığını duydum ama bu iddiada bulunmam.)

Kullanmanız gereken IMHO, gerçekten soruna bağlı. Lütfen bu soruyu cevaplamak için daha fazla ayrıntı paylaşın.


Aklımda belirli bir sorun yok. PDE'leri çözmek için bu büyük paketlerden biriyle tecrübe
edinmekle ilgileniyorum

11

Çeşitli paketlerin teknik ipuçlarından haber almak istiyorsanız, normal bir HPC kullanıcısı bakış açısıyla sorular almak, Brock Palen ve Jeff Squyres'in RCE podcast'i mükemmel bir kaynaktır. PETSc ve Trilinos'ta çok açık olan bölümleri var .

aterrel tanımlarında haklıdır - PETSc (karşılaştırmalı olarak) küçük, bütünleşik, iyi düşünülmüş bir genel amaçlı doğrusal ve daha sonra bir çözücü çerçevede kullanılabilecek bazı doğrusal olmayan çözücüler paketidir; Trilinos, çoğu zaman o çözücü çerçeve olmayı hedefleyen ve gelişen, ODE çözücüler, örgü paketler vb.


7

Aterrel'in iyi yorumuna şunu ekleyeyim, Trilinos gerçekten büyük bir çanta (Sandia) malzemesi ve Petsc daha odaklı bir kütüphane. Karşılaştırma yapmak istiyorsanız, PETSc'in seyrek çözücü desteğini, Trilinos'un ePetra / ML / etc gibi seyrek çözücü ekosistemi ile karşılaştırmalısınız. Ayrıca, PETSc yapılandırılmış ızgaraları desteklemektedir ve Sandia, tarihsel olarak açıkça yapılandırılmamış (FEM) bir ev olmuştur, bu nedenle Trilinos AFAIK yapılandırılmış ızgaraları için çok az desteğe sahiptir veya hiç destek vermemektedir. Ve Trilinos, PETSc'in stokastik PDE desteği gibi dokunmadığı yeteneklere sahiptir.


3
Trillinos’un sahip olmadığı şeylere ek olarak PETSc’in yapmadığı şeyler: Otomatik Farklılaşma, Yük Dengeleme, Yay Devam Yöntemleri, Optimizasyon Paketleri. Ancak bunların hepsi PETSc'e 3. parti paketler (bazıları Trilinos'tan) ile yapılmıştır ve PETSc - download-foo configure ile eklenebilir.
aterrel

6

Her ikisiyle de birkaç yıl çalışmış biri olarak bakış açım, her iki paketin de aslında o kadar da farklı olmadığı yönünde. Doğru, farklı diller kullanıyorlar, ancak çok benzer şekillerde kullanıyorlar (her ikisi de nesne yönelimli, Trilinos sınıfları kullanmanın ötesinde C ++ 'ı az kullanıyor.) Her ikisi de, doğrusal cebirle yapmak isteyeceğiniz her şeyi pratik olarak desteklemektedir (alt paketler veya anında indirdikleri şeyler, kullanıcı açısından hiçbir fark yaratmaz). Son olarak, her ikisi de çok sayıda daha belirsizdir ve muhtemelen çok yaygın olarak kullanılmayan alt paketlere sahiptir (örneğin, PETSc'in örgü arayüzü 'elek', Trilinos'ta otomatik farklılaşma vb.).

Bana göre, Trilinos'un çekiciliği iki katı: - Trilinos'daki gizli alt paketlerin sayısı oldukça fazla; Eğer X yönünde bir şeye ihtiyacım olursa, onu Trilinos'ta bulacağım ve kodumun geri kalanıyla çalışacak. - Trilinos, kalkınma stratejilerinde çok daha muhafazakar. PETSc her zaman her şeyi yeniden adlandırır ve her sürüm, kullanıcıların yeniden adlandırılmış işlevleri, farklı kitaplıkları vb. Yakalamalarını gerektirir.


Yeni arayüzlerin çoğunun şablonları yoğun olarak kullandığı için sadece eski arayüzleri kullandığınızı kabul ediyorum.
aterrel

Bu çoğunlukla doğru. "Sınıfların ötesinde C ++ 'ın diğer kullanımları" ifadesi hakkında yorum yaptığınızı hayal ediyorum. Demek istediğim, çoğu yerde RTTI, istisnalar, çoklu kalıtım vb. Kullanmaması. C ve bir parça nesne yönelimi olup olmadığını anlamak oldukça kolaydır.
Wolfgang Bangerth

2

PETSc, Fortran ile çok kolay bir şekilde kullanılabilir ve belgeler / örnekler oldukça iyi.

Bana trilinos kafa karıştırıcı görünüyordu (tüm alt paketleri ve isimlendirme şemasıyla) ve Fortran desteği sivilceydi (en azından birkaç yıl önce baktığımda).

Fortran'dan Trilinos ile etkileşime girmenin iki yolu vardır: (1) ham verileri C ++ paketleyiciye iletmek için yapılan tüm çağrıları Trilinos paketlerine [birkaç paket için bu tür paketleyicileri vardır] veya (2) yoğun şekilde kullanan yeni ForTrilinos arabirimlerini kullanmak için yapar Fortran 2003'ün nesne yönelimli özelliklerini kullanın. ForTrilinos'un gerektirdiği özelliklerin çoğu çoğu derleyicide bulunur. Bu özelliklerin derleyici uygulamaları buggy ama hızlı bir şekilde geliştiriliyor. ForTrilinos şu anda IBM ve NAG derleyicileri ile oluşturulmaktadır. Cray, Intel ve Portland Group derleyicilerinin mevcut veya yakın gelecekteki sürümleri, istenen özellikleri modulo hata düzeltmelerini nominal olarak desteklemektedir. Yaklaşan GCC 4.7.0 sürümü gerekli tüm özelliklere sahip olacak, ancak bir, bu nedenle geniş derleyici desteği gelecekte çok fazla değil.

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.