由于Windows7可能将于明年10月发布(以及Windows11),等待Windows11的显式GPGPU功能是否值得,这意味着它将是跨平台的(ATI/Nvidia,而不是DirectX /Linux/Mac/诸如此类);或者我现在应该创建一个DirectX应用程序吗?
发布于 2008-10-23 08:36:59
根据我的经验,从通用处理器编程到GPGPU编程的主要飞跃是概念上的飞跃。这里的关键是数据并行代码。
即使在CPU上的多线程环境中,每个线程都在低级别上做自己的事情,线程之间的同步是相对罕见的。要使用GPGPU的功能,您需要运行数千个线程,这些线程在逻辑上对不同的数据运行相同的指令,几乎完全同步。
与了解数据并行范例相比,学习CUDA语法相对较快,因此,如果您打算为GPGPU编程做好准备,现在就开始CUDA将是非常值得的一步。
发布于 2008-10-22 10:58:56
从学习的角度来看,我认为现在开始使用CUDA会让你受益,因为它会对你在数据并行方面的思考有很大帮助,而这正是GPU擅长的。然后,当你转向DirectX 11时,你就有了一个很好的基础来使用它,但这取决于你有多少时间(即你是否有时间试验只是为了学习体验)。
或者,mac的人们正在推动OpenCL (开放计算语言)成为通用的解决方案,尽管在这一点上还知之甚少。这是另一种你可以等待和检验的技术。
微软PDC会议将于本月晚些时候举行,也许他们会在DX11上公布一些有用的信息,帮助你做出决定。
我的一般建议是,我认为现在有很多东西需要学习,这些东西你以后(用DX11或OpenCL)就能用到,但你必须问问自己,你是否愿意学习一些可能不会在长期内成功的技术。无论如何,这些只是我的想法,我还没有大量的CUDA经验。
在一个高度推测的笔记中,我的直觉是像CUDA这样的API不会存在很长时间,DirectX和/或OpenCL是唯一有前途的解决方案(除非他们真的搞砸了自己的实现,我对此表示怀疑)。
发布于 2008-11-25 21:03:42
如果你想要学习经验,那就去做吧!
另一种选择是AMD/ATI的stream SDK,您可以在此处下载:http://ati.amd.com/technology/streamcomputing/sdkdwnld.html
nVidia的Cuda和ATI的CAL在功能上大致相同。Cuda仅适用于nVidia gpus,而CAL仅适用于ATI gpus。
最终,将会有很好的跨平台开发工具,但现在这是一个巨大的空白。DirectX 11计算着色器和OpenCL将角逐成为首选工具,但这两个工具都还不可用。
如果你想构建一些“真正的”应用程序,而不只是一个一次性的学习体验,和你想让它跨平台工作,有一些替代方案:例如布鲁克。此外,人们几年来一直在使用DirectX和OpenGL (而不是OpenCL)进行gpgpu工作,而不是等待显式的GPGPU功能。转到gpgpu.org获取指针
https://stackoverflow.com/questions/225016
复制相似问题