解决方法
通常,nvcc设备代码编译器会自行决定何时内联特定的__device__函数,一般来说,您可能不需要担心使用__forceinline__ decorator /指令覆盖它.
cc 1.x设备没有与新设备相同的硬件功能,因此编译器通常会自动为这些设备内联函数.
我认为指定__forceinline__的原因与您对主机C代码的了解相同.当编译器可能无法内联函数时(例如,在cc 2.x或更新的设备上),它通常用于优化.如果你正在调用函数一次,那么这个优化(即函数调用开销)可能是微不足道的,但是如果你在循环中调用函数,那么确保它被内联可能会在代码执行方面给出明显的改进.
作为反例,内联和递归通常具有禁忌症.对于调用自身的递归函数,我认为不可能处理任意递归和严格内联.因此,如果您打算递归使用函数(在cc 2.x及更高版本中支持),您可能不希望指定__forceinline__.
一般来说,我认为您应该让编译器为您管理.它将智能地决定是否内联函数.
原文地址:https://www.jb51.cc/c/118526.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。