3

Windows 7 可能会在明年 10 月进入 RTM(以及 DirectX 11),是否值得等待 DirectX 11 的显式 GPGPU 功能,这意味着它将是跨平台的(ATI/Nvidia,而不是 Windows/Linux/Mac/Whatever) ; 还是我现在应该创建一个 CUDA 应用程序?

4

4 回答 4

3

根据我的经验,从通用处理器编程到 GPGPU 编程的主要飞跃是概念上的飞跃。这里的关键是数据并行代码。

即使在 CPU 上的多线程环境中,每个线程都在底层做自己的事情,线程之间的同步是比较少见的。要使用 GPGPU 的强大功能,您需要运行数千个线程,这些线程在逻辑上运行相同的指令,处理不同的数据,几乎完全同步。

与了解数据并行范式相比,学习 CUDA 语法相对较快,因此,如果您打算为 GPGPU 编程做好准备,现在开始使用 CUDA 将是一个非常值得的举措。

于 2008-10-23T08:36:58.730 回答
2

从学习的角度来看,我认为您将从现在开始使用 CUDA 中受益,因为它将帮助您思考 GPU 擅长的数据并行性。然后,当/如果您转向 DirectX 11,您就有了使用它的良好基础,但这取决于您可用的时间类型(即,您是否有时间尝试只是为了学习经验)。

或者,mac 人正在推动将 OpenCL(开放计算语言)作为通用解决方案,尽管目前知之甚少。这是您可以等待并检查的另一种技术。

Microsoft PDC 大会在本月晚些时候举行,也许他们会公布一些有关 DX11 的有用信息,以帮助您下​​定决心。

我的一般建议是,我认为现在有很多东西要学,以后可以使用(使用 DX11 或 OpenCL),但是你必须问问自己,你是否愿意学习一些可能无法使用的技术从长远来看。无论如何,这些只是我的想法,我还没有大量使用 CUDA 的经验。

在一个高度推测性的注释中,我的直觉是,像 CUDA 这样的 API 不会长期存在,而 DirectX 和/或 OpenCL 是唯一有前途的解决方案(除非他们真的搞砸了他们的实现,我对此表示怀疑)。

于 2008-10-22T10:58:55.840 回答
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 获取指针

于 2008-11-25T21:03:42.357 回答
1

DirectX 11 Compute Shaders 和 OpenCL 都主要基于 CUDA,因此现在开​​始使用 CUDA 绝对值得。基本上,它们都使用相同的内存模型,并且具有相似的语法,它更接近 CUDA 而不是 Brook+(您将与 Stream SDK 一起使用)。

但是,如果您想要 DX11,则无需等待,只需从 Microsoft 获取2008 年 11 月的 SDK ,它带有 DX11 预览版,您已经可以使用它来编写(至少)简单的计算着色器应用程序。

于 2008-11-25T21:26:45.040 回答