微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 NVCC 对 constexpr 比非 constexpr 主机函数更严格?

如何解决为什么 NVCC 对 constexpr 比非 constexpr 主机函数更严格?

考虑以下代码

constexpr __host__   void foo() {  }

__global__ void baz()
{
    if constexpr(1==2) { foo(); }
}

fails to compile 带有 CUDA 11.3.1 的 NVCC。但是,如果我删除 constexpr - 它是 does compile

怎么会?这是一个错误吗?

解决方法

这是一个错误。我已将其提交给 NVIDIA:

https://developer.nvidia.com/nvidia_bug/3328502

(很难访问他们的错误跟踪系统,请尝试先通过 https://developer.nvidia.com 登录,然后查看您的错误,然后替换错误编号。)

显然没有修复!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。