본문 바로가기
Engineer/병렬컴퓨팅

개념-2 : Data parallelism vs. Task parallelism

by _제이빈_ 2020. 3. 24.

본 포스트에서는 4가지* 중 프로그래밍 관점에서 다룰 수 있는 Data parallelism과 Task parallelism에 대해서 다룬다. 

*병렬화는 Bit parallelism과 Instruction parallelism

그리고 Data parallelism과 Task parallelism로 4가지로 나뉜다.

 

Data Parallelism은 다수의 자료들을 다수의 수행 주체(Processor)가 나누어 병렬적으로 처리하는 방법이다. 플린의 분류법(Flynn’s taxonomy)은 병렬적으로 수행되는 명령의 수와, 데이터 간의 관계를 정리한 분류로 이해하는데 도움이 된다. 일반적으로 SIMD(Single Instruction Multiple Data)나 MIMD(Multiple Instruction Multiple Data) architecture에서 Data Parallelism이 적용된다. 

 

 

Data Parallelism의 일례는 Loop문의 병렬화이다. Loop 문은 특정 Instruction을 반복하는 것을 뜻한다. 그리고 반복을 하는 이유는 동일한 메커니즘을 여러 대상에 대해서 적용하기 위한 것이기 때문에 손쉽게 적용이 가능하다. 즉, Data parallelism은 Data에 초점을 맞추고, 반복적인 메커니즘을 병렬적으로 수행하고자 하는 것이다.  

Task Paralism을 Data Parallelism과 비교해 이해해보자. Data parallelism은 동일한 메커니즘의 반복적수행을 병렬화하는 것이다. 반면 Task Parallelism은 동일한 Data 혹은 서로 다른 Data 들에 대하여 서로 다른 작업들을 병렬적으로 수행하기 위한 방법이다.

 

 

Data Parallelism

- 동일한 데이터의 다른 하위 집합에서 동일한 작업을 수행한다.

- 동기식 연산(Synchronous computation)을 수행한다.

- 모든 데이터 세트에서 동작하는 실행 스레드가 하나뿐이기 때문에 속도 향상은 더욱 빠르다.

- 병렬화의 양은 입력 크기에 비례한다.

- 멀티프로세서 시스템의 최적 부하 균형을 위해 설계되었다.

 

Task Paralism

- 동일하거나 다른 데이터에 대해 다른 작업을 수행한다.

- 비동기 연산(Asynchronous computation)을 수행한다.

- 각 프로세서가 동일하거나 다른 데이터 집합에서 서로 다른 스레드 또는 프로세스를 실행하므로 속도 향상은 적다.

- 병행화의 양은 독립적인 업무의 수에 비례한다.

- 여기서 로드 밸런싱은 하드웨어의 e 가용성과 정적 및 동적 스케줄링과 같은 스케줄링 알고리즘에 따라 달라진다.

 

참고:

http://egloos.zum.com/himskim/v/3277331

https://www.tutorialspoint.com/data-parallelism-vs-task-parallelism

반응형

댓글