CS/컴퓨터 구조

7장 : 고성능 컴퓨터시스템 구조 - (4) 그래픽처리유니트(GPU)

infobox503 2025. 1. 20. 12:21

<요약>

  • CUDA
    • 구성
      • 호스트
      • 디바이스
  • GPU
    • 계층 구조
      • SM
      • SP
        • (GPU → SM → SP)
    • 기억장치
      • 지역 기억장치
      • 공유 기억장치
      • 전역 기억장치
  • CUDA
    • 계층 구조
      • 그리드
      • 블록
      • 스레드
        • (GPU안에서 해당 그룹대로 나눔)
  • GPU ↔ CUDA
    • SM ↔ 블록
    • SP ↔ 스레드
  • Fermi
    • SM 16개
    • SP 32개(각 SM 마다)
    • 왑 스케줄러

0. CUDA

  • 의미
    • GPU를 동작시키기 위한 프레임 워크(병렬 동작 수행)
  • 구성 요소
    • 호스트
      • CPU
      • (순차적인 프로그램 처리)
    • 디바이스
      • GPU 기능
      • (병렬 처리 실행 → SIMD 방식 처리)

1. GPU(=디바이스)

  • 의미
    • 그래픽 처리 보조 프로세서
  • 내부 구성
    • 스트리밍 다중프로세서(SM)
    • 스트리밍 프로세서(SP)
    • GPU → 여러 SM → 여러 SP
      • SM = 5개
      • 각 SM 안에 SP = 16개
      • 각 SP 간에 교류는 전역 기억장치를 사용함

 

2. CUDA 프로그래밍 모델

  • 구성 코드
    • 호스트 코드
      • 순차적 프로그램으로 작성
      • CPU에서 해당 코드 실행
    • 디바이스 코드
      • 커널 함수로 구성
      • GPU에서 해당 코드 실행

※ 커널 함수 : 병렬 처리를 위한 함수(다수의 스레드가 해당 함수를 동시 실행)

※ 스레드 : GPU의 SP에 의해서 실행

  • CUDA 프로그램 구조
    • 그리드
      • 1개의 병렬 커널이 만드는 스레드 전체
    • 블록
      • 그리드 내의 스레드 집합을 가짐
    • 스레드
      • 블록 내에 여러 개의 스레드

 

 

  • 스레드 ID
    • 쓰레드 지정?

3. GPU 기억장치 계층

  • 기억장치 계층
    • 지역 기억장치
      • 각 스레드가 가지는 기억장치
    • 공유 기억장치
      • 같은 블록에서 스레드들이 공유하는 기억장치
    • 전역 기억장치
      • 모든 그리드들이 데이터를 공유
      • CPU ↔ GPU 간의 데이터를 공유
      • 같은 그리드 내에 블록들이 데이터를 공유
  • 기억장치 구조

 

4. 호스트, 디바이스 간에 정보 교류를 위한 함수

  • 종류
    • cudaMalloc()
      • 기억장치 영역 할당받기
    • cudaMemcpyHostToDevice()
      • 호스트 → 디바이스
      • 데이터 전송
    • cudaMemcpy()
      • 디바이스 → 호스트
      • 데이터 전송
    • cudaFree()
      • 기억장치 영역 해제

5. GPU 역대 구조

  • Fermi 구조(2010년)
    • SM 16개
    • SM은 32개의 SP(CUDA 코어)로 구성
    • 전체 CUDA 코어
      • 16 SM * 32 코어 = 512
    • 왑 스케줄러
      • 왑 : 스레드 묶음
        • (1개의 명령을 1개의 왑이 수행(왑 안에 스레드들은 각기 다른 데이터 지님))
      • 왑 스케줄러 : 왑 안에 스레드 실행 순서 정함