gpt4 book ai didi

c++ - 为什么在指定 -rdc=true 时 cuda 代码运行得更慢

转载 作者:太空狗 更新时间:2023-10-29 20:22:43 26 4
gpt4 key购买 nike

我有很多用.h 和.cu 编写的类,所以我尝试了可重定位设备代码(-rdc=true)。耗时约 12 秒。然后我尝试合并代码,仅使用 header 类并删除 -rdc=true,仅用了 2 秒。

代码做的是sha1(some string) 0x40000次,用于winrar加密。

这是为什么呢?目前还可以,但我的项目会变大,单独编译会有用。 -rdc=true 会降低性能是正常行为吗?

最佳答案

如果函数代码位于单独的翻译单元中,而不是在您调用的入口点的 header 中,则不会发生内联。在这种情况下,函数调用会更昂贵。您可能希望使用 inline 关键字将时间关键型函数重新定位到头文件中,以便编译器有机会内联。​​

单独编译可能会产生对参数使用本地地址空间的结果(请参阅 http://docs.nvidia.com/cuda/parallel-thread-execution/index.html#abstracting-abi 以了解参数传递),这比此表所示的寄存器 (http://docs.nvidia.com/cuda/parallel-thread-execution/index.html#operand-costs) 要昂贵得多。

使用 inline 关键字将类实现文件中的一些方法移动到头文件中以避免链接问题可能是一种解决方案。

关于c++ - 为什么在指定 -rdc=true 时 cuda 代码运行得更慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com