tensor core int8矩阵乘法

最近在研究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 或更小时,带宽可能是瓶颈

https://developer.download.nvidia.com/video/gputechconf/gtc/2019/presentation/s9926-tensor-core-performance-the-ultimate-guide.pdf

第二个链接是cuda9上调用tensor core的介绍。
tensor core 可以通过 cublas, cudnn, wmma 来调用,推荐使用cublas, cudnn来调用,因为他们包含一些专门的trick.
这篇文章的问题是cuda 版本9.0, 不涉及int8代码,但是可作为fp16的参考。

https://developer.nvidia.com/zh-cn/blog/programming-tensor-cores-cuda-9/

第三是cublas 的文档,其中关于tensor core 调用部分在gemm 和gemmEx这两个api , gemm 可实现fp16/fp32的矩阵乘,gemmEx 可以实现int8/int32等矩阵乘法。

https://docs.nvidia.com/cuda/cublas/index.html#cublas-GemmEx

第四个链接是gemmEx 实现矩阵乘法的官方示例
https://github.com/NVIDIA/CUDALibrarySamples/tree/master/cuBLAS/Extensions/GemmEx

你可能感兴趣的:(cuda,矩阵,深度学习,线性代数)