2015-10-17 72 views
2

让我们假设游戏开发者开发一个应用程序。因此,在编写应用程序时,开发人员会编写一些代码段,这些代码段应该转到CPU,还有一些代码段应该转到GPU或由调度程序在运行时决定?CPU和面向GPU的代码有什么区别?

+0

阅读标签说明前加入!这与嵌入式无关。正如它给出的是语言不可知的。 – Olaf

回答

4

CPU和GPU是不同的,经过优化可以做不同的事情。图形处理器不那么聪明,但大量更多的并行和执行大量的专业处理,而不是传统的CPU更一般的处理。

GPU必须由CPU分配任务。没有调度程序运行时间的可能性,因为它们不同,可以有不同的指令。

+0

对于nVidia的PhysX,CPU和GPU之间的选择可以由用户通过控制面板进行选择,包括自动设置,因此对于某些使用该设置的程序,可以在运行时进行选择。 – rcgldr

+0

这很有趣......没有理由说明为什么GPU上的任何事情都不能在CPU上完成...但是,尽管我对这种功能一无所知,但我不得不假设控制面板是什么做的是翻转一下,这样某些操作/调用通过两种不同的实现来实现,一种使用CPU,另一种使用GPU,但要清楚,但这些实际上是两个基本不同的代码位,而不是相同的代码重新安排。 – Michael

+0

我唯一使用PhysX的游戏总是选择CPU,或者至少这是游戏设置中显示的内容(控制面板也有一个选项可以将当前设置显示为叠加层),所以我没有多少游戏实际上使用这个选项,但它在控制面板中。 – rcgldr

3

既然你已经标记了C,那么让我告诉你,你用C语言编写的任何程序,使用GCC或任何编译器进行编译都是针对你的CPU。

如果您编写代码并使用常规编译器进行编译,但它不针对GPU执行,代码将始终在CPU上执行。

您的图形库调用是由您的CPU“执行”,但面向图形的调用(例如,绘制东西)由GPU操作。

此外,回答这取决于您正在执行的语言和程序。 CUDA和OpenCL或OpenGL计算着色器在GPU上执行。

所以基本上,你的代码的所有程序执行,即在代码中设置编译器环境以渲染调用是由CPU完成的。

2

CPU和GPU非常不同,并且具有不同的编程模型和编程语言。您可以在GPU上使用C,并在GPU上使用OpenCL(或CUDA,如果您将自己限制为Nvidia产品)。

您通常无法在GPU上运行任意C代码。

GPU的编码是痛苦的,你必须调整代码到特定的硬件。

也见之类的工具PIPS4u & OpenACC