강좌

병렬처리 개념 강좌: #4 2가지 종류의 병렬처리

하늘흐늘 2021. 11. 7. 11:56
반응형

병렬처리는 사용 개념적으로 보았을 때 크게 데이터 처리 기반 병렬처리와 태스크 처리 기반 병렬처리로 나누어 질 수 있습니다.

 

데이터 처리 기반 병렬 처리(Data Parallelism)

큰 데이터를 분할하여 여러 개의 프로세스가 처리하는 것을 말합니다. 
간단히 4개 코어를 기반으로 100개의 데이터를 처리한다고 하였을 때 1~25, 26~50, 51~75, 76~100 이렇게 데이터를 나누어서 4개의 코어가 각각 처리하는 것을 예로 들 수 있습니다. 이렇게 처리하면 데이터를 처리하는 부분은 이론적으로 N배의 성능 향상을 가져올 수 있습니다. 

 

태스크 처리 기반 병렬 처리(Task Parallelism)

여러 개의 작업을 각각의 프로세스에게 분배하여 다중 처리하는 것을 의미합니다. 
3개의 코어가 3개의 함수를 각각 실행하는 예를 살펴볼 수 있습니다. 위의 그림의 예는 파이프닝 예를 나타낸 것입니다. 각각의 파이프 함수가 데이터를 가공하여 다음 파이프 함수에 데이터를 넘기는 형태입니다. 각각의 파이프 함수를 각각의 프로세스에 할당하여 N배의 성능향상을 추구할 수 있습니다.

이 글에서는 병렬처리의 개념적인 2가지 형태를 살펴보았습니다. 이 형태를 살펴본 이유는 실제적으로 병렬처리 관련 라이브러리 내의 API들이 크게 이 2가지 형태를 가지고 있기 때문입니다. 

반응형