일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- quantum_computing
- nvidia
- 딥러닝
- SpMM
- HA
- Qubit
- C++
- jhDNN
- Semiconductor
- jhVM
- DRAM
- dnn
- sycl
- FPGA
- 반도체기초
- CUDA
- Compression
- stl
- convolution
- kubernetes
- 클라우드
- flash_memory
- 반도체
- CuDNN
- GPU
- 양자역학의공준
- cloud
- POD
- 쿠버네티스
- deep_learning
Archives
- Today
- Total
Computing
Parallelism의 종류 : data vs task vs pipeline 본문
Parallel | Distributed Computing/개념
Parallelism의 종류 : data vs task vs pipeline
jhson989 2022. 3. 15. 23:31Parallelism
Parallelism은 한국어로 뭐라 번역해야 할 지 잘 모르겠지만 (병렬성?), 프로그램의 병렬화된 상태라고 생각하면 좋을 것 같다. 프로그램이 parallelism을 가진다는 것은 해당 프로그램이 병렬로 실행됨을 의미하고, parallelism을 가지는 프로그램에 대하여 일들을 어떻게 병렬로 실행하는 지에 대해서도 얘기할 수 있다.
Parallelism의 종류에는 일반적으로 data parallelism, task parallelism, pipeline parallelism이 존재한다. 일반적으로 data parallelism과 task parallelism을 비교하여 설명하는데, 최근 FPGA를 공부하면서 관심을 가지고 있는 pipeline parallelism도 추가하였다.
- Data parallelism : 프로그램이 각 data를 병렬로 처리함. 각 data는 동일한 process로 처리됨
- 예) 1, 2, ...., N까지 수에 대하여 제곱을 구할 때, P개의 프로세서가 N/P개씩 맡아 제곱을 구함
- SIMD (Single Instruction, Multiple Data, 다수의 데이터 처리를 동일한 명령어로 처리), SPMD (Single Program, Multiple Data, 다수의 데이터를 동일한 프로그램or커널or함수으로 처리), vector 연산이 이에 해당함
- 대부분의 GPU kernel (OpenCL ND-range or CUDA Grid)는 data parallelism으로 구현됨
- Task parallelism : 프로그램이 각 task를 병렬로 처리함
- 예) P개의 프로세서가 func1(), func2(), ..., funcN()을 맡아 처리함
- OpenMP의 tasking은 task parallelism을 구현함. 각 프로세서가 매우 다양한 workload를 가지기에 Multi CPU를 이용한 구현이 쉬움.
- Deep learning에서 model parallelism이 이에 해당함
- Pipeline paralleism : 프로그램이 Pipeline 구조로 설계되어 data를 병렬로 처리함. 이때 Pipeline의 각 stage는 다른 task를 실행함
- 각각의 Data가 병렬로 처리되지만 각각 다른 routine(task)로 처리됨
- 예) FPGA의 가장 기본이 되는 parallelism
- 프로그램이 밑의 그림과 같이 N개의 stage들로 구성된 pipeline으로 구현됨. N개의 processor는 N개의 stage를 맡아 실행함
- (ex 명령어 실행 파이프라인은 fetch - decode - execute - write로 구성됨)
- n번째 stage를 맡은 프로세서는 i번째 데이터를 처리한 후 (i+1)번째 데이터를 처리함. n번째 stage를 통과한 i번째 데이터는 (n+1)번째 stage로 넘어가 처리됨
'Parallel | Distributed Computing > 개념' 카테고리의 다른 글
NCCL 개념 및 Ring 기반 집합 통신 최적화 (0) | 2022.07.22 |
---|---|
[MPI] OpenMPI 설치 (Ubuntu 18.04) (0) | 2022.07.20 |
Collective communication (0) | 2022.04.04 |
병렬화) Amdahl's law 와 Gustafson's law (0) | 2022.03.10 |
Memory Consistency Model (0) | 2022.03.08 |