PETSc와 Trilinos의 주요 차이점은 무엇입니까?


24

제가 알 수있는 한, 미국의 에너지 에너지 전산 과학 소프트웨어 프레임 워크는 PETScTrilinos 입니다. 언어 (C와 C ++)의 차이를 넘어 언뜻 보면 비슷해 보입니다. 두 프레임 워크의 주요 차이점은 무엇이며 다른 요소를 선택하는 데 영향을 미치는 요소는 무엇입니까? (기관의 편견과 기존 인프라는 무시하십시오.)


1
얼마 전에 CFD 보드 에서 다소 오래된 토론이있었습니다 (2009 년부터) . 아마도 더 좋은 질문은 그 이후로, 패키지 디자인에 큰 변화가 있었습니까?
aeismail

Ahmed, 그 논의는 주로 전제 조건에 중점을 둡니다. 반복 솔버에 대한 토론보다 더 넓은 관점을 원했습니다. 또한 scicomp.SE에서 PETSc에 대해 많은 이야기가 있기 때문에 Trilinos가 그것에 대한 게시물을 가져와야한다고 생각했으며 이는 Trilinos 사용자가 잠재적으로 제기해야 할 첫 번째 질문 중 하나 인 것 같습니다. 나는 Trilinos 또는 PETSc에 대해 많이 알지 못하므로 그 대답이 나도 무언가를 배우는 데 도움이 될 것이라고 생각했습니다.
Geoff Oxberry

답변:


19

문화, 코딩 스타일 및 기능에는 큰 차이가 있습니다. 아마도 근본적인 차이점은 Trilinos가 FEM 문제를 해결하기위한 환경을 제공하고 PETSc가 희소 선형 대수 문제를 해결하기위한 환경을 제공한다는 것입니다.

왜 중요한가요?

  • Trilinos는 FEM 솔버의 개별 부품과 관련된 많은 패키지를 제공 할 것입니다. 때때로 이러한 패키지는 함께 작동하지 않을 수도 있습니다. 기본 구성 요소조차 자체 패키지와 고급 C ++ 도구에 있습니다.
  • PETSC는 구축 할 수있는 소량의 핵심 루틴을 제공하지만 FEM 솔버는 타사 패키지로 남겨 둡니다. 이 때문에 FEM보다 더 큰 커뮤니티와 연결됩니다. 예를 들어, 고유 솔버조차도 선형 대수학의 주요 부분 인 타사입니다.
  • 결론적으로, Trilinos는 자체 패키지 내에서 잘 작동하는 데 중점을두고 있으며 PETSc에는 많은 미들웨어 패키지를 호출하는 인터페이스가 있습니다 (이 때문에 "경량"이라고 들었습니다).

사용해야 할 IMHO는 실제로 문제에 달려 있습니다. 우리가 그 질문에 대답 할 수 있도록 자세한 내용을 알려주십시오.


구체적인 문제는 없습니다. 나는 PDE를 해결하기위한 큰 패키지 중 하나에 대한 경험에 관심이 있고 장단점에 대한 아이디어를 얻고 싶었고, 어느 것이 어느 시간에 투자
해야하는지

11

일반적인 HPC 사용자의 관점에서 다양한 패키지의 기술 리드를 듣고 싶다면 Brock Palen과 Jeff Squyres의 RCE 팟 캐스트 가 훌륭한 자료입니다. 그들은에 에피소드가 PETSc 과에 Trilinos 매우 명확하다.

aterrel은 그의 설명에 옳다-PETSc는 범용 선형 및 일부 비선형 솔버로 구성된 (비교적으로) 작고 통합되고 잘 고려 된 패키지로, 솔버 프레임 워크에서 사용할 수있다. Trilinos는 진화하는 통합 된 패키지 모음으로, 주로 해당 솔버 프레임 워크를 목표로하며 ODE 솔버, 메시 패키지 등을 포함합니다.


7

Trilinos는 실제로 (Sandia) 물건의 큰 가방이고 Petsc는 더 집중된 라이브러리라는 aterrel의 좋은 의견에 덧붙여 보겠습니다. 비교하려면 PETSc의 스파 스 솔버 지원과 Trilinos ePetra / ML / etc 스파 스 솔버 에코 시스템을 비교해야합니다. 또한 PETSc는 구조화 된 그리드를 지원하며 Sandia는 역사적으로 명시 적으로 비정형 (FEM) 하우스였습니다. 따라서 Trilinos는 구조화 된 그리드 AFAIK를 거의 또는 전혀 지원하지 않습니다. 그리고 Trilinos에는 PETSc가 확률 적 PDE 지원과 같은 기능을 제공하지 않습니다.


3
Trillinos의 PETSc에는없는 기능인 자동 미분,로드 밸런싱, 아크 연속 방법, 최적화 패키지가 있습니다. 그러나이 모든 패키지는 타사 패키지 (일부는 Trilinos에서 제공)에 의해 PETSc에 내장되었으며 PETSc --download-foo configure로 추가 할 수 있습니다.
aterrel

6

두 사람과 함께 몇 년을 보낸 사람으로서, 제 관점은 두 패키지가 실제로 그렇게 다르지 않다는 것입니다. 사실, 그들은 다른 언어를 사용하지만 매우 비슷한 방식으로 사용합니다 (둘 다 객체 지향적이며 Trilinos는 클래스 사용 이외에 C ++을 거의 사용하지 않습니다). 둘 다 선형 대수와 관련하여 실제로 원하는 모든 것을 지원합니다 (하위 패키지 또는 사용자가 관점에서 다운로드 한 것을 통해 사용자의 관점에서 아무런 차이가 없습니다). 마지막으로 둘 다 더 애매 모호하고 널리 사용되지 않는 하위 패키지 (예 : PETSc의 메시 인터페이스 'sieve', Trilinos의 자동 차별화 등)를 가지고 있습니다.

나에게 Trilinos의 매력은 두 가지입니다. X 방향으로 무언가가 필요하다면 Trilinos에서 찾을 것이고 나머지 코드와 함께 작동 할 것입니다. -Trilinos는 개발 전략에서 훨씬 보수적입니다. PETSc는 항상 이름을 변경하며 모든 릴리스에서는 이름이 바뀐 기능, 다른 라이브러리 등을 따라야합니다.


많은 최신 인터페이스가 템플릿을 광범위하게 사용하므로 이전 인터페이스 만 사용했습니다.
aterrel

그것은 대부분 사실입니다. "클래스 이외의 다른 C ++ 사용"문에 대해 언급했다고 상상해보십시오. 내가 의미하는 바는 대부분의 장소에서 RTTI, 예외, 다중 상속 등을 사용하지 않는다는 것입니다. C와 약간의 객체 방향을 알고 있다면 이해하는 것이 비교적 간단합니다.
Wolfgang Bangerth

2

PETSc는 Fortran과 함께 매우 쉽게 사용할 수 있으며 설명서 / 예는 상당히 좋습니다.

나에게 Trilinos는 혼란스러워 보였고 (모든 하위 패키지 및 이름 지정 체계가 있음) Fortran 지원은 드물었습니다 (적어도 몇 년 전에 보았을 때).

Fortran에서 Trilinos와 상호 작용하는 두 가지 방법이 있습니다. (1) 원시 데이터를 C ++ 래퍼로 전달하여 [이러한 래퍼는 여러 패키지에 존재합니다] 또는 (2) 새 ForTrilinos 인터페이스를 많이 사용합니다. Fortran 2003의 객체 지향 기능을 사용하십시오. ForTrilinos에 필요한 대부분의 기능은 대부분의 컴파일러에서 사용할 수 있습니다. 이러한 기능의 컴파일러 구현은 버그가 있지만 빠르게 개선됩니다. ForTrilinos는 현재 IBM 및 NAG 컴파일러로 빌드합니다. Cray, Intel 및 Portland Group 컴파일러의 현재 또는 가까운 장래 릴리스는 모두 명목상 모듈로 버그 수정 기능을 지원합니다. 다가오는 GCC 4.7.0 릴리스에는 모든 필수 기능이 있지만 하나의 기능이 있으므로 향후 광범위한 컴파일러 지원이 그리 멀지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.