2017-09-17 12 views
-1

Open MPI로 병렬 컴퓨팅을 배우려고합니다. MacBook Pro에서 Ubuntu 16 부팅을 사용합니다.우분투의 MPI 코드는 하나의 프로세서 만 사용합니다.

OpenMP를 설치하고 hello_world을 실행하여 테스트 해보십시오.

#include <mpi.h> 
#include <stdio.h> 

int main(int argc, char** argv) { 
// Initialize the MPI environment 
MPI_Init(NULL, NULL); 

// Get the number of processes 
int world_size; 
MPI_Comm_size(MPI_COMM_WORLD, &world_size); 

// Get the rank of the process 
int world_rank; 
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); 

// Get the name of the processor 
char processor_name[MPI_MAX_PROCESSOR_NAME]; 
int name_len; 
MPI_Get_processor_name(processor_name, &name_len); 

// Print off a hello world message 
printf("Hello world from processor %s, rank %d" 
     " out of %d processors\n", 
     processor_name, world_rank, world_size); 

// Finalize the MPI environment. 
MPI_Finalize(); 
} 

나는 mpicc로 컴파일 할 문제가 없었다하지만 난 그것을 실행하려고 할 때, 나는 등등 ./hello_world -n 4, ./hello_world -n 2, ./hello_world -np 4와 동일한 결과를 가지고있다.

항상 기록 :

안녕하세요 1 개 프로세서

중 프로세서 우분투 - 맥, 순위는 0에서 세상은 내가 여러 프로세서에서 실행할 수없는 이유를 이해하지 않습니다 .. 내가 잘못 실행했거나 내 구성 또는 다른 것입니까?

답변

3

잘못 실행하면 프로그램을 mpirun 또는 mpiexec으로 시작해야하므로 MPI가 원하는 프로세스 수를 생성 할 수 있습니다. 컴파일 할 수의 당신이 파일에서는 hello.c에 프로그램이 있다고 가정 해 봅시다 다음과 같이 실행 :

mpicc -o hello hello.c 
mpirun -np 4 ./hello 
다음 예제 출력 표시해야합니다

: 당신 같은 프로그램 독립 실행

Hello world from processor sagan, rank 1 out of 4 processors 
Hello world from processor sagan, rank 2 out of 4 processors 
Hello world from processor sagan, rank 3 out of 4 processors 
Hello world from processor sagan, rank 0 out of 4 processors 

을 hello 프로그램이 깃발 -n을 파싱하지 않기 때문에 하나의 프로세스 만 생성합니다. 반면에 mpirun-np 플래그를 사용하여 원하는 프로세스 수를 생성합니다.

+0

감사합니다. 나는 그것을 알지 못했습니다. –

+1

@ValentinMercier @ ValentinMercier 도움이된다면 답을 받아 들여야합니다. –