我试图了解 CPU 和 GPU 的相对优势。
引用流行的观点,“核心越多越好”,按照这个逻辑,GPU 应该总是比 CPU 表现更好,而且在加密货币挖掘和量化金融方面确实如此,因为我刚刚编写了一个快速程序,可以在极短的时间内用我的 GPU 与我的 CPU 计算隐含波动率。
但当我调查这个话题时,我遇到了这样的问答这。
如果这个问题可能太宽泛,我深感抱歉,但我只接受过基本的电气工程培训,并且想知道是否有一个万能的解释,说明为什么在诸如链接的问答中描述的正常任务中,CPU 比 GPU 更受青睐:“分支预测、流水线、超级缩放器等”。
(另外,这句话的意思是什么:“此外,所需的算法不必处理分支,因为几乎任何所需的分支都可以通过将系数设置为零或一来实现。”)
答案1
GPU 的架构旨在处理矢量算法和程序,例如图形方面的数学计算,它不会进行大量的分支和跳跃,而更关心数据在处理器中的流动。因此,它在这方面更加精简,而通用 CPU 具有不同的架构,可以更好地处理跳跃和分支,但数据流会受到影响。
如果您查看这两种 CPU 类型的布局,就会发现它们的不同之处。
(我知道这个答案有点蹩脚,但我刚刚醒来,距离我做处理器设计已经过去好几年了。)
答案2
我认为,您链接的问题中的第二个答案(不是被接受的答案,而是获得最多票数的答案)写得很好并且足够详细。
如果你愿意更深入地理解这里提到的概念,我认为你最好对每个概念都提出单独的问题(并解释你到底不理解什么)。原因是这些概念既是架构性的又是微架构性的,并且它们在任何可接受的级别上的描述都需要一个单独的问题。
打个比方,你可以把 CPU 想象成一把瑞士军刀 - 它可以做很多事情,在任何情况下都会派上用场。但是,如果你知道你要为 300 人切沙拉 - 任何一把菜刀的表现都会胜过最精致的瑞士军刀。GPU 就是一把菜刀。
CPU 更适合“普通”用户执行的各种任务。但是,如果用户知道该任务需要大量数学计算,则应考虑使用 GPU。如果该任务除了数学计算之外还可以并行执行 - 那么该任务可能被标记为“GPU 定制”。