문제

멀티 스레드 프로그램과 기계 간 커뮤니케이션에 의존하는 프로그램의 차이점을 이해합니다. 내 문제는 'C'로 작성된 멋진 멀티 스레드 프로그램이 8 코어 머신에서 잘 작동하고 실행된다는 것입니다. 이제 더 많은 코어에 액세스하기 위해이 프로그램을 클러스터로 포트 할 기회가 있습니다. pthread 물건을 찢어 내고 MPI (내가 사용한 적이 없음)를 개조하려는 노력이 가치가 있습니까? 우리가 C와 "고정"되었다고 가정하므로 언어의 도매 변경은 선택 사항이 아닙니다.

도움이 되었습니까?

해결책

소프트웨어 작성 방식에 따라 PTHREAD 구현을 유지하는 것보다 MPI로 이동하는 것이 장점이 있거나 아닐 수도 있습니다.

불행히도 (또는 다행히도) 메시지 통과는 pthreading과 매우 다른 짐승입니다. 기본 가정은 상당히 다릅니다. 좋아요 Maestro 팀의 Joshua Phillips의 인용문: "메시지 패스와 공유 상태 커뮤니케이션의 차이는 동료에게 전자 메일을 보내서 작업을 완료하도록 요청하는 주최자를 열어야합니다. 단지 무례한 것 이상, 후자는 그녀를 혼란스럽게 할 가능성이 높습니다.

불행히도 데이터를 공유하는 방식은 매우 다릅니다. 다른 스레드에서 데이터에 직접 액세스 할 수 없기 때문에 (다른 기계에있을 수 있기 때문에) pthreads에서 MPI로 마이그레이션하는 것은 매우 어려운 작업이 될 수 있습니다. 반면에, 코드가 작성되어 각 스레드가 분리되어 있으면 쉬운 작업이 될 수 있으며 확실히 가치가 있습니다.

이것이 얼마나 유용한지를 결정하려면 코드를 이해하고 전환하여 달성하고자하는 것을 이해해야합니다. 학습 경험으로서 가치가있을 수 있지만 (MPI에서 작업하여 동기화 및 스레딩에 대해 많은 것을 배웁니다), 이익이 사소한 경우에는 실용적이지 않을 수 있습니다.

다른 팁

답장. 리드에 대한 귀하의 의견-이것은 MPI로 쉽고 낮은 헤드 변환처럼 들립니다. 조심하십시오 : 모든 MPI API가 프로세스의 동적 생성을 지원하는 것은 아닙니다. 즉, N 프로세스 (스타트 업에서 지정 됨)로 프로그램을 시작하고 프로그램의 수명 내내 N 프로세스가 고집되어 있습니다.

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