• Save
Cuda intro
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Cuda intro

  • 1,323 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,323
On Slideshare
1,323
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. CUDA
  • 2. Ice breaking
  • 3. bt22dr@gmail.com
  • 4. 빅 데이터 분석에서왜 CUDA가 필요할까?
  • 5. 추천 시스템데이터 마이닝통계 분석 …
  • 6. 추천 시스템데이터 마이닝통계 분석 …
  • 7. 추천 시스템데이터 마이닝통계 분석 …
  • 8. 추천 시스템데이터 마이닝통계 분석 … !!!
  • 9. Back of the envelope calculationn = 10000
  • 10. Back of the envelope calculationn = 10000
  • 11. 출처 : The Free Lunch Is Over
  • 12. • Evolution in performance of processor designs출처 : Matrix Computations onGraphics Processors andClusters of GPUs
  • 13. VRAM 그래픽 카드GPGPU 고정-함수 그래픽스 파이프라인 Programmable 그래픽스 CUDA 파이프라인 Unified programmable processor array 그래픽스 파이프라인
  • 14. 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의 지역성 이 • 분기가 없고, 메모리 트랜젝션당 계산 용, 메모리 접근 지연 감춤 량이 많은 계산 집약적인 프로그램
  • 15. CPU vs GPU Performance in GFLOPS and Memory Bandwidth
  • 16. CPU GPU• Vector Processor • CUDA – MMX (MultiMedia eXtension) – SSE (Streaming SIMD Extensions) – AVX (Advanced Vector Extensions)
  • 17. CPU GPU• Vector Processor • CUDA – MMX (MultiMedia eXtension) – SSE (Streaming SIMD Extensions) – AVX (Advanced Vector Extensions)
  • 18. 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
  • 19. CUDA출처 : NVIDIA Fermi Compute Architecture Whitepaper
  • 20. CUDA출처 : NVIDIA Fermi Compute Architecture Whitepaper
  • 21. CUDA출처 : NVIDIA Fermi Compute Architecture Whitepaper
  • 22. CUDA출처 : NVIDIA Fermi Compute Architecture Whitepaper
  • 23. CUDA출처 : NVIDIA Fermi Compute Architecture Whitepaper
  • 24. CUDA
  • 25. CUDA
  • 26. CUDA출처 : http://www.cse.shirazu.ac.ir/~azimi/gpu89/lectures/07-MatMult-Basic.pdf
  • 27. CUDA출처 : http://www.cse.shirazu.ac.ir/~azimi/gpu89/lectures/07-MatMult-Basic.pdf
  • 28. CUDA• CUDA 적용 판단 기준 – Host – Device 간 데이터 전송 시간 – CGMA(compute to global memory access) – 알고리즘 or 연산 자체의 병렬성 (하노이탑?) 데이터 전 데이터 전 송시간 송시간 GPU를 GPU를 CPU를 CPU를 이용한 처 이용한 처 이용한 이용한 리시간 리시간 처리시간 처리시간 데이터 전 데이터 전 송시간 송시간
  • 29. 스레드 블록 아키텍처
  • 30. 스레드 블록 아키텍처• 워프• 자동 확장 가능성
  • 31. 메모리 아키텍처• 레지스터 – 32bit 크기 – 1 사이클로 읽기/쓰기 – 커널의 로컬 변수 사용 시 할당• 로컬 메모리 – 너무 많은 레지스터 사용 시 – 프로세서 외부 DRAM 사용 – 수학 함수 사용시
  • 32. 메모리 아키텍처• 공유 메모리 – 온 칩 프로세서 메모리 – SM 내에서 동일 블록 안에서만 공유• 글로벌 메모리 – 비디오 카드에 장착된 DRAM – 메모리 액세스 패턴에 따라 성능 편차 크다• 상수 메모리 – 프로세서 외부 DRAM 사용 – 재사용 시 레지스터와 동일한 속도로 접근 가능 – 디바이스 영역에서는 읽기만 가능
  • 33. 메모리 아키텍처• CUDA 메모리 특성 느리다 빠르다엑세스 속도 글로벌 메모리 로컬 메모리 공유 메모리 레지스터 작다 크다메모리 용량 레지스터 공유 메모리 로컬 메모리 글로벌 메모리 좁다 넓다엑세스 범위 레지스터 로컬 메모리 공유 메모리 글로벌 메모리
  • 34. 메모리 아키텍처
  • 35. CUDA를 분산 환경에 적용하기• 기존의 접근법 – Mars, DisMaRC – GPU 기반의 개인용 슈퍼컴퓨팅 플랫폼• 개선된 연동 방법• 극단적인 성능 향상 효과와 내재된 맹점
  • 36. CUDA–MapReduce 관련 연구• Mars (http://www.cse.ust.hk/gpuqp/Mars.html) – GPL 라이선스 – 공유 메모리 환경 (단일노드) – GPU상에서 MapReduce 구현 ( ↔ Phoenix) – Work flow of Mars on the GPU (DisMaRC)
  • 37. CUDA–MapReduce 관련 연구• DisMaRC (http://www.cs.utexas.edu/~karthikm/dismarc.pdf) – N개의 GPU로 구성되는 다중 노드 환경 – 분산 메모리 환경, 노드 간 통신은 MPI 사용 – Control Flow of DisMaRC – 공개된 구현물 없음
  • 38. CUDA-MapReduce 연동
  • 39. CUDA-MapReduce 연동
  • 40. CUDA-MapReduce 연동
  • 41. CUDA-MapReduce 연동• 성능 향상 효과
  • 42. 분산/병렬 컴퓨팅 • 공유 메모리 구조 • 분산 메모리 구조 • 하이브리드 구조출처 : https://computing.llnl.gov/tutorials/parallel_comp/
  • 43. 분산/병렬 컴퓨팅 호모지니어스 멀티코어 헤테로지니어스 멀티코어 1 1 speedup 1 2 . 91 speedup 2 4 . 21 0 .3 0 . 7 / 16 0 .3 / 2 0 .7 / 8출처 : 프로그래머가 몰랐던 멀티코어 CPU 이야기
  • 44. 참고자료• 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 이야기 (김민장)