常见的编程任务如何转换为GPU?

时间:2008-09-04 21:09:31

标签: cuda gpgpu

我最近开始研究一个项目,以确定如何最好地利用现代图形卡中可用的处理能力进行一般编程。看来,现场通用GPU编程(GPGPU)对科学应用有很大的偏见,并且有很多繁重的数学,因为这与GPU计算模型非常吻合。这一切都很好,但是大多数人并没有把所有时间花在运行模拟软件之类的东西上,所以我们认为可以为大众轻松构建支持GPU的软件创建一个共同的基础。

这导致了我想提出的问题;程序执行的最常见工作类型是什么?并不是要求工作能够很好地转换为GPU编程,因为我们愿意接受适度的性能改进(更好的不是什么,对吧?)。

我们已经考虑过几个主题:

  • 数据管理 - 从数据库中处理大量数据 否则。
  • 电子表格类型程序(与上述有些相关)。
  • GUI编程(尽管可能无法访问 相关代码)。
  • 排序和搜索等常用算法。
  • 常见集合(并将它们与数据操作集成在一起) 算法)

其他哪些编码任务很常见?我怀疑正在编写的许多代码属于库存管理类别,而是跟踪真实的“对象”。

由于我没有行业经验,我认为可能存在许多基本类型的代码,这些代码比我意识到的更频繁,但实际上并没有实现为外部产品。

高级编程任务以及特定的低级操作都将受到赞赏。

6 个答案:

答案 0 :(得分:3)

通用编程非常容易转换为GPU。 GPU专用于以大规模速率对数据流执行相当简单的任务,具有大规模并行性。它们不能很好地处理一般编程的丰富数据和控制结构,并且没有必要试图将它们插入其中。

答案 1 :(得分:3)

  

通用编程非常容易转换为GPU。 GPU专用于以大规模速率对数据流执行相当简单的任务,具有大规模并行性。它们不能很好地处理一般编程的丰富数据和控制结构,并且没有必要试图将它们插入其中。

这与我对这种情况的印象并不太远,但在这一点上,我们并不太关心自己。我们首先要了解我们必须关注哪些选项。在完成之后,我们将更深入地分析它们,并找出哪些是合理的选择。如果我们最终确定在该领域内无法做任何事情,而且我们只是增加了每个人的电费,那么这也是一个有效的结果。

答案 2 :(得分:2)

现代计算机做了很多事情,一点点好处可能会有很长的路要走?我们看看......

  • 数据管理:关系数据库管理可以受益于更快的关系连接(特别是涉及大量关系的连接)。涉及大量同类数据集。
  • 令牌,lexing,解析文本。
  • 编译,代码生成。
  • 优化(查询,图表等)。
  • 加密,解密,密钥生成。
  • 页面布局,排版。
  • 全文索引。
  • 垃圾收集。

答案 3 :(得分:1)

您可能需要查看ACM的March/April issue杂志的Queue,其中有几篇关于GPU的文章以及如何最好地使用它们(当然除了做图形)。

答案 4 :(得分:0)

我做了很多简化配置。那就是我在UI中包装配置值的生成/管理。主要好处是我可以控制工作流程和演示文稿,使非技术用户更容易配置应用程序/站点/服务。

答案 5 :(得分:0)

使用GPU时要考虑的另一件事是总线速度,大多数图形卡设计为在将数据从CPU传输到GPU时具有更高的带宽,因为这是他们大多数时间所做的事情。从GPU返回到CPU的带宽(返回结果等所需的)并不那么快。因此它们在流水线模式下工作得最好。