【发布时间】:2019-12-11 09:48:55
【问题描述】:
对于一个 Linux 项目,我正在尝试分析一个使用 CUDA NPP 库调用的静态库。我想使用 NVTX API 来分析我们的例程,看看哪些更有效。然而,尽管 NVTX 的 CUDA 文档提到了 nvToolsExt.a 库,但我在 10.0 工具包中找不到任何此类库,尽管共享库(即 libnvToolsExt.so)在那里。它在任何地方都可用,还是 nVIDIA 默默地放弃了对分析静态库的支持?
【问题讨论】:
-
libnvToolsExt.a 与 libnvToolsExt.so 的区别只会影响您将代码链接到工具库的方式。它应该与您是否可以分析静态库中的代码与是否可以分析动态库中的代码无关。换句话说,我应该能够在我使用 libnvToolsExt.so 提供的支持分析的静态库中拥有 CUDA 代码,即使该库是动态链接到您的应用程序的。
-
我查看了 CUDA 8、9.2、10.0 和 10.1,但没有看到任何
libnvToolsExt.a的证据。 current doc 也没有引用它(但确实引用了 .so)。所以我认为这里没有任何东西被“丢弃”,至少最近没有。在动态链接库中提供此工具不应妨碍您将其与静态库中的代码一起使用。 -
我在 NVIDIA 的文档中看到对它的唯一引用是 here,这是 tegra 的文档,它是 ARM,而不是 x86。如果您使用的是 ARM 系统,则很可能可以找到
libnvToolsExt.a。 -
上面评论的人是正确的,因为我(最终)能够仅使用动态库来获取我的代码版本来分析。我的特殊情况更加令人困惑,因为我需要诊断一个静态库,该库链接到一个在运行时加载的动态插件,而我前六次尝试让它链接失败。不过我最终还是解决了。
标签: linux static cuda nvidia nvtx