nVidia 제품에서, FP32 와 FP16 성능이 얼마나 차이나는지 확인해보려다가, 이왕 하는거 CUDA 가 들어있는 세대부터 FP16, FP32, FP64 성능을 정리해봤다. 기준이 되는 모델은 각 세대의 xx60 모델이다. 단위는 Flops 으로 GPU Database | TechPowerUp 에 나와있는걸 인용했다. 이 수치는 레퍼런스 스펙을 가질때의 이론상의 스펙이다.
아래 표에서 G 는 Giga, T 는 Tera 의 약어로 1T Flops = 1000G Flops 이다. flops 는 FLoating point Operations Per Second 의 약어로, 1초동안 수행할 수 있는 부동소수점 연산의 회수를 의미한다. FP16, FP32, FP64는 각각 16/32/64 비트 부동소수점 연산 회수를 의미한다.
Product Code name CUDA FP16 FP32 FP64 FP32향상비율 ----------- ------------ ---- ------------- ----------- -------------- ----------- 8600 Tesla 1.1 x 92.80G x 9600 x 278.4G x 3.00 260 1.3 x 476.9G 59.62G (1:8) 1.71 460 Fermi 2.1 x 907.2G 75.60G (1:12) 1.90 560 x 1,089G 90.72G (1:12) 2.28 660 Kepler 3.0 x 1.981T 82.56G (1:24) 1.82 760 x 2.378T 99.07G (1:24) 1.20 960 Maxwell 5.2 x 2.413T 75.39G (1:32) 1.01 1060 6G Pascal 6.1 68.36G (1:64) 4.375T 136.7G (1:32) 1.81 1660 Turing 7.5 10.05T (2:1) 5.027T 157.1G (1:32) - 2060 12G 14.36T (2:1) 7.181T 224.4G (1:32) 1.64 3060 12G Ampere 8.6 12.74T 12.74T 199.0G (1:64) 1.77 4060 Ada Lovelace 8.9 15.11T 15.11T 236.2G (1:64) 1.18 5060 Blackwell 10.1 23.22T 23.22T 362.9G (1:64) 1.47 (예상치)
참고 3060 Ti Ampere 8.6 16.20T 16.20T 253.1G (1:64) 4060 Ti 16G Ada Lovelace 8.9 22.06T 22.06T 344.8G (1:64) 1.36 3070 8.6 20.31T 20.31T 317.4G (1:64) 4070 8.9 29.15T 29.15T 455.4G (1:64) 1.43
가장 처음 CUDA 를 선보인건 GeForce 8000번대 제품 부터다. 이때에는 FP32 만 지원되었다. 이후 200번대에 와서 FP64가 지원되고, 이후 1000 번대부터 부터 FP16이 지원되었다. FP16은 AI 연산에서 사용된다.
최근에 나온 40xx번대 GPU 는 FP8 도 지원하지만 텐서코어에서 지원하는 것이기 때문에 이 표에서 적지 않았다. 텐서코어를 이용한 4090 GPU 의 경우 FP8 성능은 660TFLOPS 정도다. (하지만 이 성능을 AI 에서 사용하지는 못한다. 말 그대로 텐서코어에서 지원하기 때문이다)
올해 7월 출시 예정인 4060으로 변경할 생각은 있긴 한데 VRAM 이 12GB 이 나오지 않는다고 한다. 이렇게 되면 4060Ti 16GB 모델로 변경해야할것 같다. 어쨌든 같은 성능에 전력소모는 확 줄어들것이기 때문에 쓰긴 써야 한다고 생각한다. 게임하는데에는 안좋지만 말이다. 하나 더 걸리는게 4060을 사용해도 예상대로라면 2060 FP16보다 1.35배 성능이 빨라진다. 가격은 1.35배 차이가 아닐 것 같은데 말이다. 에혀.
지금은 Stable Diffusion 실행시킬 때 FP32 을 사용하고 있지만, 이 표를 보니 FP16 써야 할것 같다. 지금 사용하고 있는 2060은 FP16 연산 능력이 FP32에 비해 2배 빠르기 때문이다. 또한 FP16으로 실행하면, 12GB VRAM 으로도 4K 이미지를 생성할 수 있을것 같기도 하고 말이다.