SlideShare a Scribd company logo
CUDA
Ice breaking
Cuda intro
bt22dr@gmail.com
빅 데이터 분석에서



왜   CUDA가 필요할까?
추천 시스템
데이터 마이닝
통계 분석
  …
추천 시스템
데이터 마이닝
통계 분석
  …
추천 시스템
데이터 마이닝
통계 분석
  …
추천 시스템
데이터 마이닝
통계 분석
  …




          !!!
Back of the envelope calculation

n = 10000
Back of the envelope calculation

n = 10000
출처 : The Free Lunch Is Over
• Evolution in performance of processor designs




출처 : Matrix Computations onGraphics Processors andClusters of GPUs
VRAM


             그래픽 카드

GPGPU
          고정-함수 그래픽스
            파이프라인



        Programmable 그래픽스       CUDA
              파이프라인



         Unified programmable
        processor array 그래픽스
               파이프라인
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의 지역성 이
                                           •   분기가 없고, 메모리 트랜젝션당 계산
         용, 메모리 접근 지연 감춤
                                               량이 많은 계산 집약적인 프로그램
CPU vs GPU Performance in GFLOPS and Memory Bandwidth
Cuda intro
Cuda intro
Cuda intro
Cuda intro
Cuda intro
CPU                                     GPU
• Vector Processor                      • CUDA
   – MMX (MultiMedia eXtension)
   – SSE (Streaming SIMD Extensions)
   – AVX (Advanced Vector Extensions)
CPU                                     GPU
• Vector Processor                      • CUDA
   – MMX (MultiMedia eXtension)
   – SSE (Streaming SIMD Extensions)
   – AVX (Advanced Vector Extensions)
Cuda intro
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
CUDA




출처 : NVIDIA Fermi Compute Architecture Whitepaper
CUDA




출처 : NVIDIA Fermi Compute Architecture Whitepaper
CUDA




출처 : NVIDIA Fermi Compute Architecture Whitepaper
CUDA




출처 : NVIDIA Fermi Compute Architecture Whitepaper
CUDA




출처 : NVIDIA Fermi Compute Architecture Whitepaper
CUDA
CUDA
CUDA




출처 : http://www.cse.shirazu.ac.ir/~azimi/gpu89/lectures/07-MatMult-Basic.pdf
CUDA




출처 : http://www.cse.shirazu.ac.ir/~azimi/gpu89/lectures/07-MatMult-Basic.pdf
CUDA
• CUDA 적용 판단 기준
 – Host – Device 간 데이터 전송 시간
 – CGMA(compute to global memory access)
 – 알고리즘 or 연산 자체의 병렬성 (하노이탑?)

            데이터 전                  데이터 전
             송시간                    송시간


             GPU를                   GPU를
     CPU를                   CPU를
            이용한 처                  이용한 처
     이용한                    이용한
             리시간                    리시간
    처리시간                   처리시간

                                   데이터 전
            데이터 전                   송시간
             송시간
스레드 블록 아키텍처
스레드 블록 아키텍처
• 워프
• 자동 확장 가능성
메모리 아키텍처
• 레지스터
 – 32bit 크기
 – 1 사이클로 읽기/쓰기
 – 커널의 로컬 변수 사용 시 할당

• 로컬 메모리
 – 너무 많은 레지스터 사용 시
 – 프로세서 외부 DRAM 사용
 – 수학 함수 사용시
메모리 아키텍처
• 공유 메모리
 – 온 칩 프로세서 메모리
 – SM 내에서 동일 블록 안에서만 공유

• 글로벌 메모리
 – 비디오 카드에 장착된 DRAM
 – 메모리 액세스 패턴에 따라 성능 편차 크다

• 상수 메모리
 – 프로세서 외부 DRAM 사용
 – 재사용 시 레지스터와 동일한 속도로 접근 가능
 – 디바이스 영역에서는 읽기만 가능
메모리 아키텍처
• CUDA 메모리 특성
         느리다                                    빠르다

엑세스 속도   글로벌 메모리   로컬 메모리    공유 메모리     레지스터




         작다                                      크다

메모리 용량    레지스터     공유 메모리   로컬 메모리    글로벌 메모리




         좁다                                      넓다

엑세스 범위    레지스터     로컬 메모리   공유 메모리    글로벌 메모리
메모리 아키텍처
CUDA를 분산 환경에 적용하기
• 기존의 접근법
 – Mars, DisMaRC
 – GPU 기반의 개인용 슈퍼컴퓨팅 플랫폼


• 개선된 연동 방법

• 극단적인 성능 향상 효과와 내재된 맹점
CUDA–MapReduce 관련 연구
• Mars (http://www.cse.ust.hk/gpuqp/Mars.html)
    –   GPL 라이선스
    –   공유 메모리 환경 (단일노드)
    –   GPU상에서 MapReduce 구현 ( ↔ Phoenix)
    –   Work flow of Mars on the GPU




                                                 (DisMaRC)
CUDA–MapReduce 관련 연구
• DisMaRC (http://www.cs.utexas.edu/~karthikm/dismarc.pdf)
    – N개의 GPU로 구성되는 다중 노드 환경
    – 분산 메모리 환경, 노드 간 통신은 MPI 사용
    – Control Flow of DisMaRC




    – 공개된 구현물 없음
CUDA-MapReduce 연동
CUDA-MapReduce 연동
CUDA-MapReduce 연동
Cuda intro
Cuda intro
CUDA-MapReduce 연동
• 성능 향상 효과
분산/병렬 컴퓨팅
  • 공유 메모리 구조                        • 분산 메모리 구조           • 하이브리드 구조




출처 : https://computing.llnl.gov/tutorials/parallel_comp/
Cuda intro
분산/병렬 컴퓨팅
  호모지니어스 멀티코어                                 헤테로지니어스 멀티코어
                        1                                              1
   speedup   1                       2 . 91   speedup   2                             4 . 21
                 0 .3   0 . 7 / 16                          0 .3 / 2       0 .7 / 8




출처 : 프로그래머가 몰랐던 멀티코어 CPU 이야기
참고자료
• 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 이야기 (김민장)

More Related Content

PDF
병렬프로그래밍과 Cuda
PPTX
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
PPTX
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
PDF
윤석준 2015 cuda_contest
PPTX
이권일 Sse 를 이용한 최적화와 실제 사용 예
PDF
GPU를 위한 병렬 음원 방향 추정 알고리즘
PPTX
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
PDF
ffmpeg optimization using CUDA
병렬프로그래밍과 Cuda
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
헤테로지니어스 컴퓨팅 : CPU 에서 GPU 로 옮겨가기
윤석준 2015 cuda_contest
이권일 Sse 를 이용한 최적화와 실제 사용 예
GPU를 위한 병렬 음원 방향 추정 알고리즘
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
ffmpeg optimization using CUDA

What's hot (20)

PPTX
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
PPTX
Compute shader DX11
PPTX
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
PPTX
게임프로젝트에 적용하는 GPGPU
PPTX
Introduction to Parallel Programming
PPTX
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
PDF
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
PDF
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
PPTX
CUDA를 게임 프로젝트에 적용하기
PDF
Compute shader
PPTX
pyOpenCL 입문
PDF
Ai based on gpu
PPTX
[조진현]Kgc2012 c++amp
PDF
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
PDF
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
PPTX
[조진현] [Kgc2011]direct x11 이야기
PPTX
Azure로 MMO게임 서비스하기
PDF
Nvidia architecture
PDF
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
PPTX
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Compute shader DX11
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
게임프로젝트에 적용하는 GPGPU
Introduction to Parallel Programming
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
CUDA를 게임 프로젝트에 적용하기
Compute shader
pyOpenCL 입문
Ai based on gpu
[조진현]Kgc2012 c++amp
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
[조진현] [Kgc2011]direct x11 이야기
Azure로 MMO게임 서비스하기
Nvidia architecture
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
[Foss4 g2013 korea]postgis와 geoserver를 이용한 대용량 공간데이터 기반 일기도 서비스 구축 사례
Ad

Viewers also liked (20)

PDF
eSafety: pasa-hitz seguruen erabilpena
PDF
Concurso diseno muebles
PDF
Mobiliario ecodisenado
PPT
Scriptura Praeteriti
PPT
10 logical clocks
PPT
museum
PPTX
소셜미디어 사서직 취업동향
DOCX
Icbme 2011
PDF
Dig comporg TKNIKA
PPTX
Kuluçka Prensibiyle Düşünme Tekniği
PDF
E safety in the school management system
PPTX
Nasıl Fikirci Olunur
DOCX
Regression & Classification
PDF
Beerlegend.by
PDF
Dig comporg arantzabela_ikastola
PDF
Prestakuntza eSafety irakasleen prestakuntza plana 2014 2015
PDF
Casas madera criterios_medioambientales
PPT
Scriptura Praeteriti
DOCX
Cloud burst tutorial
PPTX
Slideshare powerpoint
eSafety: pasa-hitz seguruen erabilpena
Concurso diseno muebles
Mobiliario ecodisenado
Scriptura Praeteriti
10 logical clocks
museum
소셜미디어 사서직 취업동향
Icbme 2011
Dig comporg TKNIKA
Kuluçka Prensibiyle Düşünme Tekniği
E safety in the school management system
Nasıl Fikirci Olunur
Regression & Classification
Beerlegend.by
Dig comporg arantzabela_ikastola
Prestakuntza eSafety irakasleen prestakuntza plana 2014 2015
Casas madera criterios_medioambientales
Scriptura Praeteriti
Cloud burst tutorial
Slideshare powerpoint
Ad

Similar to Cuda intro (20)

PDF
Lablupconf session7 People don't know what they want until LABLUP show it to ...
PPTX
5일차.map reduce 활용
PDF
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
PDF
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
PDF
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
PPTX
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
PDF
Theano 와 Caffe 실습
PPT
091106kofpublic 091108170852-phpapp02 (번역본)
PPTX
가상화와 컨테이너의 이해_20230117.pptx
PDF
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
PDF
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
PPTX
Cloud based NGS framework
PPTX
서버와 클라이언트 같은 엔진 사용하기
PDF
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
PPT
google dinos
PPTX
Ic922 ac922 e dm_202008
PPT
모바일 게임 최적화
PDF
Open source Embedded systems
PDF
HPC on IBM Cloud
PDF
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
Lablupconf session7 People don't know what they want until LABLUP show it to ...
5일차.map reduce 활용
[OpenInfra Days Korea 2018] Day 2 - E5: GPU on Kubernetes
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
[IBM 김상훈] AI 최적화 플랫폼 IBM AC922 소개와 활용 사례
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
Theano 와 Caffe 실습
091106kofpublic 091108170852-phpapp02 (번역본)
가상화와 컨테이너의 이해_20230117.pptx
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
Cloud based NGS framework
서버와 클라이언트 같은 엔진 사용하기
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
google dinos
Ic922 ac922 e dm_202008
모바일 게임 최적화
Open source Embedded systems
HPC on IBM Cloud
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발

More from 주영 송 (9)

PDF
R_datamining
PDF
Giraph
PPTX
Mahout
DOCX
MapReduce 실행 샘플 (K-mer Counting, K-means Clustering)
PPTX
SNA & R (20121011)
PPTX
Recommendation system 소개 (1)
PPTX
Cloud burst 소개
PPTX
R intro
PDF
Mongo db 활용 가이드 ch7
R_datamining
Giraph
Mahout
MapReduce 실행 샘플 (K-mer Counting, K-means Clustering)
SNA & R (20121011)
Recommendation system 소개 (1)
Cloud burst 소개
R intro
Mongo db 활용 가이드 ch7

Cuda intro

  • 5. 빅 데이터 분석에서 왜 CUDA가 필요할까?
  • 10. Back of the envelope calculation n = 10000
  • 11. Back of the envelope calculation n = 10000
  • 12. 출처 : The Free Lunch Is Over
  • 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
  • 22. CPU GPU • Vector Processor • CUDA – MMX (MultiMedia eXtension) – SSE (Streaming SIMD Extensions) – AVX (Advanced Vector Extensions)
  • 23. CPU GPU • Vector Processor • CUDA – MMX (MultiMedia eXtension) – SSE (Streaming SIMD Extensions) – AVX (Advanced Vector Extensions)
  • 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
  • 26. CUDA 출처 : NVIDIA Fermi Compute Architecture Whitepaper
  • 27. CUDA 출처 : NVIDIA Fermi Compute Architecture Whitepaper
  • 28. CUDA 출처 : NVIDIA Fermi Compute Architecture Whitepaper
  • 29. CUDA 출처 : NVIDIA Fermi Compute Architecture Whitepaper
  • 30. CUDA 출처 : NVIDIA Fermi Compute Architecture Whitepaper
  • 31. CUDA
  • 32. CUDA
  • 35. CUDA • CUDA 적용 판단 기준 – Host – Device 간 데이터 전송 시간 – CGMA(compute to global memory access) – 알고리즘 or 연산 자체의 병렬성 (하노이탑?) 데이터 전 데이터 전 송시간 송시간 GPU를 GPU를 CPU를 CPU를 이용한 처 이용한 처 이용한 이용한 리시간 리시간 처리시간 처리시간 데이터 전 데이터 전 송시간 송시간
  • 37. 스레드 블록 아키텍처 • 워프 • 자동 확장 가능성
  • 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 – 공개된 구현물 없음
  • 51. 분산/병렬 컴퓨팅 • 공유 메모리 구조 • 분산 메모리 구조 • 하이브리드 구조 출처 : https://computing.llnl.gov/tutorials/parallel_comp/
  • 53. 분산/병렬 컴퓨팅 호모지니어스 멀티코어 헤테로지니어스 멀티코어 1 1 speedup 1 2 . 91 speedup 2 4 . 21 0 .3 0 . 7 / 16 0 .3 / 2 0 .7 / 8 출처 : 프로그래머가 몰랐던 멀티코어 CPU 이야기
  • 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 이야기 (김민장)