5

我最近开始研究一个项目,以确定如何最好地利用现代显卡中可用的处理能力进行一般编程。似乎现场通用 GPU 编程 (GPGPU) 对具有大量数学的科学应用程序有很大的偏见,因为这非常适合 GPU 计算模型。这一切都很好,但大多数人不会把所有时间都花在运行模拟软件等上,所以我们认为有可能创建一个通用基础,以便为大众轻松构建支持 GPU 的软件。

这就引出了我想提出的问题;程序执行的最常见工作类型是什么?由于我们愿意接受适度的性能改进(总比没有好,对吧?)。

我们已经想到了几个主题:

  • 数据管理 - 处理来自数据库等的大量数据。
  • 电子表格类型的程序(与上述有点相关)。
  • GUI 编程(尽管可能无法访问相关代码)。
  • 常用算法,如排序和搜索。
  • 通用集合(并将它们与数据操作算法集成)

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

由于我没有行业经验,我认为可能有许多基本类型的代码比我意识到的更频繁地完成,但它们并没有作为外部产品实现。

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

4

6 回答 6

3

通用编程非常适用于 GPU。GPU 致力于在数据流上以高速度执行相当简单的任务,并具有大量并行性。它们不能很好地处理通用编程的丰富数据和控制结构,并且试图将其硬塞到它们中是没有意义的。

于 2008-09-04T21:20:41.747 回答
3

通用编程非常适用于 GPU。GPU 致力于在数据流上以高速度执行相当简单的任务,并具有大量并行性。它们不能很好地处理通用编程的丰富数据和控制结构,并且试图将其硬塞到它们中是没有意义的。

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

于 2008-09-04T21:29:48.073 回答
2

现代计算机做了很多事情,哪里有一点好处可以走很长的路?让我们来看看...

  • 数据管理:关系数据库管理可以受益于更快的关系连接(尤其是涉及大量关系的连接)。涉及海量同质数据集。
  • 标记化,词法分析,解析文本。
  • 编译,代码生成。
  • 优化(查询、图表等)。
  • 加密、解密、密钥生成。
  • 页面布局,排版。
  • 全文索引。
  • 垃圾收集。
于 2008-09-05T05:38:16.853 回答
0

您可能想看看ACM 的Queue杂志的3 月/4月刊,其中有几篇关于 GPU 以及如何最好地使用它们的文章(当然,除了做图形之外)。

于 2008-09-05T04:52:41.597 回答
0

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

于 2008-09-04T21:19:51.467 回答
0

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

于 2008-09-05T16:45:37.527 回答