我几天前开始在GPGPU上工作并成功实现了具有良好性能的胆甾醇分解,我参加了高性能计算会议,有些人说“GPGPU是一个黑客”。
我仍然感到困惑,这是什么意思,为什么他们说它是黑客。有人说这是黑客攻击,因为你正在将你的问题转换成矩阵并对其进行操作。但我仍然感到困惑,人们认为这是一个黑客,或者如果是,那么为什么?
任何人都可以帮助我,他们为什么称它为黑客而我发现它没有任何问题。
答案 0 :(得分:14)
这种观点的一个可能原因是GPU最初并非用于通用计算。对GPU进行编程也不那么传统,也不那么硬核,因此更容易被视为黑客。
“将问题转换为矩阵”这一点根本不合理。无论您使用编写代码解决了什么任务,都可以选择合理的数据结如果GPU矩阵可能是最合理的数据结构,它不是黑客,而只是使用它们的自然选择。
但是我认为GPGPU变得普及是时间问题。人们只需要习惯这个想法。毕竟谁关心计算机的哪个单元运行程序?
答案 1 :(得分:3)
在GPU上,拥有高效的内存访问对于实现最佳性能至关重要。这通常涉及重组甚至选择全新的算法和数据结构。这就是为什么GPU编程可以被视为黑客的原因。
其次,调整现有算法以在GPU上运行本身并不属于科学。一些GPU算法相关论文的科学贡献相对较低,导致人们对GPU编程的负面看法是严格的“工程”。
答案 2 :(得分:2)
显然,只有那个说话的人可以肯定地说出他说的原因,但是,这是我的看法:
至于评论“您将问题转换为矩阵并对其进行操作”,我认为这显示了很多无知。几乎所有的高性能计算都符合这种描述!
答案 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