2009-09-09 136 views
3

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

我仍然困惑这是什么意思,他们为什么说它破解。有人说这是黑客攻击,因为你正在将你的问题转化为矩阵并对其进行操作。但是我仍然很困惑,人们是否认为这是一种黑客行为,或者如果是的话,为什么?

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

+0

只是好奇,会议在哪里? – 2009-09-09 19:18:50

回答

14

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

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

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

1

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

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

+0

不应该有一个真正优雅的实现适合问题域和平台吗? – sharptooth 2009-09-09 06:58:39

+0

我认为合适的平台是必须的(如果有的话),而不是目标。 – 2009-09-10 06:50:11

2

显然,只有谁说,可以肯定地说,为什么他说的话,而是人,这是我的看法:

  • “黑客”不是一件坏事。
  • 它迫使人们学习新的编程语言和概念。对于试图模拟天气或蛋白质折叠或药物反应的人来说,这是一个不受欢迎的烦恼。他们并非真的想在第一时间学习FORTRAN(或其他),现在要学会另一个编程系统。
  • 编程工具是不是很成熟了。
  • 硬件并不像CPU那样可靠,所以所有的计算都必须进行两次,以确保你有正确的答案。其中一个原因是,GPU还没有提供纠错内存,所以如果你想用超过数千个处理器构建一台超级计算机,宇宙射线在你的数字中翻转的概率就会变得更加确定。

至于注释“要转换您的问题到矩阵,它做业务”,我认为这显示了很多无知的。几乎所有的高性能计算都适合这种描述!

2

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

显然,这就是我对其采取和因人而异

3

在GPU,拥有高效的内存访问是极为重要的实现最佳性能。这通常涉及重组或甚至选择全新的算法和数据结构。这就是为什么GPU编程可以被视为黑客的原因。其次,适应现有算法在GPU上运行本身并不是科学。某些GPU算法相关论文的科学贡献相对较低,导致GPU编程的负面感受严格为“工程”。

2

GPGPU可以回溯到数学协处理器的日子。黑客是解决漫长问题的捷径。 GPGPU是一种黑客,就像IPV4之上的NAT一样。计算问题就像网络越来越大,我们试图做更多的事情,GPGPU是一个有用的临时解决方案,无论它是否位于核心CPU芯片之外,并且具有单独的恶意API或者通过API被吸入CPU或制造符合路径发现者。