본문 바로가기
그래픽카드 VGA/엔비디아 NVIDIA

Nvidia GPU 부동소수점연산(FLOPS) 계산.

by gamma0burst 2012. 8. 21.
반응형

플롭스(FLOPS) 관련 기초 내용은 이전 포스트 참고.
(AMD GPU 부동소수점연산(FLOPS) 계산.)


(1) G80/G92 계열

Geforce 8000, Geforce 9000, GT100, 일부 GTX200 계열에 사용.
32비트 단정밀도(Single-Precision) 지원. (Geforce 9000 만 지원)
64비트 배정밀도(Double-Precision) 미지원.




 

G92 는 G80 에서 텍스처 유닛이 강화되고, 공정이 더 미세화되었다는 것 외에는 동일합니다.
Geforce 9000 계열이 사골이라고 욕먹는 이유.


(이하의 이런 류의 일러스트는 모두 後藤 弘茂(Hiroshige Goto)씨 출처입니다.)

G80/G92 코어는 SM(Streaming Multiprocessor) - TPC(Texture/Processor Cluster) - GPU 식으로 모듈화되어있습니다.
GPU는 8TPC로 구성되어있고, 1TPC 는 2SM 으로 구성되어있습니다.

엔비디아의 코어는 크게 스트림 프로세서(SP), SFU(Special Function Unit) 로 구성되어 있습니다.
1SP는 한 사이클당 1Add + 1Mul(Multiply) , 즉 2OP/cycle 입니다.
1SFU는 한 사이클당 4Mul(Multiply), 즉 4OP/cycle 입니다.

엔비디아의 GPU 내의 클럭은 크게 코어클럭, 쉐이더클럭이 있으며, 이 둘은 특정 비율을 갖으며 서로 다릅니다. (비동기)
플롭스 계산에는 쉐이더의 동작 속도인 쉐이더클럭이 적용됩니다. 


G80/G92 는 8SP + 2SFU 의 구성을 갖습니다.
SP수 : SFU수 = 4:1 인거지요.

9800GTX+
128SP, 쉐이더클럭 1836MHz
128SP 이니 SFU수는 1/4인 32 입니다.

단정밀도 - (128SP x 2OP/cycle + 32SFU x 4OP/cycle) x 1.836GHz = 705.024 GFLOPS


(2) GT200 계열

GTX200 (GTX260 이상), GT300 계열에 사용.
32비트 단정밀도 지원.
64비트 배정밀도 지원.



GT200 은 기본적으로 G80/G92 의 구조를 따르고 있습니다.
차이라면 TPC, SM의 비율이 다르다는 것과 배정밀도 지원을 위한 유닛이 추가되었다는 점 정도입니다.


배정밀도 연산을 위한 유닛(DP unit)이 1SM 당 하나씩 추가되었는데,
이 유닛 역시 한 사이클당 1Add + 1Mul(Multiply) , 즉 2OP/cycle 이 됩니다.

SP : SFU : DP unit = 8 : 2 : 1

GTX285
240SP, 쉐이더클럭 1476MHz
240 SP, 60 SFU, 30 DP unit

단정밀도 - (240SP x 2OP/cycle + 60SFU x 4OP/cycle) x 1.476GHz
 = 1062.72 GFLOPS = 1.063 TFLOPS

배정밀도 - 30 DP unit x 2OP/cycle x 1.476GHz = 88.56 GFLOPS


(3) GF100/GF110 (페르미1, Fermi)
GTX400, GTX500 계열 상위 일부 제품에 사용.
32비트 단정밀도 지원.
64비트 배정밀도 지원.



 

(좌 : GF100/GF110, 우 : GF104/GF114)

SM(Streaming Multiprocessor) - GPC(Graphics Processing Cluster) - GPU
1 GPU = 4 GPC
1 GPC = 4 SM
1 SM = 32 SP

1 SM 은 32 SP + 4 SFU 로 구성되지만, 페르미부터는 SFU 가 FP Mul 연산을 하지 않기때문에 플롭스 계산에서도 제외됩니다.


배정밀도 성능은 단정밀도 성능의 1/2 입니다.
2개의 단정밀도 연산 유닛을 이용해서 배정밀도 연산을 하는듯.

GTX580
512SP, 쉐이더클럭 1544MHz

단정밀도 - 512SP x 2OP/cycle x 1.544GHz = 1581.056 GFLOPS = 1.58 TFLOPS
배정밀도 - 1581.056 / 2 = 790.523 GFLOPS


(4) GF10x/GF11x (페르미2, Fermi)
GTX400, GTX500, GTX600 계열 하위 제품에 사용.
32비트 단정밀도 지원.
64비트 배정밀도 지원.


SM(Streaming Multiprocessor) - GPC(Graphics Processing Cluster) - GPU
1 GPU = 2 GPC
1 GPC = 4 SM
1 SM = 48 SP

1 SM 은 48 SP + 8 SFU 로 구성되지만, 역시나 SFU 는 플롭스 계산에서 제외됩니다.


48SP 중에서 16SP 만이 배정밀도 연산이 가능하고, 4개의 단정밀도 연산 유닛을 이용해서 배정밀도 연산을 합니다.
전체 SP 의 1/3 이 1/4 의 throughput 에서 연산을 하기때문에, 배정밀도 성능은 단정밀도 성능의 1/12 입니다.

GTX560 Ti
384SP, 쉐이더클럭 1645MHz

단정밀도 - 384SP x 2OP/cycle x 1.645GHz = 1263.36 GFLOPS = 1.26 TFLOPS
배정밀도 - 1263.36 / 12 = 105.28 GFLOPS


(5) GK104 (케플러1, Kepler)
GTX600 계열 상위 제품에 사용.
32비트 단정밀도 지원.
64비트 배정밀도 지원.


SMX - GPC(Graphics Processing Cluster) - GPU
1 GPU = 4 GPC
1 GPC = 2 SMX
1 SMX = 192 SP


1 SMX 은 192 SP + 32 SFU + 8 DP unit 구성으로 보입니다.
배정밀도 연산 유닛 (DP unit)은 이미지 상에는 나타나있지 않지만 정황상 존재하는듯 합니다.
DP unit 은 배정밀도 연산만 가능하고, 단정밀도 연산은 하지 않습니다.

배정밀도 연산 유닛이 단정밀도 연산 유닛의 1/24 이니, 배정밀도 성능은 단정밀도 성능의 1/24

GTX680
1536SP, 64 DP unit, 쉐이더클럭 1006MHz (부스트 클럭 1110MHz)

단정밀도 - 1536SP x 2OP/cycle x 1.11GHz = 3409.92 GFLOPS = 3.41 TFLOPS
배정밀도 - 3409.92 / 24 = 142.08 GFLOPS


(6) GK110 (케플러2, Kepler)
테슬라 K20 에 사용 예정.
32비트 단정밀도 지원.
64비트 배정밀도 지원.

SMX - GPC(Graphics Processing Cluster) - GPU
1 GPU = ? GPC = 15 SMX
1 GPC = ? SMX
1 SMX = 192 SP

1 SMX 은 192 SP + 32 SFU + 64 DP unit 구성입니다.
앞서 GK104 에 이미지 상에 없는 DP unit 을 예상한 것이 GK110 때문.

배정밀도 연산 유닛이 단정밀도 연산 유닛의 1/3 이니, 배정밀도 성능은 단정밀도 성능의 1/3


엔비디아에서 공개한 다이 이미지를 보면, 사양이 비슷한 GK104 와 GK110 의 SMX 의 크기의 차이가 제법 있습니다.
DP unit 을 강화했기때문으로 보는게 타당하겠지요.

수율 등의 문제로 일부 SMX 를 막지 않은 완전체 상태라면 스펙은 다음과 같습니다.

GK110
2880 SP, 960 DP unit


테슬라 K10, K20 의 비교 대상은 M2090 으로 보이는데, K20 의 배정밀도 성능은 이전의 3배라고 했습니다.
M2090 의 배정밀도 성능은 665.6 GFLOPS 이고, 그 3배면 1996.8 GFLOPS 입니다. 약 2 TFLOPS
(3배는 무슨... 말 뒤집은 엔비디아.)

Tesla K20
배정밀도 - 960 DP unit x 2OP/cycle x ?? GHz = 
2 TFLOPS
클럭은 1.04 GHz 정도 나옵니다.
1GHz 내외의 클럭을 갖을 것으로 보입니다.

1GHz 기준으로 단정밀도 성능을 계산해보면 다음과 같이 나옵니다.
단정밀도 - 2880SP x 2OP/cycle x 1GHz = 5760 GFLOPS =
5.76 TFLOPS

K20
2496SP, 832 DP unit, 쉐이더클럭 706MHz
2SMX를 막아서 13SMX만 활성화되었습니다.

단정밀도 - 2496SP x 2OP/cycle x 0.706 GHz = 3525.352 GFLOPS = 3.52 TFLOPS
배정밀도 - 832 DP unit x 2OP/cycle x 0.706 GHz = 1174.784 GFLOPS = 1.17 TFLOPS

K20x
2688SP, 896 DP unit, 쉐이더클럭 732MHz
1SMX를 막아서 14SMX만 활성화되었습니다.


단정밀도 - 2688SP x 2OP/cycle x 0.732 GHz = 3935.232 GFLOPS = 3.94 TFLOPS
배정밀도 - 896 DP unit x 2OP/cycle x 0.732 GHz = 1311.744 GFLOPS = 1.31 TFLOPS


- 2012.11.20
K20, K20x 추가.
-


반응형

댓글