我在C++中的高级代码,并希望与cuda一起使用它。任何人都可以帮助我吗?我应该提供我的代码吗?其实我试过这样做,但我需要一些起始代码来继续我的代码。我知道如何为Windows(Visual Studio)做简单的方形程序(使用cuda和C++)。是否足以为我的程序执行这些操作?如何使用我现有的.cpp代码与cuda
回答
您的项目中可以有多个.cpp和.cu文件。除非你想让你的.cu文件包含只有设备代码,否则应该相当容易。
对于您的.cu文件,您可以指定一个头文件,其中包含主函数。然后,将该头文件包含在其他.cu或.cpp文件中。链接器将完成其余的工作。这与在项目中使用多个纯C++ .cpp文件没什么两样。
我假设你已经有Visual Studio的CUDA规则文件。
谢谢。我为VS2008规则文件。 – Sneha 2011-03-18 12:22:14
将程序从直接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上并行执行多次的不同线程。
- 因此,单次迭代最优地独立于其他迭代。
- 为了获得最佳执行效果,线程的单个执行分支应该(几乎)相同,即单线程应该几乎相同。
我可以向你保证,从一开始就使用C++ CUDA库Thrust更容易,而不仅仅依赖于C特性。 – 2011-03-18 13:34:49
对于使用推力的建议+1。如果你的问题映射到它提供的容器和算法,这是一个更快捷的入门方法。我会从底层的CUDA中抽象出来,它既好(你更高效),也更坏(如果你想学习/理解它) – 2011-03-18 19:03:14
以下是开始的好地方。 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不是最好的方法。通常,你会得到的最佳答案是“去看书或手册”。在这里提出具体的问题要好得多。请不要创建重复的问题,这是没有帮助的。
事实上,开始寻找简单的代码如:http:// code。 google.com/p/cuda-grayscale/ – karlphillip 2011-03-18 20:09:19
- 1. 我如何使这个代码cuda(cpu代码到cuda代码)
- 2. 与现有CPP核心代码
- 3. 如何使用cmd编译cpp代码
- 4. 如何在cpp和cuda模块中使用cuda类头文件
- 5. 如何使用CUDA加速C++代码
- 6. CUDA * .cpp文件
- 7. 使用“反应本机”与我们现有的代码
- 8. 我如何使用liquibase与Java代码
- 9. 如何使用任务工厂与我现有的代码在C#中?
- 10. 如何分析的CPP /汇编代码
- 11. 如何在.cpp文件中使用Cuda数据结构
- 12. 如何用C头文件和CUDA代码编译C代码?
- 13. cpp代码错误
- 14. 使用Modulo?编写使用现有代码的代码
- 15. 我如何使用回声与我的代码?
- 16. 在cuda主机代码中使用openMP?
- 17. 不能在我自己的代码中使用带有CUDA加速的CHOLMOD
- 18. 更高效的CPP代码
- 19. 如何使用CPP
- 20. 如何使我的代码使用python
- 21. 如何jQuery的HTML代码中添加与现有的CSS仍然使用
- 22. cuda - nvcc如何编译__host__代码?
- 23. 如何阅读cuda二进制代码
- 24. 如何使用CUDA在GPU上运行MATLAB代码?
- 25. 如何使用visual studio 2008调试到CUDA内核代码?
- 26. 调试CUDA代码
- 27. OpenCV的 - 如何转换一段cpp的代码用C
- 28. 如何使用此代码实现globalToLocal?
- 29. 如何添加其他如果我现有的PHP代码?
- 30. TypeScript可以与现有的JavaScript代码一起使用吗?
你到底想要什么?编辑你的代码,以便用cuda处理一些计算结果? – 2011-03-18 06:34:44
请在将来考虑大写,空格,语法,使用完整的单词代替文本消息样式缩写,并在提供附加信息后编辑问题的前言。如果你不能帮助你自己,我们无法帮助你。当你在SO上发布信息时,你正在同时与成千上万的同侪交谈,请下次考虑。我们大多数人更喜欢帮助那些为他们的问题付出努力的人。 – 2011-03-18 12:58:32
+1请提出具体问题,尽可能详细地提供,不要造成重复。 – 2011-03-19 01:39:12