2014-11-06 3 views
0

내가 사초MPI 병렬 처리 시간을 소비

MPI 형식에서

에서 그들은 순차적으로 실행 고전적인 구조에서 이초 각각 을 소비하는 코드의 두 블록을 가지고, 그것은 2 초를 소비하기로되어 있지만, 5 초 소요

왜?

int main (int argc, char *argv[]) 
{ 
    MPI_Init(&argc, &argv); 
    MPI_Comm_size(MPI_COMM_WORLD,&p); 
    MPI_Comm_rank(MPI_COMM_WORLD,&id); 

    if(id==0) 
    { 
     // 2 seconds Block 
    } 
    if(id==1) 
    { 
     // 2 seconds Block 
    } 
    MPI_Finalize(); 
} 
+0

다른 블록을 측정 했습니까? 그리고 MPI 초기화와 파이널 라이즈도 측정 했습니까? MPI는 값을 매길 수 없으며, 특히 초기화에는 모든 기계 및 모든 MPI 구현에 따라 "약간"의 시간이 필요합니다. – PVitt

+2

스택 오버플로에 오신 것을 환영합니다. 좋은 예를 제공하십시오 (http://stackoverflow.com/help/mcve). 이 질문에 제공된 정보가 부족하여 도움을받을 수 없습니다. 예를 들어'sleep (2)'를 블록으로 사용하여 프로그램을 실행하면, 프로그램은 2 초보다 수십 밀리 초 만에 실행된다는 것을 알 수 있습니다. –

답변

0

5 초가 걸리는 이유는 무엇입니까? 전체 프로그램의 시간을 측정 한 경우 MPI_Init()MPI_Finalize()은 시간이 많이 걸리는 문제가 있습니다. 속도 향상을 위해 "블록"을 늘릴 수 있습니다.

+0

네, 맞습니다.하지만 4의 블록을 2의 2 블록으로 나눌 때 말이죠. 2 초 후에 실행될 것으로 예상되지만 5에서 실행됩니다. – Hesam

+0

이 경우 "블록"에 대한 코드를 게시해야합니다. "블록"(2 초)은 하나의 코어에서 어떻게 작동합니까? 충분한 프로세서가 있습니까? 그들은 다른 무엇인가 가지고 있습니까? – jonie83