본문 바로가기
Engineer/병렬컴퓨팅

개념-3: MPI란?

by _제이빈_ 2020. 3. 24.

포트란으로 병렬컴퓨팅 배우기  ←링크

 Message Passing ________________________

 

    MPI (Message Passing Interface)를 이해하기에 앞서, 기본 개념이 되는 메시지 전달(Message Passing)이 뭔지부터 알아야 한다. 메시지 전달이란 정보를 동일한 주소공간을 공유하지 않더라도, 프로세서 간 데이터를 주고받는 통신을하므로 동기화된 작업을 할수 있도록하는 방법이다. 그러니 컴퓨터들이 네트워크에 연결되어있는 상황과 같은 여러자원을 동시에 사용하는 상황에 유용하겠다. 

 

    어떤 프로세서에서 타 컴퓨터의 메모리에 직접 통신하는게 아니라, 메시지라는 간접적인 방법을 통해 통신하는 것이다. 음, 그림으로 설명하자면 이런 느낌이다. 프로세서1 에서 어떤 메시지를 보내면서 TAG를 걸어둔다. 그리고 프로세서2에서는 그 TAG는 내가 필요하니 가져가겠다하고 여러 메시지들을 TAG로 분별하여 필요한 메시지를 가져가는 방식이다. 직접 메모리를 공유하는 방식에 비해 비효율적인 것은 사실이지만, 이를 통해 네트워크만 연결되어있으면 여러 계산자원을 동시에 사용할 수 있다는 장점이 있다.

 

 

 MPI, Message Passing Interface _____________

 

어쨋든 MPI는 위와 같은 메시지 전달방식의 병렬 프로그래밍을 위한 표준화된 데이터 통신 라이브러리이다. 공학에서 표준이란 단어는 참 많이 나오는데, 많은 사람이 쓰는 개념일수록 그들간에 소통을 용이하도록 규칙을 정한 것이다. 1994년 MPI-1 표준(링크)이 마련된 후 버전 2, 3 등 업그레이드가 되고있다. 간단히 기본 개념들을 살펴보자.

 

˙프로세서 vs 프로세스 (Processor vs. Process)

    난데없이 프로세서와 프로세스를 비교하는 이유는 MPI 가 프로세스를 기준으로 작업을 할당하기 때문이다. 둘을 비교해보면, 로세서는 컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛 또는 데이터 처리 시스템을 뜻하고, 프로세스는 절차 혹은 과정 그 자체를 뜻한다. 프로세스는 어떤 목적을 수행하기 위한 목록 정도로 보면된다. 흔히 생각하는 컴퓨터의 응용 프로그램도 실행이 되어 컴퓨터가 처리해야할 작업들을 나열해주니, 프로세스 범주에 속할 수 있겠다. 이를 기초로 MPI의 개념을 공부하면 더욱 이해하기 쉬울 것이다. MPI를 통한 작업은, 프로세스들을 프로세서에게 부여하여 처리하고 프로세서 끼리 결과를 송수신하기를 반복하며 그 목적을 수행하게 된다.

 

˙메시지 (데이터 + 봉투)

    메시지라는 것은 데이터를 봉투에 담아있는 상태로 볼 수 있다. 이 메시지 안에는 데이터 뿐만 아니라 (1) 어떤 프로세스가 보내고 받는지; (2) 어디에 데이터가 있는지; (3) 데이터의 크기는 얼마이고 얼마나 공간을 확보해야하는지 등 프로세서간 통신하는데 필요한 정보들을 담고 있다.

 

 

˙꼬리표 (Tag)

메시지를 매칭하기 위해 다는 구분자이다. 순서대로 메시지 도착을 처리할 수도 있고, 와일드 카드를 사용할 수도 있다. 메시지의 고유 번호라고 생각하면 되겠다.

 

˙커뮤니케이터(Communicator)와 랭크(Rank)

커뮤니케이터란 통신이 허용되는 프로세서들의 집합이다. 그리고 각 프로세서들을 식별하기 위해서 Rank를 붙여준다.

반응형

댓글