2016-11-10 2 views
0

저는 MPI를 처음 접했고 기초를 연구 한 후에도 mpi를 두 함수의 병렬 실행에 어떻게 활용할 수 있는지 이해하지 못합니다. 하나는 요소의 첫 번째 부분을위한 것이고 두 번째는 두 번째 부분. 예를 들어 :MPI로 함수를 병렬화하는 법 ++

for(int i = 0; i < argc/2; i++){ 
    function(el[i]); 
} 

for(int i = 0; i < argc-1; i++){ 
    function(el[i]); 
} 

내가 MPI_Send, MPI_recv의 ECC를 사용하는 방법에 대해 설명합니다.?

답변

0

MPI는 다중 스레드 라이브러리가 아닌 다중 프로세서 라이브러리입니다. 결과적으로 데이터는 분할되어 코어가 일부를 처리 할 수있는 단일 배열로 볼 수 없습니다.

여기에서 데이터를 처리하려면 각 코어에 데이터의 절반을 포함하는 배열이 있어야합니다. MPI_SEND 및 MPI_RECV, 그것은 데이터가 확산하고

행운

+0

덕분에 쉽게 reunificating하게, 너무 일부 기능을 존재 한 후이

Get rank and number of proc Create subarray Pass parts of initial array from proc 0 to other procs (With MPI_SEND for proc 0 and MPI_RECV for others) Each proc do the calculation Reunite the results with a new set of send/recv 

같이 보일 것입니다! 내가 뭘 찾았는지 – Giuseppe

+0

나는 하나의 질문을 가지고있다. 무엇을 의미 하는가? send/recv의 새로운 세트로 결과를 재결합한다. – Giuseppe

+0

결과에 달려 있지만, 함수가 요소를 수정하고 하나의 프로세서가 필요한 경우 모든 결과를 알고있는 모든 배열을 재결합하는 결과 탭이 필요합니다. 필요하지 않은 경우 결과를 수집 할 필요가 없습니다. 그러나 일반적인 방법으로 프로세서는 모든 결과를 알아야하며 통일 단계가 필요합니다. – RaymoAisla