Post

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.