# 手算Ampere架构各个精度的Throughout

### 相关数据

<figure><img src="https://3100114358-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyhXXzVY3gexs8StunmSt%2Fuploads%2FvZx4CtKbuUJT4b0WFP04%2F%E5%9B%BE%E7%89%87.png?alt=media&#x26;token=89e89140-3222-4d6d-8941-687674925e81" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3100114358-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyhXXzVY3gexs8StunmSt%2Fuploads%2F7u2kh3LjkKPMiLVyU32H%2F%E5%9B%BE%E7%89%87.png?alt=media&#x26;token=d04febb4-82f2-443b-b550-3563a2445c0b" alt=""><figcaption></figcaption></figure>

### FP64 CUDA Core

<figure><img src="https://3100114358-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyhXXzVY3gexs8StunmSt%2Fuploads%2FrEonEvbVZ03qSr0apivr%2F%E5%9B%BE%E7%89%87.png?alt=media&#x26;token=13fc2452-8b32-4036-95ef-b15c1ac23b39" alt=""><figcaption></figcaption></figure>

使用CUDA Core的FP64最好理解 一共32个计算FP64的CUDA Core，每一个clk(时钟周期)计算一个FP64&#x20;

* 频率：1.41 GHz • SM数量：108&#x20;
* &#x20;一个SM中计算FP64的CUDA core的数量: 32&#x20;
* 一个CUDA core一个时钟周期可以处理的FP64: 1&#x20;
* 乘加: 2&#x20;

Throughput = 1.41 GHz \* 108 \* 32 \* 1\* 2 = 9.7 TFLOPS

### FP32 CUDA Core

<figure><img src="https://3100114358-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyhXXzVY3gexs8StunmSt%2Fuploads%2FphuwLapO0fQxO2zb4hhi%2F%E5%9B%BE%E7%89%87.png?alt=media&#x26;token=7a9de32c-6cd5-4d78-9da4-4745a3998539" alt=""><figcaption></figcaption></figure>

使用CUDA Core的FP32跟FP64差不多 一共64个计算FP32的CUDA Core，每一个clk计算一个FP32&#x20;

* 频率：1.41 GHz&#x20;
* SM数量：108&#x20;
* 一个SM中计算FP32的CUDA core的数量: 64&#x20;
* &#x20;一个CUDA core一个时钟周期可以处理的FP32: 1&#x20;
* 乘加: 2&#x20;

Throughput = 1.41 GHz \* 108 \* 64 \* 1\* 2 = 19.4 TFLOPS

### FP16 CUDA Core

<figure><img src="https://3100114358-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyhXXzVY3gexs8StunmSt%2Fuploads%2FX9jOBdC1f6kL7BWfjL2y%2F%E5%9B%BE%E7%89%87.png?alt=media&#x26;token=e16b1eef-5c42-4212-98cd-555e9391a26a" alt=""><figcaption></figcaption></figure>

Ampere中没有专门针对FP16的CUDA core，而是将FP32的CUDA Core和FP64的CUDA Core一起使用来计算FP16。我们暂且说一个 SM中计算FP16的CUDA core的数量是: 256 ( = 32 \* 4 + 64 \* 2 )&#x20;

* 频率：1.41 GHz&#x20;
* SM数量：108&#x20;
* 一个SM中计算FP16的CUDA core的数量: 256&#x20;
* &#x20;一个CUDA core一个时钟周期可以处理的FP16: 1&#x20;
* 乘加: 2&#x20;

Throughput = 1.41 GHz \* 108 \* 256 \* 1 \* 2 = 78 TFLOPS

### INT8 CUDA Core

<figure><img src="https://3100114358-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyhXXzVY3gexs8StunmSt%2Fuploads%2FBgvsqFUa7SK92aQ4ssnf%2F%E5%9B%BE%E7%89%87.png?alt=media&#x26;token=755f5daa-eda4-49cb-9698-5838ea1040f4" alt=""><figcaption></figcaption></figure>

Ampere中没有专门针对INT8的CUDA core，而是用INT32的CUDA Core计算INT8。我们暂且说一个SM中计算INT8的CUDA core的数量 是: 256 ( = 64 \* 4 )&#x20;

* 频率：1.41 GHz • SM数量：108&#x20;
* 一个SM中计算INT8的CUDA core的数量: 256&#x20;
* 一个CUDA core一个时钟周期可以处理的INT8: 1&#x20;
* 乘加: 2&#x20;

Throughput = 1.41 GHz \* 108 \* 256 \* 1 \* 2 = 78 TOPS

### FP16 Tensor core

<figure><img src="https://3100114358-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyhXXzVY3gexs8StunmSt%2Fuploads%2FWSp1YIrNyRrl2tqzOSYO%2F%E5%9B%BE%E7%89%87.png?alt=media&#x26;token=da369d17-773f-4449-8830-3cfd5e1ea7ff" alt=""><figcaption></figcaption></figure>

我们来分析Tensor Core Ampere架构使用的是第三代Tensor Core，可以一个clk完成一个 1024 ( = 256 \* 4)个FP16运算。准确来说是4x8的矩阵与8x8的矩阵的 FMA

* 频率：1.41 GHz&#x20;
* &#x20;SM数量：108&#x20;
* 一个SM中计算FP16的Tensor core的数量: 4&#x20;
* &#x20;一个Tensorcore一个时钟周期可以处理的FP16: 256&#x20;
* &#x20;乘加: 2&#x20;

Throughput = 1.41 GHz \* 108 \* 4 \* 256 \* 2 = 312 TFLOPS

### INT8 Tensor Core

<figure><img src="https://3100114358-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyhXXzVY3gexs8StunmSt%2Fuploads%2Fgt078VWFHLRFmvhHBFft%2F%E5%9B%BE%E7%89%87.png?alt=media&#x26;token=da031a23-8104-44c8-8b8a-8cf5f8082b98" alt=""><figcaption></figcaption></figure>

我们来分析Tensor Core Ampere架构使用的是第三代Tensor Core，可以一个clk完成一个 2048 ( = 256 \* 2 \* 4)个INT8运算。准确来说是4x8的矩阵与8x8的矩 阵的FMA&#x20;

* 频率：1.41 GHz • SM数量：108&#x20;
* 一个SM中计算INT8的Tensor core的数量: 4
* 一个Tensorcore一个时钟周期可以处理的INT8: 512
* 乘加: 2&#x20;

Throughput = 1.41 GHz \* 108 \* 4 \* 512 \* 2 = 624 TOPS
