2011-03-18 69 views
0

我在C++中的高级代码,并希望与cuda一起使用它。任何人都可以帮助我吗?我应该提供我的代码吗?其实我试过这样做,但我需要一些起始代码来继续我的代码。我知道如何为Windows(Visual Studio)做简单的方形程序(使用cuda和C++)。是否足以为我的程序执行这些操作?如何使用我现有的.cpp代码与cuda

+0

你到底想要什么?编辑你的代码,以便用cuda处理一些计算结果? – 2011-03-18 06:34:44

+7

请在将来考虑大写,空格,语法,使用完整的单词代替文本消息样式缩写,并在提供附加信息后编辑问题的前言。如果你不能帮助你自己,我们无法帮助你。当你在SO上发布信息时,你正在同时与成千上万的同侪交谈,请下次考虑。我们大多数人更喜欢帮助那些为他们的问题付出努力的人。 – 2011-03-18 12:58:32

+0

+1请提出具体问题,尽可能详细地提供,不要造成重复。 – 2011-03-19 01:39:12

回答

2

您的项目中可以有多个.cpp和.cu文件。除非你想让你的.cu文件包含只有设备代码,否则应该相当容易。

对于您的.cu文件,您可以指定一个头文件,其中包含主函数。然后,将该头文件包含在其他.cu或.cpp文件中。链接器将完成其余的工作。这与在项目中使用多个纯C++ .cpp文件没什么两样。

我假设你已经有Visual Studio的CUDA规则文件。

+0

谢谢。我为VS2008规则文件。 – Sneha 2011-03-18 12:22:14

4

将程序从直接C(++)转换为CUDA是一项不平凡的任务。据我所知,可以在CUDA中使用类似C++的东西(尤其是CUDA 4.0),但我认为只从C东西(即结构体,指针,基本数据类型)开始更容易。

首先阅读CUDA programming guide并检查CUDA SDK或available here附带的示例。我个人发现矢量添加样本颇具启发性。它可以发现over here

我不能告诉您如何为您的特定程序编写您的global s和shared s,但在阅读介绍性材料后,您至少会对如何去做模糊的想法。

问题是,(据我所知)不可能告诉将纯C(++)转换为适合CUDA的代码的通用方法。但是这里有一些关于你的角落石头:

  • CUDA的核心思想:循环可以转换成在GPU上并行执行多次的不同线程。
  • 因此,单次迭代最优地独立于其他迭代。
  • 为了获得最佳执行效果,线程的单个执行分支应该(几乎)相同,即单线程应该几乎相同。
+3

我可以向你保证,从一开始就使用C++ CUDA库Thrust更容易,而不仅仅依赖于C特性。 – 2011-03-18 13:34:49

+0

对于使用推力的建议+1。如果你的问题映射到它提供的容器和算法,这是一个更快捷的入门方法。我会从底层的CUDA中抽象出来,它既好(你更高效),也更坏(如果你想学习/理解它) – 2011-03-18 19:03:14

6

以下是开始的好地方。 CUDA by Example是一个很好的教程,它可以帮助您快速启动和运行。编程大规模并行处理器包含更多背景,例如关于GPU架构历史的章节,并且通常更深入。

CUDA by Example: An Introduction to General-Purpose GPU Programming

Programming Massively Parallel Processors: A Hands-on Approach

这些都谈CUDA 3.x的,所以你会想看看CUDA 4.x版在某些时候的新功能。

Thrust绝对值得一看,如果你的问题映射到它(见上面的评论)。它是一个类似STL的容器,迭代器和算法库,它们在CUDA之上实现了数据并行算法。

这里是如何开始使用CUDA和Visual C++ 2010的两篇教程:

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

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

还有对NVIDIA论坛一个帖子:

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

非常一般地询问如何开始...在堆栈溢出通用y不是最好的方法。通常,你会得到的最佳答案是“去看书或手册”。在这里提出具体的问题要好得多。请不要创建重复的问题,这是没有帮助的。

+0

事实上,开始寻找简单的代码如:http:// code。 google.com/p/cuda-grayscale/ – karlphillip 2011-03-18 20:09:19