1. MPC 대규모 병렬 컴퓨팅
병렬 컴퓨팅 도입 과정
CPU / GPU의 설계 철학
- 반응 시간 (latency) 우선
- 처리량 (throughput) 우선
대규모 병렬 컴퓨팅(Massively Parallel Computing)
- MPC
CPU와 GPU
CPU : Central Processing Unit
- 중앙 처리 장치
- 보통 1개의 독립된 칩 -> CPU 칩
- Intel, AMD, ARM, …
GPU : Graphics Processing Unit
- 그래픽스 처리 장치
- 보통 카드 형태 -> 그래픽 카드, 비디오 카드
- NVIDIA, AMD (ex-ATI), Intel (CPU-integrated) 새로운 계산 기기
병렬 컴퓨팅의 도입 과정
2003년 이전 : single core CPU
- 폰 노이만 구조
- 코어 = CPU (또는 processor) 내의 계산 유닛(computation unit)
- ALU (arithmetic-logic unit)을 의미하는 경우가 많음
- CU (control unit) 은 ALU의 제어 담당
2003년 이후
- multi-core CPU : 2 ~ 32+ cores
- many-core GPU : 1024 ~ 8192+ cores
Parallel computing
- 과거: super-computer 전용
- 현재: 스마트폰도 CPU도 multi-core -> 언제 어디서나! ubiquitous
현재의 딜레마
- HW는 이미 parallel device
- SW는 아직 sequential processing
Moore’s law
- IC칩 1개에 들어가는 트랜지스터 숫자는 매 2년마다 2배가 된다
물리적 한계 physical limitation
- 전자의 속도 = 광속 = 3 x 10^8 m/sec
- 3GHz GPU 기준
- 1 clock 소요 시간: (1 / 3 x 10^9) sec
- 1 clock 당 전자의 이동 거리:
- (3 x 10^8) / (3 x 10^9) = (3 / 100)m = 3cm
- CPU clock을 올리는 것은 이미 한계에 도달
- 남아도는 트렌지스터를 어디에 쓸 것인가?
CPU: 고성능 멀티 코어 multi-core
목표 : 반응시간 (latency) 단축
- 순차 처리 sequential processing 에 적합
- 기존 고성능 코어를 추가
대용량 캐시
대규모 CU control unit
고성능 ALU
- 복잡한 명령어를 빨리 처리
GPU: 대규모 many-core
목표: 처리량 throughput 확대
- 병렬 처리 parallel processing 에 집중
- (성능에 무관하게) 코어 숫자 증가에 집중
소규모 캐시 메모리
간단한 CU 1개가 여러 개의 ALU를 한꺼번에 제어
대규모 ALU -> 1000개 이상의 동시 실행
Thread pool 의 효과적 집중
- 최종적으로, 단위시간당 처리량 대폭 확대
적용 분야의 차이
CPU : 순차 처리에 적합
Sequential Processing
ex) 워드 프로세싱
- 사용자의 입력 -> 화면 반응 까지
- GPU보다 최소 10배 빠름
GPU: 대규모 병렬 처리에 적합
Massively Parallel Processing
ex) 빅 데이터의 통계 처리
- 대용량 입력을 한번에 실행
- 대규모 계산 필요
- CPU보다 1,000배 이상 빠름
대규모 병렬 컴퓨팅 MPC
- TFLOPs(GPU) vs GFLOPs(CPU)
병렬 컴퓨팅의 특성
- 프로그래머: 알고리즘을 병렬로 재설계해야함
- 대규모 데이터를 제공한다고 가정 -> 빅데이터 -> 데이터 사이언스
- 데이터 규모 » GPU 코어 숫자 라고 가정
대규모 병렬 처리 모델
- 모델 = 디바이스 + 프로그래밍 언어 + 컴파일러 + 라이브러리 + …
- OpenMP (Open Multi-Processing)
- 멀티 코어 CPU용 - Visual Studio 에서 사용 가능
- 최근 GPU로 확장 중
- CUDA (Compute Unified Device Architecture)
- NVIDIA GPU 전용 -> 현재는 클라우드 컴퓨팅 사용 가능
- OpenCL (Open Computing Language)
- CPU / GPU / FPGA 모두 제공
- Apple, Intel, AMD/ATI, NVIDIA, …
- 범용성을 추구 - 좀 더 복잡한 모델, 교육용으로는 레벨이 높음
This post is licensed under CC BY 4.0 by the author.