我想知道什么是帮助您进行GPGPU开发的关键因素,当然还有什么是您认为不可接受的限制因素。
让我想起来:
您的看法是什么?
答案 0 :(得分:4)
你必须要小心你如何解释蒂姆斯威尼在Ars采访中的陈述。他说有两个独立的平台(CPU和GPU),一个适合单线程性能,一个适合面向吞吐量的计算,很快就会成为过去,因为我们的应用程序和硬件会相互增长。 / p>
GPU源于CPU的技术限制,这使得可以说是更自然的算法,如光线跟踪和光子映射,在合理的分辨率和帧率下都可以解除。 GPU出现了一个截然不同且限制性很强的编程模型,但对于那些精心编码到该模型的应用程序而言,可能会提高2或3个数量级的吞吐量。这两种机器模型具有(并且仍然)基本上不同的编码风格,语言(OpenGL,DirectX,着色器语言与传统桌面语言)和工作流程。这使得代码重用,甚至算法/编程技能的重用变得非常困难,并且任何想要在这种限制性编程模型中使用密集并行计算基板的开发人员都会陷入困境。
最后,我们已经到了这样一个点,即这个密集的计算基板可以类似地编程为CPU。虽然这些大规模并行加速器的一个“核心”之间仍然存在相当大的性能差异(尽管在G80中执行的线程,不是传统意义上的核心)和现代x86桌面核心,有两个因素推动了这两个平台的融合:
所以,蒂姆所说的是,2个不同的平台会收敛,比例如OpenCl提供的更大。采访中的一个显着引用:
TS:不,我确切地知道你在哪里 标题。在下一个控制台中 一代你可以有游戏机 由单一的非商品组成 芯片。它可能是一般的处理器, 它是否从过去的CPU发展而来 架构或GPU架构,以及 它可能会运行 一切 - 图形,人工智能, 声音,以及所有这些系统 完全同质的方式。那是一个 非常有趣的前景,因为它 可以大大简化 工具集和创建过程 软件现在,在运输过程中 虚幻3,我们必须使用多个 编程语言。我们用一个 用于写入像素的编程语言 着色器,另一个用于编写游戏玩法 代码,然后在我们使用的PlayStation 3上 还有另一个编写代码的编译器 在Cell处理器上运行。所以 PlayStation 3最终成为了一个 特别挑战,因为那里 你有三个完全不同的 来自不同供应商的处理器 不同的指令集和 不同的编译器和不同的 表演技巧。所以,很多 复杂性是不必要的 使负载平衡更加困难。
例如,当你有三个 不同的芯片与不同 编程能力,你经常 有两个芯片闲置着 大部分时间,而另一方面 最大化了。但如果是架构 是完全统一的,那么你可以 在芯片的任何部分上运行任何任务 在任何时候,并获得最好的 性能权衡这种方式。
答案 1 :(得分:2)
我发现这篇文章很有趣,因为随着CPU的速度和核心数量的不断增加,GPU不会如此必要。
http://arstechnica.com/articles/paedia/gpu-sweeney-interview.ars
答案 2 :(得分:0)
曾经对它们的并行体系结构以及大部分空闲的额外芯片感兴趣,因此可以用于通用编程任务的一面 -
请参阅 - http://en.wikipedia.org/wiki/CUDA
但面对Lou的答案,它可能不太相关。
答案 3 :(得分:0)
关键优势是gigaflops - 原始力量。缺点包括有限的非正交指令集和编程模型。
这是一份调查报告: http://graphics.idav.ucdavis.edu/publications/print_pub?pub_id=907
维基百科文章是一个非常好的开始。
Lou Franco指出Tim Sweeney的采访;这是他给出的演讲的幻灯片,其中有更多细节: http://www.scribd.com/doc/5687/The-Next-Mainstream-Programming-Language-A-Game-Developers-Perspective-by-Tim-Sweeney
也可以嗅到: http://gpgpu.org