반응형
병렬처리는 사용 개념적으로 보았을 때 크게 데이터 처리 기반 병렬처리와 태스크 처리 기반 병렬처리로 나누어 질 수 있습니다.
데이터 처리 기반 병렬 처리(Data Parallelism)
큰 데이터를 분할하여 여러 개의 프로세스가 처리하는 것을 말합니다.
간단히 4개 코어를 기반으로 100개의 데이터를 처리한다고 하였을 때 1~25, 26~50, 51~75, 76~100 이렇게 데이터를 나누어서 4개의 코어가 각각 처리하는 것을 예로 들 수 있습니다. 이렇게 처리하면 데이터를 처리하는 부분은 이론적으로 N배의 성능 향상을 가져올 수 있습니다.
태스크 처리 기반 병렬 처리(Task Parallelism)
여러 개의 작업을 각각의 프로세스에게 분배하여 다중 처리하는 것을 의미합니다.
3개의 코어가 3개의 함수를 각각 실행하는 예를 살펴볼 수 있습니다. 위의 그림의 예는 파이프닝 예를 나타낸 것입니다. 각각의 파이프 함수가 데이터를 가공하여 다음 파이프 함수에 데이터를 넘기는 형태입니다. 각각의 파이프 함수를 각각의 프로세스에 할당하여 N배의 성능향상을 추구할 수 있습니다.
이 글에서는 병렬처리의 개념적인 2가지 형태를 살펴보았습니다. 이 형태를 살펴본 이유는 실제적으로 병렬처리 관련 라이브러리 내의 API들이 크게 이 2가지 형태를 가지고 있기 때문입니다.
반응형
'강좌' 카테고리의 다른 글
C++ boost 메모리풀 강좌 #3: singleton_pool 클래스를 이용하여 일반 클래스에 메모리풀 적용하기 (0) | 2021.11.13 |
---|---|
C++ boost 메모리풀 강좌 #2: pool 클래스를 이용하여 버퍼에 메모리풀 적용하기 (0) | 2021.11.12 |
C++ boost 메모리풀 강좌 #1: 메모리풀의 개념 (0) | 2021.11.11 |
병렬처리 개념 강좌: #6 설계 관련 팁 (0) | 2021.11.09 |
병렬처리 개념 강좌: #5 설계 관련 3가지 생각 포인트 (0) | 2021.11.08 |
병렬처리 개념 강좌: #3 암달의 법칙 (0) | 2021.11.06 |
병렬처리 개념 강좌: #2 병렬처리가 대중화되는 배경 (0) | 2021.11.05 |
병렬처리 개념 강좌: #1 병렬처리의 개념 (0) | 2021.11.04 |