我应该在GPU或CPU上计算矩阵?
computer-vision
5
0

我是否应该在CPU或GPU上计算矩阵?

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

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

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

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

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

在大多数情况下,在CPU上完成一次计算比在GPU上完成计算更快。 GPU的优势在于它可以并行执行大量计算。

另一方面,这也取决于您的瓶颈所在。如果您的CPU正在做很多其他工作,但是着色器在性能最低的目标系统上还不是瓶颈,那么您可以通过将一些矩阵乘法移至顶点着色器来轻松地看到一些性能改进。

通常,您应该避免在片段着色器中进行任何可能在顶点着色器或CPU中完成的工作,但是除此之外,这取决于具体情况。除非遇到性能问题,否则请以最适合您的方式进行操作,如果遇到性能问题,请同时进行两种操作并分析性能以查看哪种效果更好。

收藏
评论

一般规则:如果您可以将它以统一的形式传递给着色器,请始终在CPU上进行预先计算;没有例外。着色器端的计算仅对于在顶点和片段之间变化的值才有意义。在CPU上,最有效地处理了整个顶点中所有不变的事物。

GPU并非魔术师“可以更快地完成所有工作”。在某些任务中,即使对于非常大的数据集,CPU也可以轻松胜过GPU。因此,一个非常简单的准则是:如果您可以将它移到CPU而不花费更多的CPU时间来进行计算,而不是花费GPU处理它的总开销,那么就可以在CPU上进行处理。这些任务包括单个矩阵的计算。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号