티스토리 뷰

728x90
반응형

본 포스팅은 "머신러닝과 블록체인을 떠받치는 GPU의 모든 기술" 책을 읽고, 글쓴이의 생각을 정리하는 포스팅 입니다.

https://book.naver.com/bookdb/book_detail.nhn?bid=13499076 

 

머신러닝과 블록체인을 떠받치는 GPU의 모든 기술

이 책은 GPU의 기본 구조와 기술 동향에 초점을 맞춘 해설서입니다. 3D 그래픽, 게임, 모바일, VR/AR, 과학 기술 계산, 그리고 인공지능/딥러닝에 이르기까지 폭넓은 분야에서 GPU/병렬 계산의 중요도

book.naver.com

 

1. 성능지표

이 성능지표는 GPU그 그야말로 두뇌 풀 가동을 하면, 1초에 최대 몇번의 연산을 할 수 있냐는 의미를 나타냅니다.

 

예전 Nvidia의 Passcal GP100 의 경우 SM(Streaming Process) 내부에 Cuda Core가 있는 방식이었습니다.

 

총 56개의 SM이 있고, 1개의 SM 내에는 32bit float type을 계산할 수 있는 Cuda Core가 64개 들어있습니다.

 

그렇게되면, 56*64 = 3584개의 Cuda Core가 한번에 Float 연산을 할 수 있는 최대치라고 할 수 있습니다.

 

이때, 1 clock당 2개의 float type Data 연산이 가능하다고 하면, 동시에 활용 가능한 float type 연산기 * clock * 1clock당 연산 가능한 횟수를 하면, 이것이 일반적으로 TFlops, GFlops라고 불리는 성능지표가 됩니다.

 

위 예시의 경우, GP100은 1.48GHz * 3584 ops/Hz * 2 data/ops = 10,608,640data = 10.6TFlops가 됩니다.

 

한글로 요약하면 1초당 처리가능한 데이터의 Maximum이라고 할 수 있습니다.

 

하지만, 어디까지나 두뇌 풀 가동일 경우입니다.

 

1.48GHz의 Clock이 발생할 동안 항상 필요한 Data가 존재하고, 하나의 코어도 놀지 않는다는 경우니깐 말이요.

 

하지만 SIMD & SIMT 편에서 이야기 했듯, 코어를 모두 사용하기 위해서는 정교한 프로그래밍이 요구됩니다.

 

그렇다면, 1.48GHz동안 항상 변수가 GPU의 레지스터에 있을 수 있을까요?

 

 

2. 메모리 대역폭

안타깝게도 그럴 일은 없죠. GPU의 장치메모리에서 레지스터파일로 데이터를 가지고와야 하고, 이 데이터를 이동하는 작업 또한 GPU Cycle을 잡아먹습니다.

 

이때, L1, L2 cache에 데이터가 있으면 다행이지만, 없을경우 장치메모리에서 데이터를 가지고와야 합니다.

 

장치메모리는 일반적으로 GDDR이라고 불리는 그래픽메모리를 의미합니다.

 

장치메모리가 아무리 빨라봐야 Cache의 속도를 따라갈 수는 없습니다.

 

Passcal GP100의 경우 4096bit 메모리 인터페이스(HBM2)를 사용합니다.

(HBM2E를 제외하곤 가장높은 대역폭을 자랑하는 메모리 입니다)

 

해당 메모리가 1.43GHz로 동작하기 때문에 메모리 대역폭은

4096bit/clock * (1/8)Bytes/bit * 1.43GHz/sec = 732GBytes/sec가 됩니다.

 

1초에 4Bytes=32bit float을 총 10.6Tera 연산이 가능하기 때문에 

 

1번 가지고온 변수를 최소 57.9 = 58번 이상 연산에 사용하지 않는다면 GPU코어가 아무리 두뇌 풀가동을 해봤자 의미없는 시간이 됩니다.

10.6Tera op/sec * 4Bytes/1op) / (732 Giga Bytes/sec) = 58

 

하지만 메모리또한 두뇌 풀가동을 해야 나오는 속도입니다. 때문에, 저 TFlops라는 수치를 실제로 볼 일은 별로 없다고 할 수 있습니다.

 

결론1 : 스펙시트가 빠방하다고 성능이 잘나오지는 않는다.

결론2 : 스펙시트가 구리면 성능이 잘 나올수가 없다.

결론3 : 메모리 대역폭이 낮은 GPU는 피하는게 좋다.

결론4 : 내장메모리는 GDDR이 아니라 DDR을 쓴다 = 대역폭이 낮다 = 성능이 낮은 이유가있다.

728x90
반응형

'컴퓨터과학 > GPU' 카테고리의 다른 글

GPU프로그래밍_1(개념)  (0) 2022.03.03
GPU의 Thread(Work) 처리 방법  (0) 2022.03.03
GPU 메모리 구조  (0) 2022.03.03
GPU구조와 Thread(Work)의 단위  (0) 2022.02.26
SIMD와 SIMT  (0) 2022.02.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함