단일 프로그램, 다중 데이터

Single program, multiple data

컴퓨팅에서 단일 프로그램 다중 데이터(SPMD)는 병렬 처리를 달성하기 위해 사용되는 기술입니다.MIMD의 하위 카테고리입니다.더 빠른 결과를 얻기 위해 태스크는 다른 입력의 여러 프로세서에서 동시에 분할되어 실행됩니다.SPMD는 가장 일반적인 병렬 프로그래밍 [1][failed verification]스타일입니다.액티브 메시지나 분산 공유 메모리와 같은 연구 개념의 전제 조건이기도 합니다.

SPMD와 SIMD의 비교

SPMD에서는 SIMD 또는 SIMT가 다른 데이터에 부과하는 록스텝이 아닌 여러 Autonomous Processor가 독립된 포인트에서 동일한 프로그램을 동시에 실행합니다.SPMD를 사용하면 범용 CPU에서 작업을 실행할 수 있습니다.SIMD에는 데이터 스트림을 조작하기 위한 벡터 프로세서가 필요합니다.이 두 가지는 서로 배타적이지 않습니다.

분산 메모리

SPMD는 일반적으로 분산 메모리 컴퓨터 아키텍처에서의 메시지 전달 프로그래밍을 말합니다.분산 메모리 컴퓨터는 노드라고 불리는 독립 컴퓨터의 모음으로 구성됩니다.각 노드는 독자적인 프로그램을 기동해, 메시지를 송수신 해, 송수신 루틴을 호출해 다른 노드와 통신합니다.장벽 동기화는 메시지로도 구현될 수 있습니다.메시지는 TCP/IP over Ethernet 의 다양한 통신 메커니즘이나 Myrinet이나 Supercomputer Interconnect 등의 특수한 고속 인터커넥트로 송신할 수 있습니다.프로그램의 시리얼 섹션은 한 노드에서 결과를 계산하여 다른 노드에 보내는 것이 아니라 모든 노드에서 동일한 연산에 의해 구현됩니다.

오늘날 프로그래머는 PVM이나 MPI와 같은 표준 인터페이스를 통해 전달되는 메시지의 세부 정보로부터 격리됩니다.

분산 메모리는 자생 Beowulf 클러스터에서 Teragrid의 가장 큰 클러스터까지 병렬 슈퍼컴퓨터에 사용되는 프로그래밍 스타일입니다.

공유 메모리

공유 메모리 머신(같은 메모리 공간에 액세스 하는 복수의 CPU를 갖춘 컴퓨터)에서는, 공유 메모리 영역에 컨텐츠를 보존하는 것으로 메세지를 송신할 수 있습니다.이 방법은 특히 메모리가 프로세서에 로컬이고 다른 프로세서의 메모리에 액세스하는 데 시간이 오래 걸리는 NUMA 시스템에서 많은 프로세서가 있는 공유 메모리 컴퓨터를 프로그래밍하는 가장 효율적인 방법입니다.공유 메모리 머신의 SPMD는 보통 표준(헤비웨이트) 프로세스에 의해 구현됩니다.

SPMD와는 달리 공유 메모리 멀티프로세싱(대칭 멀티프로세서, SMP 및 NUMA)은 프로그래머에게 공통 메모리 공간을 제공하고 프로그램이 다른 프로세서 상에서 다른 경로를 통과하도록 함으로써 실행을 병렬화할 수 있는 가능성을 제공합니다.프로그램은 1개의 프로세서에서 실행을 시작하고 병렬 영역에서 실행이 분할되며 병렬 명령이 있을 때 실행됩니다.병렬 영역에서 프로세서는 서로 다른 데이터에 대해 단일 프로그램을 실행한다.일반적인 예로는 병렬 DO 루프가 있습니다.이 경우, 다른 프로세서가 루프에 관여하는 어레이의 다른 부분에서 동작합니다.루프의 마지막에 실행이 동기화되고 1개의 프로세서만 계속되며 나머지 프로세서는 대기합니다.공유 메모리 멀티프로세싱의 현재 표준 인터페이스는 OpenMP입니다.일반적으로 스레드라고 불리는 경량 프로세스에 의해 구현됩니다.

병렬 수준 조합

현재 컴퓨터에서는 동시에 여러 병렬 모드를 이용하여 최대한의 효과를 얻을 수 있습니다.MPI를 사용하는 분산 메모리 프로그램은 노드 집합에서 실행될 수 있습니다.각 노드는 공유 메모리 컴퓨터이며 OpenMP를 사용하여 여러 CPU에서 병렬로 실행할 수 있습니다.각 CPU 내에서 SIMD 벡터 명령(일반적으로 컴파일러에 의해 자동으로 생성됨)과 슈퍼스케일러 명령 실행(일반적으로 CPU 자체에 의해 투명하게 처리됨)은 파이프라인 처리 및 여러 병렬 기능 유닛의 사용과 같습니다.단일 CPU 속도를 최대화하기 위해 사용됩니다.

역사

SPMD는 1983년 OPSILA 병렬[3] 컴퓨터에서 Michel Auguin(Nice Sophia-Antipolis 대학)과 Francia Larbey(Thomson/Sintra)에 의해 처음 제안되었으며, 1984년 IBM의 Frederica Darema가 IBM의 RP3(IBM Research Parallel 프로세서)와 같은 고병렬 기계에 대해 IBM의 프로토타입에서 제안되었습니다.1980년대 후반에는 독점적인 메시지 전달 라이브러리를 가진 많은 분산 컴퓨터가 있었다.첫 번째 SPMD 표준은 PVM이었습니다.현재의 사실상의 기준은 MPI이다.

Cray 병행 디렉티브OpenMP의 직접 이전 버전입니다.

레퍼런스

  1. ^ "Single program multiple data".
  2. ^ Flynn, Michael J. (September 1972). "Some Computer Organizations and Their Effectiveness" (PDF). IEEE Transactions on Computers. C-21 (9): 948–960. doi:10.1109/TC.1972.5009071.
  3. ^ M. Auguin, F. Larbey, OPSILA: 마이크로컴퓨터에서의 수치분석 및 신호처리를 위한 고급 SIMD: 산업, 비즈니스, 교육 분야에서의 발전 / 제9회 마이크로프로세싱 및 마이크로프로그래밍에 관한 EUROMICRO 심포지엄, pp 311-318 마드리드, 1983년 9월 13-16일
  4. ^ F. Darema, SPMD 모델: 과거, 현재, 미래, 병렬 가상 머신 및 메시지 전달 인터페이스의 최근 진보: 제8회 유럽 PVM/MPI 사용자 그룹 미팅, 산토리니/테라, 그리스, 2001년 9월 23-26일컴퓨터 사이언스 강의 노트 2131, 페이지 1, 2001.

외부 링크