병렬 및 분산 컴퓨팅


15

병렬 컴퓨팅과 분산 컴퓨팅의 차이점은 무엇입니까? 확장 성과 효율성에 관해서는 머신 클러스터에서 계산을 처리하는 솔루션을 보는 것이 매우 일반적이며 병렬 처리 또는 분산 처리라고도합니다.

어떤 식 으로든 동시에 실행되는 것이 있기 때문에 계산은 항상 병렬 인 것처럼 보입니다. 그러나 분산 계산은 단순히 하나 이상의 기계를 사용하는 것과 관련이 있습니까, 아니면이 두 종류의 처리를 구별하는 다른 특징이 있습니까? 예를 들어 계산이 병렬 이고 분산 되어 있다고 말하는 것이 과도하지 않습니까?

답변:


16

간단히 말해 '병렬'은 서로 다른 리소스 (CPU)에서 동시에 실행되는 것을 의미하고 '분산'은 네트워크와 관련된 문제를 포함하여 개별 컴퓨터에서 실행하는 것을 의미합니다.

예를 들어 OpenMP를 사용하는 병렬 컴퓨팅 은 배포되지 않지만 메시지 전달을 사용한 병렬 컴퓨팅 은 종종 배포됩니다.

'분산되었지만 병렬이 아님'설정은 리소스 사용률이 낮다는 것을 의미하므로 거의 발생하지 않지만 개념적으로 가능합니다.


4

"병렬 컴퓨팅"과 "분산 컴퓨팅"이라는 용어는 확실히 큰 중복을 갖지만 더 차별화 될 수 있습니다. 실제로, 당신은 이미 "병렬 처리"와 "분산 처리"에 대해 질문함으로써 당신의 질문에 이미 이것을했습니다.

"분산 컴퓨팅"및 "분산 스토리지"를 포함하는보다 일반적인 용어로 "분산 컴퓨팅"을 고려할 수 있습니다. 일반적으로 "분산 된"이라는 용어는 일반적으로 물리적으로 분리 된 시스템간에 네트워크를 통한 일종의 메시지 전달 을 의미합니다 .

용어 "병렬 컴퓨팅"명시 적 용어 "평행"구별에 의해 예를 들어 상기 정의되는 과정에서 또한 "동시"어디 - 약 - 첫 번째 지칭 데이터 병렬 및 행 후자 태스크 병렬 비록을 거기 실제로 엄격하고 구속력있는 정의는 거의 없습니다.

그래서 말할 수 있습니다

  • "분산 처리"는 일반적으로 (필수는 아니지만) "병렬 처리"이기도 함을 의미합니다.
  • "분산 컴퓨팅"이 더 일반적이며 병렬 처리와 관련이없는 측면도 포함합니다.
  • 그리고 "병렬 컴퓨팅"/ "병렬 프로세싱"은 "분산"을 의미하지 않습니다.

3

지금까지 제시된 답변은 매우 훌륭하지만 병렬 처리와 분산 처리의 특정 차이점, 즉 코드 실행에 중점을 두었습니다. 병렬 프로세스를 고려하면 병렬 처리 수준 (명령, 데이터, 작업)에 관계없이 실행 된 코드는 동일합니다. 단일 코드를 작성하면 행렬 제품을 계산하거나 순열을 생성하는 등 다른 스레드 / 프로세서에 의해 실행됩니다.

반면에 분산 컴퓨팅은 다른 프로세서 (하나 이상의 머신에서)에서 다른 알고리즘 / 프로그램을 동시에 실행하는 것을 포함합니다. 이러한 계산은 나중에 이용 가능한 데이터 통신 / 동기화 수단 (공유 메모리, 네트워크)을 사용하여 중간 / 최종 결과로 병합됩니다. 또한 분산 컴퓨팅은 디스크 병렬 처리 (대개 큰 데이터베이스의 병목 현상)를 이용할 수 있으므로 BigData 처리에 매우 매력적입니다.

마지막으로 병렬 처리 수준의 경우 동기화에 대한 제약 조건으로 간주 될 수 있습니다. 예를 들어, SIMD (Single-instruction Multiple-Data) 인 GPGPU에서, 병렬화는 단일 명령에 대해 서로 다른 입력을 가짐으로써 발생하며, 각 쌍 (data_i, 명령) 은 다른 스레드에 의해 실행됩니다. 분기 분기의 경우 스레드가 다시 수렴 될 때까지 불필요한 계산을 많이 버려야합니다. 그러나 CPU 스레드의 경우 일반적으로 분기됩니다. 그러나 동기화 구조를 사용하여 코드의 특정 섹션을 동시에 실행할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.