CUDA 11 中的链接时优化 - 它们是啥以及如何使用它们?
Posted
技术标签:
【中文标题】CUDA 11 中的链接时优化 - 它们是啥以及如何使用它们?【英文标题】:Link-time optimizations in CUDA 11 - what are they and how to use them?CUDA 11 中的链接时优化 - 它们是什么以及如何使用它们? 【发布时间】:2021-05-26 17:43:09 【问题描述】:CUDA 11 features announcement,据说现在有:
新的链接时间优化功能
nvcc 实际采用了哪些链接时优化(例如,相对于使用 g++ 或 clang++ 的主机端代码中的 LTO 功能)?
另外 - 是否需要做一些事情来启用 LTO,或者它是否总是会发生(与需要使用 -flto
开关编译的主机端代码不同?
【问题讨论】:
我还没有探索过这个新功能,但我会假设跨编译单元的函数内联是这些功能之一。应该很容易通过简单的实验来确认或反驳。 【参考方案1】:部分答案:
要启用链接时优化,请在调用 NVCC 编译器时使用--dlink-time-opt
(或dlto
),用于编译和设备端代码链接。如果编译器找不到相关的中间信息,则不会应用(链接时)优化。
【讨论】:
【参考方案2】:我的猜测是 -dlto 必须与编译时间和链接时间有关,如果您使用非 nvcc 链接程序,例如 gcc 或 g++,那么您可能无法获得最佳性能
【讨论】:
我已经说过了。以上是关于CUDA 11 中的链接时优化 - 它们是啥以及如何使用它们?的主要内容,如果未能解决你的问题,请参考以下文章
Jet Engine 的查询优化是基于统计的,但是它们是如何用链接表刷新的呢?
CUDA nvvp 提供的报告中的“Instruction Issued”是啥意思?