고성능 과학 응용 분야를위한 Boost :: mpi 또는 C MPI?


16

MPI에서 가장 싫어하는 것은 데이터 지향 (예 : 데이터 맵 / 마스크)을 처리하는 것입니다. 왜냐하면 객체 지향 C ++에는 잘 맞지 않기 때문입니다. boost::mpi그러나 웹 사이트에서 MPI 1.1 만 지원합니다.

boost :: mpi는 표준 메시지 전달 인터페이스에 대한 C ++ 친화적 인 인터페이스입니다. Boost.MPI는 Boost.Serialization 라이브러리를 사용하여 사용자 정의 형식에 대한 MPI 데이터 형식을 작성할 수 있습니다.

누구든지 boost::mpi심각한 과학 컴퓨팅 경험이 있습니까? 추천 하시겠습니까? 어떤 문제 (스케일링 문제, 컴파일러 문제, 오류, 구현되지 않은 기능, 일부 mpi 2.2 기능의 필요성)가 있습니까?

boost::mpiC ++에서 MPI C 구현을 사용하는 대신 사용에 대해 언급 할 수 있습니까 ? 두 가지를 결합 할 수 있습니까 (가능한 경우 boost :: mpi 사용, 다른 곳에서는 C-MPI 사용)?

를 사용하여 큰 과학 코드를 알고 boost::mpi있습니까?


필요한 모든 기능이 지원되는지 확인하려면 이 페이지 boost.org/doc/libs/1_50_0/doc/html/mpi/… 를 참조 하십시오. 직접 구현할 수있는 가능성도 고려해야합니다.
Alexander

1
Boost :: MPI를 사용하는 가장 좋은 이유는 C ++ 유형의 직렬화를 자동으로 지원하기 때문입니다. MPI C 인터페이스는이 작업을 자체적으로 수행 할 수 없으며 다른 방법으로 자체 직렬화를 수행하지 않는 한 Send / Recv 등을 통해 모든 C ++ 개체에 대해 MPI 데이터 유형을 전달해야합니다.
Jeff

Elemental (libelemental.org) MPI 인터페이스 ( github.com/elemental/Elemental/blob/master/src/core/imports/… )는 자동으로 유형을 자동 감지합니다. 그러나 Boost :: MPI가 수행하는 많은 작업을 시도하지는 않습니다.
Jeff

답변:


13

필자는 항상 순수 MPI보다 높은 수준으로 여기저기서 몇 줄의 코드를 저장할 수 있기 때문에 자체 프로젝트 인 deal.II에서 사용해야한다고 생각했습니다. 그러나 수년에 걸쳐 배운 것은 대부분의 고급 코드에는 실제로 MPI 코드가 많지 않다는 것입니다. 그것은 PETSc와 같은 패키지보다 확실히 훨씬 적지 만 그럼에도 불구하고 대부분의 코드는 처음에 기대하는 것보다 적은 MPI 호출을 가지고 있으며 결과적으로 더 높은 수준의 것을 사용하는 이점은 하나만큼 크지 않다는 것이 사실이라고 생각합니다 언뜻보기에 생각할 수도 있습니다.

이것이 무엇으로 요약 되는가는 당신이 트레이드 오프가 무엇인지 고려하는 것입니다. 얼마나 많은 MPI를 사용해야합니까? 그리고 외부 라이브러리를 구축하고 연결하는 데 필요한 추가 노력과 비교할 때 어떻게해야합니까?


6

지금까지 내가 아는 한, boost::mpi단지입니다 c++주위에 래퍼 CAPI는. 따라서 일부 기능이 구현되지 않을 때마다 API 를 사용 boost::mpi하고 CAPI로 전환 할 수 있어야합니다 . 실제로, 그들의 웹 페이지에서 :

Boost.MPI의 얇은 추상화는 기본 C MPI 라이브러리에 대한 호출과 쉽게 결합 할 수 있습니다.

나는 그것을 직접 사용하지 않았고 주요 라이브러리를 알지 못했지만 가벼운 래퍼 일 것으로 기대하므로 CAPI 와 비교할 때 성능에 대해 걱정하지 않아야 합니다.


2
Boost :: MPI는 MPI의 하위 집합을 둘러싼 래퍼입니다. 내가 기억 하듯이 MPI 1.2 만 지원합니다.이 점은 MPI-2.2 또는 MPI-3 표준과 크게 다릅니다.
Jeff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.