GPGPU是黑客吗?

时间:2009-09-09 06:32:47

标签: language-agnostic gpu gpgpu gpu-programming

我几天前开始在GPGPU上工作并成功实现了具有良好性能的胆甾醇分解,我参加了高性能计算会议,有些人说“GPGPU是一个黑客”。

我仍然感到困惑,这是什么意思,为什么他们说它是黑客。有人说这是黑客攻击,因为你正在将你的问题转换成矩阵并对其进行操作。但我仍然感到困惑,人们认为这是一个黑客,或者如果是,那么为什么?

任何人都可以帮助我,他们为什么称它为黑客而我发现它没有任何问题。

6 个答案:

答案 0 :(得分:14)

这种观点的一个可能原因是GPU最初并非用于通用计算。对GPU进行编程也不那么传统,也不那么硬核,因此更容易被视为黑客。

“将问题转换为矩阵”这一点根本不合理。无论您使用编写代码解决了什么任务,都可以选择合理的数据结如果GPU矩阵可能是最合理的数据结构,它不是黑客,而只是使用它们的自然选择。

但是我认为GPGPU变得普及是时间问题。人们只需要习惯这个想法。毕竟谁关心计算机的哪个单元运行程序?

答案 1 :(得分:3)

在GPU上,拥有高效的内存访问对于实现最佳性能至关重要。这通常涉及重组甚至选择全新的算法和数据结构。这就是为什么GPU编程可以被视为黑客的原因。

其次,调整现有算法以在GPU上运行本身并不属于科学。一些GPU算法相关论文的科学贡献相对较低,导致人们对GPU编程的负面看法是严格的“工程”。

答案 2 :(得分:2)

显然,只有那个说话的人可以肯定地说出他说的原因,但是,这是我的看法:

  • “黑客”并不是件坏事。
  • 它迫使人们学习新的编程语言和概念。对于那些只是试图模拟天气或蛋白质折叠或药物反应的人来说,这是一个不受欢迎的烦恼。他们首先并不想学习FORTRAN(或其他任何东西),现在必须学习另一个编程系统。
  • 编程工具 NOT 非常成熟。
  • 硬件不如CPU那么可靠,所以所有的计算都要做两次,以确保你得到正确的答案。其中一个原因是GPU还没有配备纠错内存,因此如果您正在尝试构建具有数千个处理器的超级计算机,那么宇宙射线在您的数字中翻转的可能性就接近于确定性。

至于评论“您将问题转换为矩阵并对其进行操作”,我认为这显示了很多无知。几乎所有的高性能计算都符合这种描述!

答案 3 :(得分:2)

过去几年GPGPU的主要问题之一,可能是接下来的几年,对于任意任务进行编程并不容易。直到DX10,GPU之间没有整数支持,分支仍然很差。在这种情况下,为了获得最大的收益,您必须以非常笨拙的方式编写代码,以从GPU中提取各种效率增益。这是因为您在仍专用于处理多边形和纹理的硬件上运行,而不是抽象并行任务。

显然,这就是我对它的看法和YMMV

答案 4 :(得分:2)

GPGPU可以追溯到数学协处理器的时代。黑客是解决冗长问题的捷径。 GPGPU是一个黑客,就像在IPV4之上的NAT是一个黑客。随着我们尝试做更多的事情,计算问题就像网络一样越来越大,GPGPU是一个有用的临时解决方案,无论是在核心CPU芯片之外还是具有独立的小巧的API,或者通过API或制造商被吸引到CPU中发现者。

答案 5 :(得分:1)

我想他的意思是说使用GPGPU迫使你重构你的实现,以便它适合硬件,而不是问题领域。优雅的实施应适合后者。

请注意,“hack”一词可能有几种不同的含义: http://www.urbandictionary.com/define.php?term=hack