3

几天前我开始研究 GPGPU 并成功实现了具有良好性能的 cholesky 分解,我参加了一个关于高性能计算的会议,有人说“GPGPU 是一个黑客”。

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

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

4

6 回答 6

14

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

“您将问题转换为矩阵”这一点根本不合理。无论您通过编写代码解决什么任务,您都会选择合理的数据结构。在 GPU 矩阵的情况下,可能是最合理的数据结构,这不是黑客攻击,而是使用它们的自然选择。

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

于 2009-09-09T06:43:50.287 回答
3

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

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

于 2009-09-10T08:35:46.113 回答
2

显然,只有说这句话的人才能确定他为什么这么说,但是,这是我的看法:

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

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

于 2009-09-09T19:18:24.157 回答
2

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

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

于 2009-09-09T19:28:03.373 回答
2

GPGPU 可以追溯到数学协处理器的时代。hack 是解决冗长问题的捷径。GPGPU 是一种黑客攻击,就像 IPV4 之上的 NAT 是一种黑客攻击一样。计算问题就像网络一样随着我们尝试做更多事情而变得越来越大,GPGPU 是一个有用的临时解决方案,无论它是留在核心 CPU 芯片之外并具有单独的古怪 API,还是通过 API 被吸入 CPU 或制造取决于路径发现者。

于 2009-09-22T05:47:39.177 回答
1

我想他的意思是使用 GPGPU 会迫使您重新构建您的实现,以便它适合硬件,而不是问题域。优雅的实现应该适合后者。

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

于 2009-09-09T06:55:54.083 回答