문제

단일 서버가 있고 두 가지 프로세스 유형 A (많은 프로세스 많은 스레드)와 B (N-CPU가있는 하나의 프로세스 N- 스레드)가있는 경우 A에서 B로 많은 양의 일방 통행 메시지를 보내고 싶었습니다. . MPI는 다음을 사용하여 사용자 정의 구현보다 더 나은 구현입니다.

  1. 유닉스 도메인 소켓
  2. 파이프 이름이 지정된 창
  3. 공유 메모리

나는 1과 2를 기반으로 내 자신의 도서관을 작성하려고 생각했고, 공유 메모리가 잠금을 요구하기 때문에 3이 더 나은지 궁금합니다.

처리 A는 외부 서비스를 제공하므로 B의 리소스 사용량과 일반적으로 전달되는 메시지는 가능한 한 적은 리소스를 소비해야하며 메시지를 보낼 때 차단 또는 비 블로킹에서 A를 구현할 수 있습니다. B의 리소스 사용 및 메시지 전달은 A의 사용으로 선형으로 확장해야합니다.

결국 기계 간에도 방송 기능이 필요합니다. 아마도 프로세스 B의 경우

내 이별 질문은 다음과 같습니다. MPI (특히 OpenMPI)는 이에 대한 좋은 라이브러리이며 다양한 운영 체제에서 가장 최적의 커널 프리미티브를 사용합니다.

도움이 되었습니까?

해결책

MPI는이를 위해 잘 작동 할 것입니다. 만약 당신이 당신의 아키텍처를 기꺼이 재 작업하여 메시지를 전달하는 인프라 전달을 기꺼이 재 작업하려는 경우.

이론적으로, 적어도 단일 서버에서 호스팅 할 때 MPI 메시지 구조로 전환 할 필요가 없기 때문에 자신의 라이브러리를 랩핑하면 더 빨리 무언가를 할 수 있습니다. 즉, MPI는 매우 효율적입니다 (Esp. MPI-2, 열린 MPI 지원), 매우, 매우 강력합니다. 자신의 라이브러리에서 동일한 유연성, 구성 가능성 및 견고성을 얻는 데 어려움을 겪을 수 있습니다.

여러 컴퓨터간에 방송 될 경우 MPI는 아마도 자신의 방법을 굴리는 것보다 더 나은 접근 방식 일 것입니다.

또한 MPI는 상당히 몇 가지 커뮤니케이션 모드를 지원합니다. 지원합니다 공유 메모리 매우 빠르고 단일 기계 통신 및 Machine 간 통신을위한 TCP (일부 상업적이고 빠른 옵션).

다른 팁

MPI는 매우 효율적이며 고성능 응용 프로그램을 위해 구축되었습니다.
동일한 mboard에서 CPU 간의 통신에도 잘 사용할 수도 있습니다.

나는 방송에 대해 확신하지 못한다. 몇 년 전에 사용한 시스템은 그렇지 않았지만 그것이 우리의 상호 연결이나 MPICH의 제한인지 기억할 수 없다.

추신. 우리는 MPICH를 사용했을 때 Windows에서 가장 잘 작동했으며 유연성이 필요했기 때문에 MPICH2 또는 OpenMPI를 사용하지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top