병렬 프로그래밍 예제

컴퓨터 시스템은 캐시를 사용합니다- 메모리 값의 임시 복사본을 저장하는 프로세서 가까이에 있는 작고 빠른 메모리(물리적 및 논리적 의미 모두 근처)를 사용합니다. 병렬 컴퓨터 시스템에는 동일한 값을 두 개 이상의 위치에 저장할 수 있는 캐시에 문제가 있으며 잘못된 프로그램 실행이 발생할 수 있습니다. 이러한 컴퓨터에는 캐시된 값을 추적하고 전략적으로 제거하여 올바른 프로그램 실행을 보장하는 캐시 일관성 시스템이 필요합니다. 버스 스누핑은 액세스중인 값을 추적하는 가장 일반적인 방법 중 하나입니다 (따라서 제거해야합니다). 대규모 고성능 캐시 일관성 시스템을 설계하는 것은 컴퓨터 아키텍처에서 매우 어려운 문제입니다. 결과적으로 공유 메모리 컴퓨터 아키텍처는 분산 메모리 시스템뿐만 아니라 확장되지 않습니다. [37] 클러스터는 느슨하게 결합된 컴퓨터 그룹으로, 어떤 면에서는 단일 컴퓨터로 간주될 수 있도록 긴밀하게 협력합니다. [42] 클러스터는 네트워크에 의해 연결된 여러 독립 실행형 컴퓨터로 구성됩니다. 클러스터의 컴퓨터가 대칭일 필요는 없지만 그렇지 않은 경우 부하 분산이 더 어렵습니다. 클러스터의 가장 일반적인 유형은 Beowulf 클러스터로, TCP/IP 이더넷 로컬 영역 네트워크와 연결된 여러 개의 동일한 상용 상용 컴퓨터에 구현된 클러스터입니다. [43] 보울프 기술은 원래 토마스 스털링과 도널드 베커에 의해 개발되었다.

모든 Top500 슈퍼컴퓨터의 87%가 클러스터입니다. [44] 나머지는 대규모 병렬 프로세서, 아래에 설명. 이제 우리의 실제 문제로 돌아 갑시다. 2명의 대기열과 2명의 계산원이 동시에 2명에게 티켓을 제공하면 복잡성이 감소할 것이라고 말할 수 있습니다. 병렬 컴퓨팅의 예입니다. 병렬 컴퓨터를 프로그래밍하기 위해 동시 프로그래밍 언어, 라이브러리, API 및 병렬 프로그래밍 모델(예: 알고리즘 스켈레톤)이 만들어졌습니다. 일반적으로 기본 메모리 아키텍처(공유 메모리, 분산 메모리 또는 공유 분산 메모리)에 대한 가정에 따라 클래스로 나눌 수 있습니다. 공유 메모리 프로그래밍 언어는 공유 메모리 변수를 조작하여 통신합니다.

분산 메모리는 메시지 전달을 사용합니다. POSIX 스레드와 OpenMP는 가장 널리 사용되는 공유 메모리 API 중 두 가지인 반면 MPI(메시지 전달 인터페이스)는 가장 널리 사용되는 메시지 전달 시스템 API입니다. [56] 병렬 프로그램 프로그래밍에 사용되는 한 가지 개념은 프로그램의 한 부분이 미래의 프로그램의 다른 부분에 필요한 데이텀을 제공할 것을 약속하는 미래의 개념입니다. 전력 소비 문제를 처리하고 주요 중앙 처리 장치 (CPU 또는 프로세서) 제조업체는 여러 코어와 전력 효율적인 프로세서를 생산하기 시작했다. 코어는 프로세서의 컴퓨팅 장치이며 멀티 코어 프로세서의 각 코어는 독립적이며 동일한 메모리에 동시에 액세스할 수 있습니다. 멀티 코어 프로세서는 데스크톱 컴퓨터에 병렬 컴퓨팅을 가져왔습니다.