<요약>
- 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()
- 기억장치 영역 해제
- cudaMalloc()
5. GPU 역대 구조
- Fermi 구조(2010년)
- SM 16개
- SM은 32개의 SP(CUDA 코어)로 구성
- 전체 CUDA 코어
- 16 SM * 32 코어 = 512
- 왑 스케줄러
- 왑 : 스레드 묶음
- (1개의 명령을 1개의 왑이 수행(왑 안에 스레드들은 각기 다른 데이터 지님))
- 왑 스케줄러 : 왑 안에 스레드 실행 순서 정함
- 왑 : 스레드 묶음
'CS > 컴퓨터 구조' 카테고리의 다른 글
7장 : 고성능 컴퓨터시스템 구조 - (5) 성능 분석과 측정 (0) | 2025.01.22 |
---|---|
7장 : 고성능 컴퓨터시스템 구조 - (3) 다중프로세서시스템 구조 (0) | 2025.01.17 |
7장 : 고성능 컴퓨터시스템 구조 - (2) 병렬컴퓨터 분류 (0) | 2025.01.15 |
7장 : 고성능 컴퓨터시스템 구조 - (1) 병렬처리 단위 (0) | 2025.01.13 |
6장 : 시스템 버스, I/O 및 인터럽트 - (5) 직접기억장치액세스 (0) | 2025.01.10 |