内核 CUDA 中的 C++ 代码?

Rob*_* Vn 2 c++ cuda

据我所知,CUDA 支持 C 和 C++。但是我不能在我的内核中使用 C++。

我尝试这样一个简单的例子

__global__ void simple(){
     cout<<"abc";
}
Run Code Online (Sandbox Code Playgroud)

那是错误。但如果我改变printf("abc");它是对的。

你能帮我解释一下吗?非常感谢!

Hop*_*bcn 5

来自 CUDA 7.5 nvidia 幻灯片:

C++11 支持的特性

  • 汽车
  • 拉姆达
  • std::initializer_list
  • 可变参数模板
  • 静态断言
  • 常量表达式
  • 右值引用
  • 基于范围的循环

C++ 不支持的功能

  • 线程本地
  • 标准库:std::*

std::cout在 C++ 标准库中定义,CUDA 不支持。使用 Cprintf

从 CUDA 6.5 开始,“compute_11?”、“compute_12?”、“compute_13?”、“sm_11?”、“sm_12?”和“sm_13? 架构已被弃用。所以nvcc会默认编译为 CC 2.0 启用printf支持。

更多信息在这里这里