2013-02-15 1 views
-1

g ++로 내 프로그램을 컴파일하는 POSIX를 사용하는 시스템이 있지만 다중 프로세서가있는 큰 머신에 액세스 할 수있는 기회가 있으며 모듈 mvapich2와 openmpi가 있습니다. 내 생각에 openmpi가 내 시스템으로 마이그레이션되어야하는 올바른 것이어야한다. 문제는 openmpi에서 많은 경험을 할 필요가 없으며 프로그램을이 새로운 환경으로 마이그레이션하는 방법을 모른다는 것입니다.pthread (posix)에서 openmpi로 프로그램 마이그레이션

조금만 읽고이 환경에서 작동하는 시스템을 수행하고 POSIX 기능을 변경하려면 MPI 기능을 사용해야한다고 생각하십니까?.

이 섹션에서는 일반적인 명령어라고 생각되는 스레드를 처리하도록 pthread 함수를 호출합니다. 내 시스템이 세마포어, 뮤텍스와 마찬가지로 잘 작동

Thread::Thread(PFUNC func, void * arg) 
{ 
     pthread_detach(pthread_self()); 
     pthread_attr_t attr; 
     pthread_attr_init(&attr); 
     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); 
     int s = pthread_create(&xThreadId, &attr, func, arg); 
    if (s != 0) 
      throw EXCEPT_NOTHREAD; 

     pthread_attr_destroy(&attr); 
     pthread_detach(pthread_self()); 

} 

, 나뿐만 아니라 세마포어와 뮤텍스의 사용을 교체 할 필요가? 방법?. 내 프로그램을 변경해야 할 필요가 있거나 내 프로그램을 변경하고 openmpi 환경에서 실행하는 것을 피하는 방법이 있다면이 방법에 대해 조언하십시오.

덕분에 병렬 MPI 프로그램에 다중 스레드 프로그램에서가는 많은

+2

아니요, pthread가 아닌 MPI 함수 세트를 사용하도록 프로그램을 심각하게 변경해야합니다. 내가 여기서 줄 수있는 유일한 대답은 MPI 참조를 살펴보고 마법의 총알이 없다는 것입니다. 덕분에 – slugonamission

+0

. 어떻게 할 수 있는지를 설명하는 문서는 무엇입니까? – West14

+1

MPI와 스레드의 가장 근본적인 차이점은 스레드가 메모리 (공유 메모리)를 공유하는 동안 별도의 메모리 공간 (분산 메모리)이있는 엔티티간에 MPI 데이터가 메시지로 명시 적으로 전달된다는 것입니다. 이를 위해서는 프로그램의 데이터 구조와 알고리즘을 크게 변경하여 분산 저장 장치에 더 적합하게 만들 수 있습니다. 전달 된 메시지의 수/양을 최소화합니다. –

답변

0

는 MPI를 배워야 할 것이 주위에 방법이있을 수있는 사소한 일이 아니다.

내가 충분히 빠른 google search

로가 발견되는 기본 MPI 예제로 시작하는 것 또한 내가 당신을 위해 설명서를 참조하는 것이 좋습니다 MPI 구현 (당신이 openmpi 언급) 또한 MPI standard documentation

를 참조합니다
+0

답장을 보내 주셔서 감사합니다.이 두 가지 방법의 차이점을 발견 할 수있는 사이트가 있으면 정말 기쁠 것입니다. 감사. – West14

+0

@Edison은 빠른 Google 검색을 통해 내가 찾은 링크를 확인합니다 .... – pyCthon