我从computerbase.de 找到了一个基准(http://www.computerbase.de/artikel/grafikkarten/2013/intel-haswell-grafik-fuer-desktop-pcs-im-test/3/德语)其中,在一种情况下,任务(此处为视频转码)由 CPU 完成,在另一种情况下由(集成)GPU 完成:
如何在 Linux 中将任务(例如视频转码)显式分配给 GPU?
答案1
我认为在 GPU 中利用核心的最佳方法是使用OpenCL。这个想法很简单。您编写一个内核(一小段代码,您只能使用基本的 C 代码,而无需使用库)。例如,如果你想过滤一帧,你必须对每个像素进行一些计算,这就是内核代码要做的事情。
然后你必须编译内核,在 GPU 上分配内存并从主内存复制数据。您还必须为结果分配内存。然后创建线程并将内核发送到 GPU 上执行(我认为您也可以同时使用 CPU 和 GPU 内核来执行内核)。因此每个线程对每个像素执行一次内核。将结果复制回主内存并继续使用 CPU 后。
这是我可以解释的最简单的方法,但是您仍然需要了解一百万个细节,因此您最好开始学习;)您可以从显卡制造商开发人员网站开始。在那里您将找到有关如何开始使用 OpenCL 进行开发的库和教程。