首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是cudaLaunchKernel在喷炬分析器的输出

什么是cudaLaunchKernel在喷炬分析器的输出
EN

Stack Overflow用户
提问于 2022-03-02 20:19:07
回答 1查看 543关注 0票数 7

我试着分析一下我的火炬网络,看看瓶颈是什么。我注意到有一个名为cudaLaunchKernel的操作,它占用了大部分时间。这个答案说,这是对库达所做的每一次操作的调用。假设我用C++或任何其他语言实现了这个网络,那么这一次是否可能减少呢?

基本上,我是问这种开销是因为我已经用python实现了我的网络,还是这种开销总是存在,并且不可能在任何语言中进行优化?

完整的分析器输出:

代码语言:javascript
复制
-------------------------------------------------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  
                                                   Name    Self CPU %      Self CPU   CPU total %     CPU total  CPU time avg     Self CUDA   Self CUDA %    CUDA total  CUDA time avg    # of Calls  
-------------------------------------------------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  
                                       cudaLaunchKernel        99.80%     933.739ms        99.80%     933.739ms      20.750ms       0.000us         0.00%       0.000us       0.000us            45  
                                        model_inference         0.05%     453.000us       100.00%     935.567ms     935.567ms       0.000us         0.00%     195.000us     195.000us             1  
                                aten::cudnn_convolution         0.04%     388.000us        99.84%     934.047ms     103.783ms     195.000us       100.00%     195.000us      21.667us             9  
                                     aten::_convolution         0.01%     138.000us        99.88%     934.419ms     103.824ms       0.000us         0.00%     195.000us      21.667us             9  
                                           aten::conv2d         0.01%     122.000us        99.89%     934.592ms     103.844ms       0.000us         0.00%     195.000us      21.667us             9  
                                             aten::add_         0.01%     112.000us         0.02%     155.000us      17.222us       0.000us         0.00%       0.000us       0.000us             9  
                               aten::upsample_nearest2d         0.01%      82.000us         0.01%     105.000us      26.250us       0.000us         0.00%       0.000us       0.000us             4  
                                            aten::empty         0.01%      79.000us         0.01%      79.000us       3.292us       0.000us         0.00%       0.000us       0.000us            24  
                                        aten::threshold         0.01%      74.000us         0.02%     149.000us      18.625us       0.000us         0.00%       0.000us       0.000us             8  
                                             aten::_cat         0.01%      71.000us         0.01%     119.000us      29.750us       0.000us         0.00%       0.000us       0.000us             4  
                                             aten::relu         0.01%      57.000us         0.02%     206.000us      25.750us       0.000us         0.00%       0.000us       0.000us             8  
                                      aten::convolution         0.01%      51.000us        99.88%     934.470ms     103.830ms       0.000us         0.00%     195.000us      21.667us             9  
                                             aten::view         0.01%      50.000us         0.01%      50.000us       5.556us       0.000us         0.00%       0.000us       0.000us             9  
                                              aten::cat         0.00%      32.000us         0.02%     151.000us      37.750us       0.000us         0.00%       0.000us       0.000us             4  
                                          aten::reshape         0.00%      29.000us         0.01%      79.000us       8.778us       0.000us         0.00%       0.000us       0.000us             9  
                                          aten::resize_         0.00%      25.000us         0.00%      25.000us       0.962us       0.000us         0.00%       0.000us       0.000us            26  
                                             aten::rsub         0.00%      21.000us         0.00%      33.000us      33.000us       0.000us         0.00%       0.000us       0.000us             1  
                                              aten::mul         0.00%      17.000us         0.00%      27.000us      27.000us       0.000us         0.00%       0.000us       0.000us             1  
                                            aten::zeros         0.00%      13.000us         0.00%      16.000us      16.000us       0.000us         0.00%       0.000us       0.000us             1  
                                        cudaEventRecord         0.00%      12.000us         0.00%      12.000us       1.333us       0.000us         0.00%       0.000us       0.000us             9  
                                        cudaBindTexture         0.00%      11.000us         0.00%      11.000us       2.750us       0.000us         0.00%       0.000us       0.000us             4  
                                    aten::empty_strided         0.00%       6.000us         0.00%       6.000us       6.000us       0.000us         0.00%       0.000us       0.000us             1  
                                            aten::zero_         0.00%       1.000us         0.00%       1.000us       1.000us       0.000us         0.00%       0.000us       0.000us             1  
cudnn::maxwell::gemm::computeOffsetsKernel(cudnn::ma...         0.00%       0.000us         0.00%       0.000us       0.000us     195.000us       100.00%     195.000us     195.000us             1  
                                      cudaUnbindTexture         0.00%       0.000us         0.00%       0.000us       0.000us       0.000us         0.00%       0.000us       0.000us             4  
-------------------------------------------------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  
Self CPU time total: 935.583ms
Self CUDA time total: 195.000us

PS:一些吐露

Python版本: 3.8.8

PyTorch版本: 1.8.1

cudatoolkit版本: 10.2.89

cuda版本(由nvidia-smi提供):11.4

处理器规格:英特尔核心i7 10700 @ 2.90GHz 16核GPU规格: NVIDIA GM204GL Quadro M4000 RAM: 64 8GB :8GB OS: 64位Ubuntu20.04.3

PPS:我不是在寻找加速我的代码的方法。我想知道是否有可能通过用不同的语言(如cpp )或直接用cuda编写代码来加速它。(比如,假设我的所有数据都在GPU上,并且我已经用库达语言自己编写了代码,那么它会在195us中运行吗?)

EN

回答 1

Stack Overflow用户

发布于 2022-03-08 11:26:09

根据CUDA 文档cudaLaunchKernel被调用来启动设备函数,简而言之,它是在GPU设备上运行的代码。

因此,分析器声明在GPU上运行了大量的计算(正如您可能预期的那样),这需要在设备上传输数据结构。这可能是瓶颈的根源。

我通常不会在CUDA中开发,但是也许您可以通过在CUDA中编写更大的内核和更少的CPU/GPU传输来加快进程。

有关更多细节,请查看本教程

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71328662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档