如何使用我现有的.cpp代码与cuda

我用c ++编写代码,想和cuda一起使用。任何人都可以帮帮我吗? 我应该提供我的代码吗? 实际上我尝试这样做,但我需要一些启动代码来继续我的代码。我知道如何为Windows(视觉工作室)做简单的方形程序(使用cuda和c ++)。是否足以为我的程序做事情?

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

CUDA示例:通用GPU编程简介

大规模并行处理器编程:实践方法

这些都讨论了CUDA 3.x,因此您需要在某些时候查看CUDA 4.x中的新function。

如果您的问题很好地映射到它上面,那么推力绝对值得一看(参见上面的评论)。 它是一个类似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论坛上还有一篇post:

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

问我非常一般如何开始…在Stack Overflow上通常不是最好的方法。 通常,您将获得的最佳回复是“去读一本书或手册”。 在这里提出具体问题要好得多。 请不要创建重复的问题,这没有用。

将程序从直接C(++)转换为CUDA是一项非常重要的任务。 据我所知,可以在CUDA中使用类似C ++的东西(特别是宣布的CUDA 4.0),但我认为只从C开始(即结构,指针,基本数据类型)开始更容易。

首先阅读CUDA编程指南,并查看CUDA SDK附带的示例或此处提供的示例。 我个人发现载体添加样品非常有启发性。 它可以在这里找到。

我不能告诉你如何为你的特定程序编写你的globalshared ,但在阅读介绍材料之后,你至少会对如何做一个模糊的想法。

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

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

您可以在项目中包含多个.cpp和.cu文件。 除非您希望.cu文件包含设备代码,否则应该相当容易。

对于.cu文件,您可以指定一个头文件,其中包含主机function。 然后,将该头文件包含在其他.cu或.cpp文件中。 链接器将完成剩下的工作。 与在项目中使用多个普通C ++ .cpp文件没什么不同。

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