为什么 GPU 只用于线性代数而不用于非线性计算?

Why are GPUs only used for linear algebra as opposed to nonlinear calculations?

我一直听说 GPU 很有用,因为它们在线性代数方面速度很快。

我明白了如何利用 GPU 来快速执行线性计算,我明白了为什么这很有用,但我不明白为什么这些计算需要是线性的。

为什么我们不能让每个 GPU 核心接收 4 个数字 a、b、c、d 并计算 a^b + c^d 或任何其他非线性函数?

If the answer is that linear algebra is more efficient: 线性代数如何更有效以及如何利用线性代数计算或逼近任意非线性函数(如果需要特定性,假设函数是非线性多项式)?

当 GPU 需要执行的计算可以并行化时,GPU 很有用,即,它们可以使用“分而治之”的方法执行,将问题划分为子问题并分别解决每个子问题,然后将它们组合成原始问题的解决方案。

在线性代数中大量使用矩阵乘法,这是最经典的可以通过并行化解决的问题,这就是为什么GPU在需要它的实际应用中如此高效的原因,例如深度学习。

GPU 用于几乎所有事情。您的观察与 GPU 或编程无关,而是关于该主题的书籍和文章。

以下是您经常看到有关线性代数示例的原因。

  1. 线性代数相对简单,易于解释大规模并行性的帮助。

  2. 线性代数有很多用途。对于一些实际应用,仅加速线性代数已经带来巨大的性能提升,尽管所涉及的矩阵是使用标量代码在 CPU 上组装的。

  3. 线性代数非常简单,可以在 cuBLAS 这样的库中抽象出来。任意非线性函数往往需要自定义计算内核,这比仅使用别人编写的库更难。