2

MPI를 사용하여 분산 응용 프로그램을 빌드해야합니다. 내가 취해야 할 결정 중 하나는 분산 환경에서 최대한의 이점을 얻기 위해 클래스의 인스턴스를 프로세스로 매핑 한 다음 기계로 매핑하는 방법입니다.메시지 전달을 통한 성능 평가

내 질문에 : 더 나은 매핑을 선택할 수있는 모델이 있습니까? 내 말은, 어떤 배열은 분명히 틀린 것입니다 (예를 들어 두 개의 다른 머신에 두 개의 객체를 넣을 때 상당히 많은 양의 데이터를 순차적으로 처리해야하며 두 개의 객체는 처리 할 토큰없이 처리해야합니다). 그러나 체계적으로 실행의 흐름, 메시지 복잡성, 알고리즘 구성 요소에 의해 수행 된 계산에 소요되는 시간에 의해 결정되는 잘못된 배열을 결정할 수 있습니까?

+0

분산 컴퓨팅을 공식화하는 이론이 있는지 알고 싶습니다. 네트워크의 큐 이론과 같은 것이지, 나를 위해 작동하는 프로그램이 아닙니다.) – akappa

답변

1

글쎄, data flow diagrams이 있습니다. 그것들은 병렬 처리의 기회와 함정을 식별하는 데 도움이 될 수 있습니다. 위키 피 디아 페이지의 참고 문헌은 좀 더 이론적 인 근거를 제공 할 수 있습니다.

록히드 마틴에서 근무할 때 프로세싱 블록으로 모델링 알고리즘 매핑을 위해 개발 한 도구 CSIM에 노출되었습니다.

+0

데이터 흐름도는 도구로 가장 적합하다고 생각됩니다 병렬 프로그램에서 흐름을 설명하는 방법으로 소프트웨어 엔지니어링의 경우, 그러나 분석 장치가 약한 경우. 좀 더 자세히 살펴 보겠습니다. – akappa

+0

동의. 또한 위키 피 디아 (wikipedia) 기사에있는 것보다 동기화 장벽이있는 흐름 다이어그램을 더 많이 생각했습니다. 방금 기억한 다른 모델에 대한 두 번째 대답을 추가하고 있습니다. –

0

시도해 볼만한 또 다른 사항은 Join Calculus입니다. 놀라 울 정도로 직관적 인 프로그래밍 예제를 발견했으며, 이론적 근거가 충분하다고 생각합니다. 나는 왜 그것이 더 많이 붙잡 았는지에 관해 모른다.

다른 접근 방식은 Pi Calculus이며 이해하기가 더 어려워 보이지만 더 대중적이라고 생각합니다.

0

실제 해결책은 분산 메모리 병렬 프로그래밍의 다른 모델을 사용하는 것인데, 이는 직접적으로 사용자의 우려 사항을 해결합니다. 저는 Charm++ 프로그래밍 시스템에서 작업합니다.이 시스템의 모델은 메시지를 하나씩 보내는 개별 개체의 모델입니다. 런타임 시스템은 부하 균형 및 통신 지역 문제를 해결하기 위해 이러한 개체를 사용 가능한 프로세서에 자동 매핑하는 작업을 용이하게합니다.

관련 문제