티스토리 뷰
본 포스팅은 "머신러닝과 블록체인을 떠받치는 GPU의 모든 기술" 책을 읽고, 글쓴이의 생각을 정리하는 포스팅 입니다.
https://book.naver.com/bookdb/book_detail.nhn?bid=13499076
1. 메모리 구조
지난 포스팅 마지막에 "동일한 Data를 공유해야하는 Work가 다른 CU(혹은 SM)에 할당된 경우 CU(혹은 SM)끼리의 데이터 교환(다른 CU, SM의 Cache의 데이터 조회)이 발생하고, 이 때문에 불필요한 오버헤드가 발생할 수 있습니다."
라고 언급했습니다.
아래 Nvidia GPU의 간단한 메모리 구조를 예시로 보시겠습니다.
GPU의 경우 CPU와 다르게 L1 Cache부분이 조금 다릅니다.
GPU는 L1 Cache를 명령어/Data용도로 나눠놓고, 두가지 모두 Read Only 메모리로 사용됩니다.(Const와 비슷)
이때 Shared Memory라는 녀석이 특별하게 존재합니다.
A당이나 N당 모두 Work(Thread)를 Group화 하고, 이 Group을 각 CU(SM)에 할당하여 연산하는 기능이 존재합니다.
이때 이 묶음 단위의 Thread끼리는 데이터를 공유할 일이 발생합니다.
Work(Thread) Group끼리는 모두가 접근이 가능한 빠른 Cache를 Shared Memory를 사용합니다.
때문에 Thread를 굳이 Group단위로 묶어서 동일한 CU(SM)에 배치하게 됩니다.
만약 다른 CU와 데이터 교환을 할 경우 최악의경우 GDDR 메모리까지 데이터를 확인하게 됩니다.
(Nvidia의 경우 이 과정을 replay라고 부르며 4바이트 의 주소 32개를 버퍼에 저장하고, 필요한 주소가 이 버퍼에 없을 경우 필요한 주소를 포함하여 정렬 32개의 주소(128바이트)에 해당하는 데이터를 읽어들입니다)
'컴퓨터과학 > GPU' 카테고리의 다른 글
GPU프로그래밍_1(개념) (0) | 2022.03.03 |
---|---|
GPU의 Thread(Work) 처리 방법 (0) | 2022.03.03 |
GPU구조와 Thread(Work)의 단위 (0) | 2022.02.26 |
GPU 성능지표와 메모리 대역폭 (0) | 2022.02.25 |
SIMD와 SIMT (0) | 2022.02.24 |
- Total
- Today
- Yesterday
- stack
- 프로그래머스
- C++
- GDC
- 분할정복
- 사칙연산
- AVX
- Python
- Greedy알고리즘
- heap
- 코딩테스트
- 동적계획법
- SIMD
- 자료구조
- git
- 컴퓨터그래픽스
- hash
- 완전탐색 알고리즘
- Sort알고리즘
- 병렬처리
- 알고리즘
- Search알고리즘
- prime number
- 이분탐색
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |