Language agnostic GPGPU是黑客吗?

Language agnostic GPGPU是黑客吗?,language-agnostic,gpgpu,gpu,Language Agnostic,Gpgpu,Gpu,几天前,我开始研究GPGPU,并以良好的性能成功地实现了cholesky分解,我参加了一个关于高性能计算的会议,有人说“GPGPU是一个黑客” 我仍然不明白这是什么意思,为什么他们说这是黑客。有人说这是黑客攻击,因为你正在把你的问题转化成一个矩阵并对其进行操作。但我仍然感到困惑的是,人们是否认为这是一种黑客行为?如果是的话,为什么 有人能帮我吗,为什么他们称之为黑客,而我却没有发现任何问题 这种观点的一个可能原因是GPU最初并非用于通用计算。此外,GPU编程也不太传统,更为核心,因此更容易被视为

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

我仍然不明白这是什么意思,为什么他们说这是黑客。有人说这是黑客攻击,因为你正在把你的问题转化成一个矩阵并对其进行操作。但我仍然感到困惑的是,人们是否认为这是一种黑客行为?如果是的话,为什么


有人能帮我吗,为什么他们称之为黑客,而我却没有发现任何问题

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

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


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

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

请注意,“黑客”一词可能有几种不同的含义:

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

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

至于“你正在将你的问题转化为矩阵并对其进行运算”的评论,我认为这表明了你的无知。几乎所有的高性能计算都符合这一描述

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


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


其次,使现有算法在GPU上运行本身并不科学。一些GPU算法相关论文的科学贡献相对较低,这导致了人们对GPU编程的负面看法,认为它是严格意义上的“工程”。GPGPU可以追溯到数学协处理器时代。黑客是解决冗长问题的捷径。GPGPU是一种黑客行为,就像IPV4之上的NAT是一种黑客行为一样。计算问题就像网络变得越来越大一样,当我们尝试做更多的事情时,GPGPU是一个有用的临时解决方案,它是留在核心CPU芯片之外,有独立的古怪API,还是通过API或制造被吸入CPU,这取决于路径查找者。

一个真正优雅的实现不应该同时适合问题域和平台吗?我认为适合平台是必须的(如果有的话),而不是目标。只是好奇,会议在哪里举行?