2011-04-29 7 views
4

최근에 병렬 도메인에서 작업하면서 "수직 병렬 처리"와 "수평 병렬 처리"라는 두 가지 용어가 있음을 알게되었습니다. 어떤 사람들은 openmp (공유 메모리 병렬 처리)를 수직으로, mpi (분산 메모리 병렬 처리)는 수평 병렬 처리라고 말합니다. 왜이 용어들이 그렇게 부르는지? 나는 이유를 얻지 못하고있다. 그들을 그렇게 부르는 용어일까요?수직 및 수평 병렬 처리

+0

나는 잠시 동안 이런 종류의 일을 해왔고, 내 인생에서 결코 그 용어를 듣지 못했고, 그들이 여기서 의미하기로되어있는 것을 짐작할 수도 없다. –

+2

나는이 용어에 대해 들어 봤지만, 나는 프로세서에서만 사용되는 것을 보았다. 수평 병렬 처리는 여러 개의 독립적 인 연산이 동시에 실행될 때 발생합니다 (예 : 병렬로 실행되는 여러 개의 연산 단위가있는 프로세서에서). 수직 병렬 처리는 작업 시퀀스의 여러 단계가 겹쳐져있는 경우입니다 (예 : 파이프 라이닝을 사용하는 프로세서). – ejd

+0

나는 항상 더 구체적인 용어가 사용 된 것을 항상 들었습니다. 캐치 올 용어로 "수직적 병렬성"보다는 ILP 또는 파이프 라이닝이 필요합니다. 하지만 OMP, MPI, GPGPU 측정 값은 기본적으로 모두 수평일까요? (아, 그리고 당신의 의견을 대답 그래서 나는 그것을 upvote 수 있습니다 _I_ 어쨌든, 배웠습니다 ...) –

답변

5

이 용어는 프로세스 또는 시스템이 구별없이 둘 다 사용하는 경우가 많으므로 널리 사용되는 것 같지 않습니다. 이 개념은 MPI 나 openmp의 영역보다 훨씬 포괄적 인 매우 일반적인 개념입니다.

수직 병렬 처리는 시스템이 여러 다른 장치를 동시에 사용하는 능력입니다. 예를 들어, 프로그램은 많은 계산을 수행하는 쓰레드를 가질 수 있고, 다른 하나는 DB 질의를 처리하고, 세 번째는 IO를 처리 할 수 ​​있습니다. 대부분의 운영 체제는 자연스럽게이 교수를 노출합니다.

수평 병렬 처리는 단일 장치가 사용되거나 여러 유사한 데이터 항목에서 작업이 실행될 때 발생합니다. 이것은 같은 코드에서 여러 스레드를 실행할 때 발생하는 병렬 처리의 일종이지만 다른 데이터를 사용합니다. 소프트웨어 세계에서

는 흥미로운 예를 실제로지도를 모두 사용하는 알고리즘을 줄일 수 있습니다 :

데이터를 분할 처리를 위해 여러 CPU를 건너 흩어져 때 수평 병렬 처리,지도 단계에서 발생
  • ,

  • 수직 병렬 맵 사이에 발생하는 데이터는 먼저 감소 스레드가 그 스레드지도 처리 청크로 분할하고, 축적 단계를 줄일

,

마찬가지로 하드웨어 업계에서 슈퍼 스칼라 파이프 라인 CPU는 파이프 라이닝이 수직 병렬화의 특정 인스턴스 인 두 가지 변형을 사용합니다 (지도/축소 스테이징과 마찬가지로 몇 가지 단계가 더 있음).

이 용어를 사용하는 이유는 공급망과 함께 사용되는 것과 같은 이유 때문일 수 있습니다. 값은 여러 단계 또는 처리 수준을 연결하여 생성됩니다. 최종 제품은 각 노드가 중간 단계 또는 단계의 결과 인 추상 트리 구조의 루트 (아래에서 위로) 또는 종속성 (위에서 아래로)으로 볼 수 있습니다. 공급 체인과 계산 사이의 유추를 쉽게 볼 수 있습니다.

관련 문제