无法在visual studio 2008中构建CUDA项目

时间:2011-03-25 20:27:40

标签: c visual-studio-2008 cuda

我是贝尔格莱德大学计算机科学专业的一年级学生。我的软计算项目是比较不同人群算法的CUDA实施表现,如遗传算法,蚁群优化,蜂群,萤火虫和PSO。我不希望编写所有这些代码,因为我是一年级学生。我的任务就是尝试查找代码,运行它们并测量CPU和GPU实现之间的性能差异。

一些好人向我发送了一个在Linux下开发的遗传算法的CUDA实现。由于我对Linux不太熟悉,因此无法在Windows上的visual studio中构建和运行CUDA项目。

Make文件包含在项目中,但我认为它不完整。使文件包含另一个我没有的make文件。我尝试在win 7下运行它,但它没有成功,所以我安装了win xp,visual studio 2008,CUDA SDK 2.3和匹配的驱动程序。无论我尝试什么,我总是遇到同样的问题。

首先,我得到u_int32_t is undefinedu_int32_t是自定义类型),因此我将其替换为__int32,这就解决了问题。 之后,我收到以下错误:rint is not definedlog2 is not defined。我不知道为什么我会收到这些错误,因为math_functions.h通过common_functions.h间接包含在项目中。然后我在注释下放了两行这些函数,并为这些变量赋予一些固定值。

之后我收到链接器错误。例如:

  

错误3错误LNK2019:函数“public:__thiscallGa :: Ga(int *,char * *)

中引用的未解析的外部符号_h_fit

我能做些什么吗?另外,如果有人愿意向我发送有效的遗传算法的CUDA实现,我将非常感激。我的电子邮件地址在我的个人资料中。

编辑:

我为所有h文件设置了包含pats,将pats链接到lib文件。我还设置了CUDA构建规则。我可以很好地构建和运行其他CUDA项目。

2 个答案:

答案 0 :(得分:1)

安装NSight 1.51。这将为您设置构建规则等。

可以确保项目Configuration Properties |中的Include Directories属性VC ++目录选项卡包含SDK的包含路径。类似的东西:

C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v3.2 \ include

确保链接器|输入选项卡将cudart.lib作为附加依赖项之一

链接器错误看起来无法找到像Ga(int *,char * *)这样的方法,我假设它是GA算法的一部分。您是否尝试将CUDA项目链接到另一个VS项目以使用CUDA GA库?如果是这样,您需要确保将GA库扩展到其他代码的类标记为

class __declspec(dllexport) {classname}

这样DLL就会导出类,而另一个VS项目需要包含对CUDA项目的依赖。如果没有看到您的解决方案如何配置,很难说更多。

以下是有关CUDA和Visual C ++ 2010入门的两个教程,其中大部分内容适用于VS 2008:

http://blog.cuvilib.com/2011/02/24/how-to-run-cuda-in-visual-studio-2010/

http://www.ademiller.com/blogs/tech/2011/03/using-cuda-and-thrust-with-visual-studio-2010/

NVIDIA论坛上还有一篇文章:

http://forums.nvidia.com/index.php?showtopic=184539

答案 1 :(得分:0)

确保您已设置包含h文件的路径, 链接lib文件的路径, 构建事件来复制dll。 (所有这些都是为了纠正Toolkit和SDK中的路径。)

还可以使用CUDA的规则文件来设置构建工具 对于cu文件。