2016-07-09 3 views
0

상황은 다음과 같습니다. 4x4 크기의 배열이 있는데이 행렬을 "블록"(일명 작은 행렬)으로 분할하고이를 " 프로세스 ". 보다 구체적으로, 4x4 행렬을 4 개의 2x2 행렬로 분할하는 프로세스의 총량이 4 (1 마스터, 3 슬레이브 및 모두 계산 될 값을 계산 함)라고 가정합니다. 그러나 "버퍼"를 2x2 크기로 만드는 것은 피해야합니다 (실제로 나는 그것을 피하고 싶습니다). 질문 : 관리 할 "영리한", "고통없는"방법이 있습니까?MPI는 행렬을 더 작은 행렬로 나눕니다.

추신 :이 문제를 관리해야합니다. http://www.cas.usf.edu/~cconnor/parallel/2dheat/2dheat.html 데카르트 커뮤니케이터가 생성됩니다.

+1

당신은 그것을 피할 수 없습니다. –

답변

1

이것은 본질적으로 (일반) MPI가 작동하는 방법입니다. 2x2 행렬은 분산 데이터 구조를 구성합니다. 함께, 그들은 실제 4x4 행렬을 구성합니다. 물론 4 × 1 또는 4 × 1 행렬을 사용할 수도 있습니다.이 행렬은 몇 가지 장점 (프로그래밍 용이)과 단점 (확장시 확장 된 통신 필요)이 있습니다.

2D 열 방정식과 같은 실제 문제에서 각 로컬 매트릭스 주위의 후광을 고려해야 할 경우가 있습니다. 이 후광은 시뮬레이션 단계에서 교환됩니다. 링크 된 코드는 각 작업자 순위에서 전체 크기의 행렬을 사용합니다. 이것은 단순화되었지만 자원을 낭비하고 따라서 확장 할 수 없습니다.

MPI는 Cartesian 커뮤니케이터 또는 일방 통싞을 통해 분산 데이터를 관리하는 데 도움이되지만 분산 데이터 구조를 관리해야합니다.

분산 데이터 구조의 상위 수준 추상화를 제공하는 병렬 패러다임이 있지만 개요조차도이 형식에 비해 너무 광범위합니다. 많은 것은 PGAS (Partitioned Global Address Space) 개념과 관련이 있습니다. 구현은 새로운 언어, 언어 확장 (공동 배열 포트란)부터 라이브러리 및 프레임 워크에 이르기까지 다양합니다. 일부는 내부적으로 MPI를 사용합니다.

관련 문제