首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该在GPU上还是在CPU上计算矩阵?

我应该在GPU上还是在CPU上计算矩阵?
EN

Stack Overflow用户
提问于 2013-05-18 10:03:30
回答 2查看 20.5K关注 0票数 52

我应该更喜欢在CPU或GPU上计算矩阵?

假设我有以下矩阵P * V * M,我应该在CPU上计算它们,以便我可以将最终矩阵发送到GPU (Gls1),还是应该将这三个矩阵分别发送到GPU,以便gls1可以计算最终矩阵?

我的意思是,在这种情况下,GLSL必须计算每个顶点的MVP矩阵,所以在CPU上预计算可能会更快。

但是假设GLSL只需要计算一次MVP矩阵,GPU计算最终矩阵的速度会比CPU快吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-18 16:24:06

一般规则:如果可以将其以一致的形式传递给着色器,则始终在CPU上进行预计算;没有例外。着色器一侧的计算仅对在顶点和碎片之间变化的值有意义。在CPU上处理一整批顶点中不变的所有内容都是最有效的。

GPU不是神奇的“无所不能”的机器。在某些任务中,CPU可以轻松超越GPU,即使对于非常大的数据集也是如此。因此,一个非常简单的指导原则是:如果您可以将其移动到CPU,而不需要花费比GPU处理它的总开销更多的CPU时间来进行计算,那么在CPU上进行计算。单个矩阵的计算就是这些任务之一。

票数 79
EN

Stack Overflow用户

发布于 2013-05-18 15:04:33

就像OpenGL的大多数情况一样,这取决于。

在大多数情况下,在CPU上完成单个计算的速度比在GPU上更快。GPU的优势在于它可以并行进行大量的计算。

另一方面,这也取决于你的瓶颈在哪里。如果CPU正在执行大量其他工作,但着色器在功耗最低的目标系统上还不是瓶颈,那么通过将一些矩阵乘法移动到顶点着色器,可以很容易地看到一些性能改进。

通常,应避免在片段着色器中执行也可以在顶点着色器或CPU上完成的任何工作,但除此之外,这取决于具体情况。除非你遇到性能问题,否则只要用对你来说最简单的方法就行了,如果你有性能问题,就两种方法都做,并分析一下性能,看看哪种方法效果更好。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16620013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档