GPU编程?

kil*_*ode 8 gcc cuda gpu gpu-programming

我是GPU编程世界的新手,我曾尝试阅读维基百科和谷歌搜索,但我还有几个问题:

  • 我下载了一些GPU示例,对于CUDA,有一些.cu文件和一些CPP文件,但所有代码都是正常的C/C++代码只是一些奇怪的函数cudaMemcpyToSymbol,其余的是纯c代码.问题是,.cu代码是用nvcc编译然后用gcc链接的吗?或者它是如何编程的?

  • 如果我编写了一些在GPU上运行的东西,它会在所有GPU上运行吗?或只是CUDA?或者有为CUDA编写的方法和为ATI编写的方法以及为两者编写的方法吗?

nul*_*nge 10

回答你的第二个问题:

如果要编写与平台无关的GPGPU代码,OpenCL是(唯一的)方法.

如果你搜索一下,ATIs网站实际上有很多OpenCL资源,他们的示例项目很容易修改成你需要的东西,或者只是为了理解代码.

OpenCL规范和参考页面也是一个非常好的知识来源:http : //www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/ http://www.khronos.org/registry /cl/specs/opencl-1.1.pdf

有很多讨论可以解释一些核心概念,也解释了如何编写我建议的快速代码(这也适用于CUDA).

几乎回答你的第一个问题:在OpenCL中,代码在运行时编译为你正在使用的特定GPU(以保证速度).


Pau*_*l R 5

你可能想在CUDA上做一些背景阅读 - 这不是你可以通过查看一些代码示例来获取的东西.现在亚马逊上有大约3种不同的CUDA书籍,http://developer.nvidia.com上有很多参考资料.

回答你的问题:

  • 是的,.cu文件使用nvcc编译为中间形式(PTX) - 随后在运行时将其转换为特定于GPU的代码

  • 生成的代码将在nVidia GPU的子集上运行,子集的大小取决于您在代码中使用的CUDA功能