728x90
메시지 패싱 (message passing) 프로그래밍
- 프로세스들간의 통신을 통해 하나의 작업을 나눠서 병렬 계산
- 분산 메모리 방식
※ MPI (Message Passing Interface) : 메시지 패싱 모델의 표준
※ Communicator : 서로 통신 가능한 프로세스 집합
- 한 프로그램 내 여러 communicator 존재
- MPI 통신은 같은 Communicator에 속한 프로세스끼리 가능
※ Rank : Communicator내 프로세스 구분하기 위한 고유 번호
※ PTP (Point To Point communication) : 한 쌍의 프로세스 간의 메시지 통신
※ Collective communication : 한 무리의 프로세스들 간의 메시지 통신 (1:1, 1:N, M:N 통신)
MPI_Init 함수 : MPI 환경 초기화
int MPI_Init( int *argc, char ***argv )
- 1번 파라미터 : 인수들의 수에 대한 pointer
- 2번 파라미터 : 인수 벡터에 대한 pointer
Communicator size : communicator 내 프로세스 수
int MPI_Comm_size(MPI_Comm comm, int *size)
- 1번 파라미터 : Communicator
- 2번 파라미터 : Communicator 내의 프로세스 수
Rank : 자신의 rank 확인
int MPI_Comm_rank(MPI_Comm comm, int *rank)
- 1번 파라미터 : Communicator
- 2번 파라미터 : 프로세스의 rank
MPI_Finalize 함수 : MPI 환경 해제
int MPI_Finalize(void)
기본 구조
void main(int argc, char *argv[]){
int rank, size;
MPI_Init(&argc, &argv); // MPI 초기화
MPI_Comm_size(MPI_COMM_WORLD, &size); // communicator 내의 프로세스 수 확인
MPI_Comm_rank(MPI_COMM_WORLD, &rank); // communicator 내의 프로세스 rank 확인
/*... your code here...*/
MPI_Finalize(); // MPI 종료
}
Blocking & Non-Blocking
블록킹 통신 (동기 통신)
- 프로세스는 통신이 완료될 때까지 블록킹되어 다른 작업을 수행하지 못함
교착(deadlock) 상태가 발생할 수 있으며 프로그램 실행속도가 느려질 수 있음
논블록킹 통신 (비동기 통신)
- 프로세스는 통신이 완료될 때까지 블록킹되지 않으며 다른 작업을 수행 가능
교착 상태를 방지 할 수 있고 블록킹에 비해 실행속도가 빠를 수 있음
반응형
'CS > Linux' 카테고리의 다른 글
OpenMp 병렬 프로그래밍 (0) | 2023.08.29 |
---|---|
Process & Signal (0) | 2023.08.29 |
디렉토리 관리 관련 함수 (0) | 2023.08.29 |
파일 관리 관련 함수 (0) | 2023.08.29 |
Func (File System & File Input/Output) (0) | 2023.08.29 |