메시지 전달 인터페이스(Message Passing Interface, MPI)는 분산 및 병렬 처리에서 정보의 교환에 대해 기술하는 표준이다. 병렬 처리에서 정보를 교환할때 필요한 기본적인 기능들과 문법, 그리고 프로그래밍 API 에 대해 기술하고 있지만 구체적인 프로토콜이나 각각의 구현에 대한 것에 대해서는 기술하지 않는, 하나의 거시적인 테두리를 정해주는 표준으로 이해 할 수 있다.
실제적인 MPI 애플리케이션은 서로 정보를 주고받는 여러개의 프로세스들로 이루어져 있는데, 이 각각의 프로세스들은 MPI 애플리케이션이 구동될때에 모두 병렬적으로 시작된다. 이 각각의 프로세스들은 모두 하나의 문제를 풀기위해 한 프로세스에서 다른 프로세스로 데이터와 정보들을 필요에 따라 서로 주고 받게된다. 이러한 원리의 장점은 하드웨어적으로 분산되어있는 컴퓨터들 간에도 이런 데이터와 정보들을 주고 받을 수 있다는 점이다. 그래서 특별히 병렬처리를 위해 만들어진 병렬 컴퓨터(공유 메모리를 지녔다거나, Infiniband 혹은 Myrinet 등을 통해 고속으로 정보를 주고받는 것이 가능하게 만들어진) 뿐만 아니라, (TCP를 통해 정보들이 교환되는) PC 들로 이루어진 PC 클러스터(PC-Cluster) 에서도 이런 병렬 MPI 프로그램들은 잘 돌아간다.
[편집]함께 보기
[숨기기] 병렬 컴퓨팅 | |
---|---|
일반 | 클라우드 컴퓨팅 · 고성능 컴퓨팅 · 클러스터 컴퓨팅 · 분산 컴퓨팅 · 그리드 컴퓨팅 |
병렬화 수준 | 비트 · 명령어 · 데이터 · 테스크 |
스레드 | 슈퍼스레딩 · 하이퍼스레딩 |
이론 | 암달의 법칙 · 구스타프손의 법칙 · 비용 효과 · Karp–Flatt metric · slowdown · speedup |
구성 요소 | 프로세스 · 스레드 · Fiber · PRAM · Instruction window |
조정 | 다중 처리(대칭형 · 비대칭형) · 멀티스레딩 · 메모리 일관성 · 캐시 일관성 · Barrier · 동기화 ·Application checkpointing |
프로그래밍 | 모델(내재적 병렬성 · 외재적 병렬성 · 동시성) · 플린의 분류학(SISD · SIMD · MISD · MIMD) |
하드웨어 | 메모리(NUMA · COMA · 분산 · 공유 · 분산 공유) · SMT · SMP · MPP · 슈퍼스칼라 · 벡터 프로세서 · 슈퍼컴퓨터 ·베어울프(Beowulf) |
API | POSIX 스레드 · OpenMP · PVM · MPI · UPC · 인텔 스레딩 빌드 블록 · Boost.Thread · 전역 배열 · Charm++ · Cilk ·Co-array Fortran · OpenCL · CUDA |
문제 | 처치 곤란 병렬 문제 · Grand Challenge · Software lockout · 확장성 · 경쟁 상태 · 교착 상태 · 라이브락 ·결정론적 알고리즘 · Parallel slowdown |
Message Passing Interface (메시지 전달 인터페이스, MPI )는 병렬 컴퓨팅 이용하기위한 표준화 된 규격이다. 구현 자체를 가리 키기도한다.
여러 CPU가 정보를 바이트로 구성된 메시지로 전송하여 함께 작동 할 수 있도록한다. 자유롭게 사용할 수있는 구현은MPICH 가 유명하다. 그 밖에도 상용 벤더 등에 의한 독자적인 구현이 존재한다.
라이브러리 수준에서 병렬이기 때문에 언어를 불문하고 사용할 수 프로그래머가 세밀한 튜닝을 할 수 있다는 장점이있는 반면, 작동은 명시 적으로 절차를 설명해야 잠금 처리 등도 프로그래머 측이 큰 책임을 가져야한다.
업계 단체 나 연구자들의 멤버로 구성된 MPI Forum에 의해 표준이 명확하게 정의되어 있기 때문에 어떤 환경에서 만든 프로그램이 다른 환경에서도 동작 할 것으로 기대된다.
구현 [ 편집 ]
외부 링크 [ 편집 ]
- Message Passing Interface Forum
- The Message Passing Interface (MPI) standard
- NAG parallel Library
- OpenMPI
'Computer Science > Parallel Computing' 카테고리의 다른 글
CUDA(Compute Unified Device Architecture) (0) | 2013.03.25 |
---|---|
OpenMP (0) | 2013.03.25 |
CUDA - Host Memory와 Device Memory의 사이의 데이터 전송 (0) | 2013.03.25 |
병렬 컴퓨팅 (0) | 2012.11.03 |
browser.getSettings().setJavaScriptEnabled(true); //javascript 사용 가능하게 한다
final Context myApp = this;
browser.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)
{
new AlertDialog.Builder(myApp)
.setTitle("AlertDialog")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
result.confirm();
}
})
.setCancelable(false)
.create()
.show();
return true;
};
});
browser.loadUrl(/*웹 페이지 주소*/);