TensorCore使用

目前有两个库使用了TensorCore技术:cuBLAS与cuDNN。

cuBLAS主要加速了GEMM计算,cuDNN里主要用来加速卷积和RNN

而如何cuBLAS与cuDNN无法满足需求,也可以直接调用Tensor Cores进行编程。

Tensor Cores的调用API在nvcuda::wmma命名空间里。通过调用API进行数值初始化,进行矩阵乘加(MMA)操作然后再把数值存回内存。cuda官方给出了一个直接调用的例子,如果想要针对tensorcore进行高性能的优化,可以参考CUDA Toolkit 的cudaTensorCoreGemm。

TensorCore的使用方法:

头文件和命名空间

#include <mma.h>
using namespace nvcuda;

声明和初始化

tile矩阵乘法

// The only dimensions currently supported by WMMA
const int WMMA_M = 16;
const int WMMA_N = 16;
const int WMMA_K = 16;

__global__ void wmma_example(half *a, half *b, float *c, 
                             int M, int N, int K, 
                             float alpha, float beta) 
{

    // Leading dimensions. Packed with no transpositions.
    int lda = M;
    int ldb = K;
    int ldc = M;
    
    // Tile using a 2D grid
    int warpM = (blockIdx.x * blockDim.x + threadIdx.x) / warpSize;
    int warpN = (blockIdx.y * blockDim.y + threadIdx.y);

 

 

 

 

【1】使用TensorCore编程:https://devblogs.nvidia.com/programming-tensor-cores-cuda-9/

【2】TensorCore wiki :https://github.com/maddyscientist/mixed-precision/wiki

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值