据我所知,CUDA支持C和C ++。但是我不能在我的内核中使用C ++。
我尝试了一个像这样的简单例子
__global__ void simple(){
cout<<"abc";
}
那是错误。但如果我改为printf("abc");
,那就是对了。
答案 0 :(得分:2)
来自CUDA 7.5 nvidia幻灯片:
C ++ 11支持的功能:
C ++不支持的功能
std::cout
在C ++标准库中定义,CUDA不支持。使用C printf
从CUDA 6.5开始,不推荐使用'compute_11','compute_12','compute_13','sm_11','sm_12'和'sm_13'架构。因此,nvcc
默认会编译为启用printf
支持的CC 2.0。
答案 1 :(得分:0)
CUDA没有链接库和&amp;使用printf()
函数所需的头文件。但是,您可以启用__eq__
此答案解释了启用此功能的过程: printing from cuda kernels 引用此处以便于访问:
要在Compute Capability&gt; = 2.0的设备上启用普通printf(),重要的是为至少CC 2.0的CC编译并禁用默认值,其中包括CC 1.0的构建。
右键单击项目中的.cu文件,选择“属性”,然后选择“配置属性” CUDA C / C ++ |设备。单击代码生成行,单击三角形,然后选择编辑。在“代码生成”对话框中,取消选中“从父项目或项目默认值继承”,在顶部窗口中键入compute_20,sm_20,单击“确定”。