我是贝尔格莱德大学计算机科学专业的一年级学生。我的软计算项目是比较不同人群算法的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 undefined
(u_int32_t
是自定义类型),因此我将其替换为__int32
,这就解决了问题。
之后,我收到以下错误:rint is not defined
和log2 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项目。
答案 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论坛上还有一篇文章:
答案 1 :(得分:0)
确保您已设置包含h文件的路径, 链接lib文件的路径, 构建事件来复制dll。 (所有这些都是为了纠正Toolkit和SDK中的路径。)
还可以使用CUDA的规则文件来设置构建工具 对于cu文件。