我一直在尝试将 GPU 作为我项目的一部分。我研究过 CUDA 和 OpenCL,但缺乏向您展示如何将它们引入项目的信息令人震惊。甚至他们专门的论坛组也死了。所以现在,我正在研究 DirectCompute。
据我所知,它只是一种使用 HLSL 的新型着色器文件。我的问题是,我的程序(除了 DirectX 10 / 11 之外)是否需要更改其结构?
我的意思是,这仅仅是创建 CS 文件的情况,像我对任何其他着色器一样在项目中进行设置,然后观看魔术发生吗?
任何有关这方面的信息将不胜感激。
我一直在尝试将 GPU 作为我项目的一部分。我研究过 CUDA 和 OpenCL,但缺乏向您展示如何将它们引入项目的信息令人震惊。甚至他们专门的论坛组也死了。所以现在,我正在研究 DirectCompute。
据我所知,它只是一种使用 HLSL 的新型着色器文件。我的问题是,我的程序(除了 DirectX 10 / 11 之外)是否需要更改其结构?
我的意思是,这仅仅是创建 CS 文件的情况,像我对任何其他着色器一样在项目中进行设置,然后观看魔术发生吗?
任何有关这方面的信息将不胜感激。
是的,CS 适合通常的 DirectX 编程结构。它的工作方式与 CUDA/OpenCL 类似。这是一个很好的简单示例:
http://openvidia.sourceforge.net/index.php/DirectCompute
如果您的项目不涉及图形,我个人建议使用 CUDA/OpenCL 而不是使用 DirectCompute 路线。我认为 CUDA/OpenCL 更适合通用计算。查找文档可能有点困难,但这些是 GPU 编程的主要方面:
在 CPU 上设置数据以传递给 GPU。
了解需要在 GPU 上启动多少扭曲/线程,线程可能需要如何通信等。
在 GPU 上计算,在 CPU 上读回数据
另一种选择是 C++ AMP - 请点击此处的链接以获取更多信息,并随时发布问题:http: //blogs.msdn.com/b/nativeconcurrency/archive/2011/09/13/c-amp -in-a-nutshell.aspx