【问题标题】:Can I profile OpenACC kernel in C source code level?我可以在 C 源代码级别分析 OpenACC 内核吗?
【发布时间】:2015-12-03 22:08:57
【问题描述】:

我正在尝试使用带有 PGI 15.7 编译器的 openacc 加速我的代码。

我想在 C 源代码级别分析我的代码。 我正在使用 CUDA 7.0 中的“nvvp”分析器 当我运行 nvvp 时,我可以使用 'analysis tap' 并且可以得到哪个延迟是我的代码变慢的原因。 (数据依赖,条件分支和带宽......等)

但是,我无法进行基于行的分析,而只能进行“内核”级别的分析。 (例如 main_300_gpu 内核使用了 10 秒)。 所以我很难知道我必须在哪里修复代码。

有什么方法可以在源代码级别分析我的代码

我正在使用

PGI 15.7(使用 pgcc)

CUDA 7.0

英伟达 GTX 960

Ubuntu 14.04 LTS x86_64

[我的 nvvp 报告截图]

【问题讨论】:

    标签: cuda gpu nvidia openacc nvvp


    【解决方案1】:

    您也可以尝试添加标志“-ta=tesla:lineinfo”,让编译器为分析器添加源代码关联(它与 nvcc --lineinfo 的标志相同)。尽管正如 Bob 指出的那样,代码可能经过大量转换,因此许多行信息不会直接对应回您的原始来源。

    【讨论】:

    • 谢谢你,马特。我使用了 -ta=tesla:lineinfo 选项,因此我可以使用 NVVP 显示我的源代码。
    【解决方案2】:

    在当前时间(在 CUDA 7.5 或更高版本上,使用 cc5.2 或更高版本的 GPU),nvvp 分析器can associate 使用 CUDA C/C++ 行的各种采样执行活动源代码。

    但是,目前,此功能还没有扩展到 OpenACC C/C++(或 Fortran)源代码行。

    然而,应该仍然可以将活动与反汇编相关联,并且可以与PGI nollvm option 生成的中间 C 源文件相关联。然而,这些都与您的 OpenACC 源代码非常相似。

    使用 PGI 工具分析 OpenACC 代码的另一个选项是在执行代码之前设置 PGI_ACC_TIME=1 环境变量。这将使运行时内置的轻量级分析器能够对 OpenACC 代码的执行特性进行一些分析,特别是与加速器区域相关的那些部分。输出带有注释,因此您可以参考源代码行。

    【讨论】:

      猜你喜欢
      • 2018-02-20
      • 2011-02-01
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2017-10-22
      相关资源
      最近更新 更多