【问题标题】:CUDA C Setup issues [duplicate]CUDA C设置问题[重复]
【发布时间】:2016-05-07 00:17:14
【问题描述】:

我最近购买了 CUDA C By Example 一书,我正在尝试进行设置。我下载了工具包并尝试运行这段简单的代码:

#include <stdio.h>

__global__ void add(int a, int b, int * c) 
{
    *c = a + b;
}

int main(void)
{
    printf("Hello World!");

    return 0;
}

我得到的错误是:

expected '(' to follow '__global__'                          line 2
'add' not in formal parameters list                          line 3
syntax error: missing ';' before '{'                         line 3
expected a ';'                                               line 3

不知道我做错了什么。是否有一些我缺少的#include 语句?这本书没有一个,我在网上阅读的例子似乎也没有另一个。有关更多信息,我在 Visual Studio 中创建了一个 Visual C++ 项目,并使文件具有“.c”扩展名而不是“.cpp”。

任何帮助将不胜感激,我真的很想开始使用这些东西:D

【问题讨论】:

  • 在Visual Studio中,你需要专门在一个CUDA C/C++项目中(不是一个普通的c/c++项目),并且你的文件名应该以.cu结尾,而不是.c或者.cpp。我建议仔细遵循windows install guide 中的说明,注意应该在安装 VS 之后 安装 CUDA 工具包。完成验证步骤,其中涉及构建和运行一些示例项目。
  • @Matthew:takeit 包含很多样本。例如。 CUDA Samples\v7.5\0_Simple\vectorAdd 是 CUDA 的“Hello World”,并带有正确配置的 VS 项目文件,可能有助于入门。
  • @Robert Crovella 非常感谢!我买的书中没有提到这些,这让我很困惑。努力验证文件,我也会尝试运行一些示例代码。

标签: parallel-processing cuda


【解决方案1】:

您的文件应该具有“.cu”扩展名,并且对于 CUDA 程序,您应该包含 #include &lt;host_defines.h&gt; 或更优选为 #include &lt;cuda_runtime.h&gt;

【讨论】:

  • 永远不需要将运行时 API 定义标头包含到使用 nvcc 编译的 .cu 文件中。编译器将自动包含所有支持的内核代码和主机运行时 API。除非您确切地知道自己在做什么,否则这样做可能会导致意外行为。
猜你喜欢
  • 2011-09-08
  • 2011-09-12
  • 1970-01-01
  • 2013-07-26
  • 2018-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多