【发布时间】:2012-04-23 20:08:19
【问题描述】:
我一直在阅读有关 Nvidia Cuda 的信息,并且我看到了一些关于 SO 的问题,人们已经回答了其中包括“您的问题不适合在 GPU 上运行”的评论。
在我的办公室,我们有一个数据库,其中包含我们查询的大量记录,而且可能需要很长时间。我们已经实现了 SELECT DISTINCT 或它们对值应用大写函数的 SQL 查询。作为对 Cuda 的介绍,我考虑编写一个程序,该程序可以在 GPU 上获取所有字符串并将它们大写。
我一直在阅读一本关于 Cuda 的书,其中作者谈到尝试使 GPU 内核尽可能多地执行,以隐藏通过 PCI 总线读取数据或将内容放入全局内存中的延迟。由于内存非常小,而且我有数百万个不同的单词,我自然会让总线饱和并让 GPU 内核饿死。
这是一个不会从显卡而不是 CPU 获得惊人性能提升的问题吗?
谢谢,
mj
【问题讨论】:
-
大部分查询时间不会是由于磁盘 I/O 的速度造成的吗?如果答案是肯定的,那么减少查询时间的唯一方法就是提高 I/O 吞吐量。 GPU 对此无能为力。
-
你说的完全正确。让我们再添加一个假设,假设我在一个具有 64 GB RAM 的服务器上,并且我尝试将所有数据保存在内存中。
-
还是没有。您的任务不是计算成本高,而是内存成本高。因此 GPU 不是一个好的选择。如果您的数据已经在内存中,OpenMP 可能更适合。
-
@mj_:这可能不会改变分析。现在您已将瓶颈从磁盘 I/O 移至 PCI-e 总线。但是传输数据的速度可能仍然是性能限制因素,而不是与查询本身相关的实际计算。