最近在研究tensor core 加速,文档中提到在turing 架构之后,tensor core 就支持了int8 的矩阵运算,但是网上文档相对较少,收集了几个文档备查。
第一个链接是NV 官方关于tensor core 的介绍,重点讲了几个问题,输入大小限制,带宽限制。
- 输入限制,要求输入是8/16/64/128的整数倍,例如
- linear batchsize 应该是8(fp16)/16(int8)的倍数
- conv, channel 是 8(fp16)/16(int8)的倍数
- gemm, 维度是64/128/256的倍数
- 带宽限制
- gemm 维度是128 或更小时,带宽可能是瓶颈
第二个链接是cuda9上调用tensor core的介绍。
tensor core 可以通过 cublas, cudnn, wmma 来调用,推荐使用cublas, cudnn来调用,因为他们包含一些专门的trick.
这篇文章的问题是cuda 版本9.0, 不涉及int8代码,但是可作为fp16的参考。