13. • Evolution in performance of processor designs
출처 : Matrix Computations onGraphics Processors andClusters of GPUs
14. VRAM
그래픽 카드
GPGPU
고정-함수 그래픽스
파이프라인
Programmable 그래픽스 CUDA
파이프라인
Unified programmable
processor array 그래픽스
파이프라인
15. vs
• Sequential, complex data dependency • 최적의 floating-point throughput을 뽑
를 가진 code 수행에 적합 아내기 위해 arithmetic unit 부분 확장
• 트랜지스터의 많은 부분을 • memory bandwidth가 훨씬 크다
– control logic : 비순차실행 제어, 분기 예 • high degree of data parallelism
측 핸들링 (embarrassingly parallel)
– cache memory : reference의 지역성 이
• 분기가 없고, 메모리 트랜젝션당 계산
용, 메모리 접근 지연 감춤
량이 많은 계산 집약적인 프로그램
16. CPU vs GPU Performance in GFLOPS and Memory Bandwidth
25. CUDA
• Compute Unified Device Architecture
– NVIDIA’s parallel computing architecture
– computing engine in Nvidia graphics processing units
(GPUs) that is accessible to software developers
through variants of industry standard programming
languages.
• GPU를 이용한 범용적인 프로그램을 개발할 수 있
도록 ‘프로그램 모델’, ‘프로그램 언어’, ‘컴파일
러’, ‘라이브러리’, ‘디버거’, ‘프로파일러’를 제공하
는 통합 환경
출처 : http://en.wikipedia.org/wiki/CUDA
35. CUDA
• CUDA 적용 판단 기준
– Host – Device 간 데이터 전송 시간
– CGMA(compute to global memory access)
– 알고리즘 or 연산 자체의 병렬성 (하노이탑?)
데이터 전 데이터 전
송시간 송시간
GPU를 GPU를
CPU를 CPU를
이용한 처 이용한 처
이용한 이용한
리시간 리시간
처리시간 처리시간
데이터 전
데이터 전 송시간
송시간
38. 메모리 아키텍처
• 레지스터
– 32bit 크기
– 1 사이클로 읽기/쓰기
– 커널의 로컬 변수 사용 시 할당
• 로컬 메모리
– 너무 많은 레지스터 사용 시
– 프로세서 외부 DRAM 사용
– 수학 함수 사용시
39. 메모리 아키텍처
• 공유 메모리
– 온 칩 프로세서 메모리
– SM 내에서 동일 블록 안에서만 공유
• 글로벌 메모리
– 비디오 카드에 장착된 DRAM
– 메모리 액세스 패턴에 따라 성능 편차 크다
• 상수 메모리
– 프로세서 외부 DRAM 사용
– 재사용 시 레지스터와 동일한 속도로 접근 가능
– 디바이스 영역에서는 읽기만 가능
40. 메모리 아키텍처
• CUDA 메모리 특성
느리다 빠르다
엑세스 속도 글로벌 메모리 로컬 메모리 공유 메모리 레지스터
작다 크다
메모리 용량 레지스터 공유 메모리 로컬 메모리 글로벌 메모리
좁다 넓다
엑세스 범위 레지스터 로컬 메모리 공유 메모리 글로벌 메모리
42. CUDA를 분산 환경에 적용하기
• 기존의 접근법
– Mars, DisMaRC
– GPU 기반의 개인용 슈퍼컴퓨팅 플랫폼
• 개선된 연동 방법
• 극단적인 성능 향상 효과와 내재된 맹점
43. CUDA–MapReduce 관련 연구
• Mars (http://www.cse.ust.hk/gpuqp/Mars.html)
– GPL 라이선스
– 공유 메모리 환경 (단일노드)
– GPU상에서 MapReduce 구현 ( ↔ Phoenix)
– Work flow of Mars on the GPU
(DisMaRC)
44. CUDA–MapReduce 관련 연구
• DisMaRC (http://www.cs.utexas.edu/~karthikm/dismarc.pdf)
– N개의 GPU로 구성되는 다중 노드 환경
– 분산 메모리 환경, 노드 간 통신은 MPI 사용
– Control Flow of DisMaRC
– 공개된 구현물 없음
54. 참고자료
• NVIDIA’s Next Generation CUDATM Compute
Architecture: Fermi (Whitepaper)
• NVIDIA CUDA C Programming Guide (Version 4.0)
• 대규모 병렬 프로세서 프로그래밍 (David B. Kirk, Wen-
mei W. Hwu)
• CUDA 병렬 프로그래밍 (정영훈)
• CUDA Parallel Programming (유현곤)
• 프로그래머가 몰랐던 멀티코어 CPU 이야기 (김민장)