@Raphael이 지적한 것처럼 분산 컴퓨팅은 병렬 컴퓨팅의 하위 집합입니다. 병렬 컴퓨팅은 Concurrent Computing의 하위 집합입니다.
동시성 은 공유를 나타냅니다같은 시간 프레임에 자원의. 예를 들어 여러 프로세스가 동일한 CPU (또는 CPU 코어)를 공유하거나 메모리 또는 I / O 장치를 공유합니다. 운영 체제는 공유 리소스를 관리합니다. 멀티 프로세서 시스템과 분산 시스템은 동시성 제어가 중요한 역할을하는 아키텍처입니다. 동시성은 하드웨어 및 소프트웨어 수준에서 발생합니다. 여러 장치가 동시에 작동하고 프로세서에는 내부 병렬 처리가 있으며 여러 명령에 대해 동시에 작업하고 시스템에는 여러 개의 프로세서가 있으며 시스템은 네트워크 통신을 통해 상호 작용합니다. 동시성은 응용 프로그램 레벨에서 신호 처리, I / O 및 처리의 중첩, 통신, 프로세스 간 또는 동일한 프로세스의 스레드간에 자원 공유에서 발생합니다.
동일한 시스템에서 실행되는 두 프로세스 (또는 스레드)는 실행이 동시에 인터리브되도록합니다. 프로세스 (스레드)는 CPU 리소스를 공유합니다. 나는 다음 정의를 좋아한다 : 동일한 시스템에서 실행되는 두 프로세스 (스레드)는 첫 번째 프로세스 (스레드)가 아직 실행을 종료하지 않았을 때 두 번째 프로세스 (스레드)가 실행을 시작하는 경우에만 동시 적이다.
프로세스 (또는 스레드)가 다른 CPU (또는 동일한 CPU의 코어 )에서 실행될 때 동시성은 병렬 처리가됩니다 . 이 경우의 병렬 처리는 "가상"이 아니라 "실제"입니다.
이러한 CPU가 동일한 머신에 속하는 경우 계산을 "병렬"이라고합니다. CPU가 다른 머신 에 속할 경우 지리적으로 분산 될 수 있으므로 계산을 "분산"이라고합니다.
따라서 분산 컴퓨팅은 병렬 컴퓨팅의 하위 집합이며 동시 컴퓨팅의 하위 집합입니다.
물론, 일반적으로 병렬 컴퓨팅과 분산 컴퓨팅은 다른 것으로 간주됩니다. 병렬 컴퓨팅은 밀접하게 연결된 응용 프로그램과 관련이 있으며 다음 목표 중 하나를 달성하는 데 사용됩니다.
- 계산 집약적 인 문제를 더 빨리 해결하십시오.
- 같은 시간에 더 큰 문제를 해결하십시오.
- 같은 시간에 같은 크기의 문제를 더 높은 정확도로 해결하십시오.
과거에 첫 번째 목표는 병렬 컴퓨팅의 주된 이유였습니다. 문제 해결 가속화. 지금, 그리고 가능하면, 과학자들은 주로 (두 번째 목표를 달성하기 위해 병렬 컴퓨팅을 사용하여 예를 들어, 그들은 시간의 같은 양의 지출하고자하는 그들이 크기의 병렬 문제에서 과거의 해결에 소요 된 지금 문제를 해결하기 위해 크기의 즉,) 또는 세 번째 (, 그들은 시간의 같은 양의 지출하고자하는 그들이 크기의 병렬 문제에서 과거의 해결에 소요 된 현재 크기의 문제를 해결하기 위해Tx5xTxx그러나 훨씬 더 복잡한 모델, 더 많은 방정식, 변수 및 제약 조건을 사용하여 더 높은 정확도로). 병렬 컴퓨팅은 공유 메모리, 메시지 전달 또는 둘 다를 사용할 수있다 (예를 들어, OpenMP를 사용하는 공유 메모리 인트라 노드, MPI를 사용하는 메시지 전달 노드 간); GPU 가속기를 사용할 수도 있습니다. 응용 프로그램은 하나의 병렬 슈퍼 컴퓨터에서 실행되므로 일반적으로 오류, 네트워크 파티션 등과 같은 문제는 고려하지 않습니다. 이러한 이벤트의 가능성은 실제적인 목적으로 거의 0에 가깝기 때문입니다. 그러나 기후 변화 시뮬레이션과 같은 수개월 동안 실행될 수있는 대규모 병렬 어플리케이션은 일반적으로 실패와 관련이 있으며, 문제 발생시 처음부터 다시 시작하지 않도록 체크 포인트 / 재시작 메커니즘을 사용합니다.
분산 컴퓨팅은 (에 대한 목표하는 느슨하게 결합 된 애플리케이션 관련이 분산 슈퍼 컴퓨팅는 ) 그 실행 다른 아키텍처에서 실행 혜택을 누릴 수있는 다른 구성 요소에 나누어 질 수있다, 그렇지 않으면 너무 크거나 문제를 해결하는 것입니다. 클라이언트-서버, 피어-투-피어 등을 포함한 여러 모델이 있습니다. 보안, 장애, 네트워크 파티션 등과 같은 분산 컴퓨팅에서 발생하는 문제는 설계시 고려되어야합니다. 이러한 맥락에서 장애는 규칙이며 예외는 아닙니다.
마지막으로 그리드 및 클라우드 컴퓨팅은 분산 컴퓨팅의 하위 집합입니다. 그리드 컴퓨팅 패러다임은 대규모 리소스 공유 및 혁신적인 고성능 애플리케이션에 중점을 두어 기존 분산 컴퓨팅과 차별화 된 새로운 분야로 부상했습니다. 공유되는 자원은 대개 여러 개의 다른 관리 도메인 (소위 가상 조직 )에 속합니다 . 그리드 컴퓨팅은 지난 10 년간 과학자들에 의해 많이 사용되었지만, 일반 사용자에게는 전통적으로 어렵습니다. 클라우드 컴퓨팅은 일반 사용자가 가상 머신을 사용하여 동일한 데이터 센터에 배치되어 지리적으로 분산되지 않은 여러 머신을 쉽게 이용할 수 있도록하여 격차를 해소하려고합니다.사용자가 응용 프로그램을 실행하기 위해 모을 수 있습니다. 하드웨어, 특히 고성능 네트워크 인터커넥트 (예 : Infiniband 등)가 없기 때문에 클라우드는 병렬 MPI 애플리케이션을 실행하지 않습니다. 클라우드에서 실행되는 분산 응용 프로그램은 일반적으로 Map / Reduce 패러다임을 활용하기 위해 구현됩니다. 그런데 많은 사람들이 Map / reduce를 병렬 데이터 흐름 모델로 생각합니다.