67 Star 273 Fork 130

MindSpore / akg

 / 详情

运行文档中的 CUDA kernel 代码,实际是否没有调用 tensor core?

DONE
Question
创建于  
2022-08-23 18:14
  1. 【Document Link】/【文档链接】
    https://gitee.com/mindspore/akg/wikis/Documentation/Optimize%20Tensor%20Operators/How%20to%20optimize%20Gemm%20By%20using%20TensorCore

  2. 【Issues Section】/【问题文档片段】
    对于 tensor core 实际是否启用存疑。

  3. 【Existing Issues】/【存在的问题】
    设备:RTX 3080
    Ubuntu 20.04
    CUDA版本:11.7
    cmake:3.24.0
    clang: 10.0.0

问题一、使用 NVIDIA compute 测试,发现没有调用 tensor core。
问题详述:我根据上面的文档尝试配置 tensor_core=True 后启用 tensor core 来做 GEMM,但是我运行文档下面生成的 CUDA 代码(包括我自己实验的其他几个 bmm),最终在 NVIDIA compute 上发现并没有使用 tensor core。
我的判断依据是:一方面,使用 NVIDIA compute 测试 AKG 生成的 kernel,发现在汇编指令中并没有 HMMA;另一方面,和cublas的kernel对比(如下图,蓝色AKG kernel,绿色cublas kernel),发现 AKG 的 tensor 利用率为0。
输入图片说明

问题二、我在 (256, 256, 96) 维度下,输入输出均为fp16, 开启 tensor_core=True,最终的实验结果比输入输出均为fp32,tensor_core=false 慢,想知道是为什么?
4. 【Expected Result】【预期结果】
期待你们的回复,如果我的方法有问题望指正,如果没问题,希望能告知如何实际调用 tensor core,谢谢。

  • Please fill in the expected result

评论 (9)

Virusxxxxxxx 创建了Question

Please assign maintainer to check this issue.
请为此issue分配处理人。
@fangwenyi @chengxiaoli

Please add labels (comp or sig), also you can visit https://gitee.com/mindspore/community/blob/master/sigs/dx/docs/labels.md to find more.
为了让代码尽快被审核,请您为Pull Request打上 组件(comp)或兴趣组(sig) 标签,打上标签的PR可直接推送给责任人进行审核。
更多的标签可以查看https://gitee.com/mindspore/community/blob/master/sigs/dx/docs/labels.md
以组件相关代码提交为例,如果你提交的是data组件代码,你可以这样评论:
//comp/data
当然你也可以邀请data SIG组来审核代码,可以这样写:
//sig/data
另外你还可以给这个PR标记类型,例如是bugfix或者是特性需求:
//kind/bug or //kind/feature
恭喜你,你已经学会了使用命令来打标签,接下来就在下面的评论里打上标签吧!

fangwenyi 任务状态TODO 修改为ACCEPTED
fangwenyi 添加了
 
mindspore-assistant
标签
fangwenyi 关联项目设置为MindSpore Issue Assistant

你好,问题收到,我们已安排人员分析

fangwenyi 负责人设置为徐培秋

你好,能否上传相关测试日志以及生成的IR?

你好,我这边有相关日志和 IR,想请教一下怎么在 issue 里上传文件呢?

我将 IR 和 ncu 日志上传到百度云了,请你们看一下,感谢。
https://pan.baidu.com/s/17h_fzirmiHJlouQlUXHZiA?pwd=y903

Virusxxxxxxx 修改了描述

大佬们好,想请教一下 akg 的 wmma 是否还没有适配 ampere 架构呢?我在 readme 文档中看到适配了 V100/A100,其中 A100 是 ampere 架构,但是实际跑下来 A100 和 3080 一样都没有调用 tensor core,而 V100 调用了。阅读 akg_mma_lib/wmma.hpp 中 MMA 相关的 tensor core 指令的 fragment shape 均为 8x8x4。下图为 cuda 官方的文档,如第一二行所示,该 shape 的 mma 指令在 fp16 下只支持 Volta 和 Turing 架构,不支持 Ampere 架构,所以上述分析成立的话,该问题的核心原因可能是这个?
cuda 文档

你好,mma.m8n8k4的指令在Ampere架构确实不是原生支持的,而是用其他指令模拟的,所以并没有真正的使能Tensor Core。后续我们会支持wmma指令以及mma.m16n8k8等,敬请期待。

大佬们好,想请教一下 akg 的 wmma 是否还没有适配 ampere 架构呢?我在 readme 文档中看到适配了 V100/A100,其中 A100 是 ampere 架构,但是实际跑下来 A100 和 3080 一样都没有调用 tensor core,而 V100 调用了。阅读 akg_mma_lib/wmma.hpp 中 MMA 相关的 tensor core 指令的 fragment shape 均为 8x8x4。下图为 cuda 官方的文档,如第一二行所示,该 shape 的 mma 指令在 fp16 下只支持 Volta 和 Turing 架构,不支持 Ampere 架构,所以上述分析成立的话,该问题的核心原因可能是这个?
cuda 文档

@Virusxxxxxxx

fangwenyi 任务状态ACCEPTED 修改为VALIDATION
fangwenyi 任务状态VALIDATION 修改为DONE

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(6)
7461930 virusxxxxxxx 1587104633
Python
1
https://gitee.com/mindspore/akg.git
git@gitee.com:mindspore/akg.git
mindspore
akg
akg

搜索帮助

344bd9b3 5694891 D2dac590 5694891