Performance 代码优化的差异对GPU和CPU之间的性能差异有多大影响?

Performance 代码优化的差异对GPU和CPU之间的性能差异有多大影响?,performance,cuda,gpu,cpu,Performance,Cuda,Gpu,Cpu,在我阅读有关CUDA编程的教程时,涉及到很多优化(如循环展开、预取、平铺、指令混合)和调优技术(动态分区、线程粒度等)。调优和优化的效果可以将GPU的计算性能提高10倍以上,正如Kirk和Hwu在《大规模并行处理器编程》一书中所述。对于那些试图说明GPU比CPU快的人来说,他们可能会在不优化CPU代码的情况下大量优化GPU代码。代码优化的差异对GPU和CPU之间的性能差异有多大影响?未优化的CPU代码和优化的GPU代码之间的差异几乎可以任意大,但在最近的过去,1000倍的报告并不少见 您可能会发

在我阅读有关CUDA编程的教程时,涉及到很多优化(如循环展开、预取、平铺、指令混合)和调优技术(动态分区、线程粒度等)。调优和优化的效果可以将GPU的计算性能提高10倍以上,正如Kirk和Hwu在《大规模并行处理器编程》一书中所述。对于那些试图说明GPU比CPU快的人来说,他们可能会在不优化CPU代码的情况下大量优化GPU代码。代码优化的差异对GPU和CPU之间的性能差异有多大影响?

未优化的CPU代码和优化的GPU代码之间的差异几乎可以任意大,但在最近的过去,1000倍的报告并不少见

您可能会发现“揭开100xGPU与CPU之谜:CPU和GPU上吞吐量计算的评估”()是一个相关的阅读

NVIDIA论坛也讨论了这个话题:

我写了几篇文章比较CPU和GPU的实现(,)。当我介绍这项工作时,我会引导观众了解相关算法的简单但准确的性能模型,该模型为GPU的加速建立了正确的预期


任何CPU与GPU的比较都必须包括对两种处理器类型之间的算法和实现差异的完整描述,并将观察到的相对性能与某种形式的性能模型进行比较,以确保可靠性。

你真的认为一篇有十几位共同作者的论文,他们都在英特尔工作,是否会对报告的GPU加速进行平衡的评论?根据我的经验,CUDA与优化的CPU代码相比具有优势,后者必须是多线程的,并充分利用SIMD指令集,才能接近芯片的理论最大性能。SIMD指令只能通过现在才成为主流的内部函数或矢量化编译器技术来访问。是的,我认为英特尔的作者在这个问题上可能会遭到反对。首先,他们的结论“我们表明CPU和GPU在性能上比之前报告的数量级差异更接近(2.5倍)”,这与在性能比较中彻底优化CPU代码和GPU代码的其他人的结论是一致的。其次,如果英特尔的作者写了一篇关于竞争对手硬件的有偏见或不正确的论文,由于它将面临的审查,它几乎会立即被披露,并可能导致美国司法部或联邦贸易委员会的调查。在充分披露中,我现在与该论文的许多作者合作,但我在为英特尔工作之前就一直引用该论文。ISCA是竞争最激烈的会议之一,这篇论文肯定会受到评论家们的额外审查,因为你对它持怀疑态度。公平地说,作为CUDA的原始开发人员之一,我是CUDA的支持者,就像那篇论文的合著者是CPU的支持者一样。但是你引用的论文没有提到为生成报告的性能结果而投入的工程努力。缓存阻塞是本文引用的一种关键优化策略,它使得代码更难编写、调试和维护。有关在与本文相同的时间框架内(约4年前!)编写的更客观的分析,请参阅一旦适当优化,数据并行工作负载上的性能差异将归结为硬件和/或指令支持。受益于GPU纹理硬件或特殊功能单元(快速单精度rcp/rsqrt/sin/cos)的工作负载将趋向于在GPU上运行更快和/或更易于开发。受益于SSE2/AVX2风格SIMD integer(例如,图像处理中的3x3中值)的工作负载在CPU上的运行速度会更快。数据交换带来的开销超过加速带来的好处的任何工作负载都会留在CPU上。请记住,部分优化旨在减轻CPU传统上更擅长的地方(分支预测、无序执行、硬件预取等)。