cuda - Nvidia Cuda 程序 - 我的问题适合 Cuda 架构吗?

标签 cuda gpu nvidia

我一直在阅读有关 Nvidia Cuda 的内容,并且在 SO 上看到了一些问题,人们已经回答了这些问题,其中包括“您的问题不适合在 GPU 上运行”的评论。

在我的办公室,我们有一个数据库,其中有大量记录供我们查询,这可能需要很长时间。我们已经实现了 SELECT DISTINCT 的 SQL 查询,或者它们对值应用大写函数。作为 Cuda 的介绍,我考虑编写一个程序,可以在 GPU 上获取所有字符串并将其大写。

我一直在读一本关于 Cuda 的书,其中作者谈到尝试让 GPU 核心尽可能多地执行,以隐藏通过 PCI 总线读取数据或将数据放入全局内存的延迟。由于内存大小非常小,而且我有数百万个不同的单词,自然会使总线饱和并使 GPU 核心挨饿。

这个问题是否会导致显卡(而不是 CPU)无法获得出色的性能提升?

谢谢

米杰

最佳答案

We've implemented SQL queries that SELECT DISTINCT or they apply an uppercase function against a value.

您是否考虑过在表中添加一列,其中包含预先计算的字符串的大写版本?

我倾向于认为,如果您的数据库完全位于 RAM 中并且查询仍然“永远”发生,那么您的数据库可能无法正确构建和索引。检查您的查询计划。

我认为,在正常情况下,如果您的选择被索引整齐地覆盖,您将无法使用 GPU 进行优化。但也许有些东西可以针对 GPU 进行优化,例如需要表扫描的查询,例如带有通配符的 LIKE 查询以及基于计算(值小于等)选择行的查询。当连接列有许多重复值时,甚至可能会进行诸如具有许多连接的查询之类的事情。

这种实现的关键是在 GPU 上保留数据库中某些数据的镜像,并使其与数据库保持同步。然后对该数据运行并行缩减等操作,以得出行 ID,然后用于针对常规数据库进行选择。

在采取这样的步骤之前,我会探索使用时空权衡的数据库查询优化的无数可能性。

关于cuda - Nvidia Cuda 程序 - 我的问题适合 Cuda 架构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10107312/

相关文章:

python - 如何加快 numpy 数组和非常大的矩阵之间的余弦相似度?

delphi - 强制配备 nVidia Optimus 的系统为我的应用程序使用真正的 GPU?

c++ - 在 OpenCL 中从 GPU 编程中获取初始值

c - 我需要向 DLL 添加什么才能导出指向 i_d 的指针?

c++ - 编译时在 cuda 内核中使用 __ldg 时出错

python - PyCUDA 使用字符串但不使用字符串数组

c++ - 使用并行归约的 CUDA 矩阵乘法

c++ - 大数组的C++/CUDA怪异行为

CUDA 2D 内核合并内存

c++ - GPU 加速 LK 金字塔中的窗口大小限制