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

时间:2011-03-18 06:14:24

标签: cuda

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

3 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:4)

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

首先阅读CUDA programming guide并查看CUDA SDK或available here附带的示例。我个人发现载体添加样品非常有启发性。它可以找到over here

我无法告诉您如何为您的特定节目撰写globalshared s,但在阅读介绍材料后,您至少会对如何操作有一个模糊的概念。

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

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

答案 2 :(得分:2)

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

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

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