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



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

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

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

如果答案是线性代数更有效:线性代数如何更有效,以及如何利用线性代数计算或近似任意非线性函数(如果需要特异性,假设函数是非线性多项式)?

gpu几乎无处不在。你的观察与gpu或编程无关,它是关于这个主题的书籍和文章。

以下是你经常看到线性代数例子的原因。

  1. 线性代数相对简单,很容易解释大规模并行是如何帮助的。

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

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

当需要执行的计算可以并行化时,gpu是有用的,也就是说,它们可以通过"除法并行"来执行。方法,将问题分成子问题,分别求解每个子问题,然后将它们组合成原问题的解。

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

最新更新