随着Windows 7可能会在明年10月进入RTM(以及带有它的DirectX 11),是否值得等待DirectX 11的显式GPGPU功能,这意味着它将是跨平台的(ATI / Nvidia,而不是Windows / Linux / Mac) /随你);或者我现在应该创建一个CUDA应用程序吗?
答案 0 :(得分:3)
根据我的经验,从通用处理器编程到GPGPU编程的重大突破是概念上的飞跃。这里的关键是数据并行代码。
即使在CPU上的多线程环境中,每个线程都在低级别上执行自己的操作,并且线程之间的同步是相对罕见的。要使用GPGPU的强大功能,您需要在不同的数据上运行数千个逻辑运行相同指令的线程,几乎完全同步。
与了解数据并行范例相比,学习CUDA语法相对较快,因此如果您打算自行编写GPGPU编程,那么从CUDA开始现在是一个非常值得的行动。
答案 1 :(得分:2)
从学习的角度来看,我认为你现在可以从CUDA开始受益,因为它可以帮助你思考数据并行性,这是GPU擅长的。然后当/如果你转向DirectX 11,你有一个很好的基础来使用它,但这取决于你有可用的时间(即如果你有时间尝试只是为了学习经验)。/ p>
或者,mac人们正在推动OpenCL(开放计算语言)成为一般解决方案,尽管此时并不多。这是您可以等待和结账的另一种技术。
微软PDC会议将在本月晚些时候举行,也许他们会在DX11上公布一些有用的信息,以帮助你下定决心。
我的一般建议是,我认为现在有很多东西需要学习,以后可以使用(使用DX11或OpenCL),但是你必须问自己是否愿意学习一些可能不会从长远来看。无论如何,这些只是我的想法,我还没有大量的CUDA经验。
在一个高度投机的说明中,我的直觉是,像CUDA这样的API将无法存活很长时间,并且DirectX和/或OpenCL是唯一具有未来的解决方案(除非他们真的破坏了他们的实现,我怀疑)。
答案 2 :(得分:1)
如果你想要学习经验,那就去吧!
另一个替代方案是AMD / ATI的流SDK,您可以在此处下载:http://ati.amd.com/technology/streamcomputing/sdkdwnld.html
nVidia的Cuda和ATI的CAL在功能上大致相同。 Cuda仅适用于nVidia gpus,CAL仅适用于ATI gpus。
最终,将有很好的跨平台开发工具,但现在这是一个巨大的空白。 DirectX 11计算着色器和OpenCL将争先恐后地作为首选工具,但它们都还没有。
如果你想构建一些“真正的”应用程序,而不仅仅是一次性的学习体验,和你想让它跨平台工作,还有一些选择:例如Brook。此外,人们多年来一直在使用DirectX和OpenGL(不是OpenCL)进行gpgpu工作,而无需等待明确的GPGPU功能。转到gpgpu.org获取指示
答案 3 :(得分:1)
DirectX 11计算着色器和OpenCL主要基于CUDA,所以现在开始使用CUDA绝对值得。基本上,它们都使用相同的内存模型,并且具有类似的语法,它更接近CUDA而不是Brook +(您将使用Stream SDK)。
但是,如果您需要DX11,则无需等待,只需从Microsoft获取带有DX11预览的November 2008 SDK,您可以使用它来编写(至少)简单的计算着色器应用程序。