GPU可以获取的最大数据量?

时间:2014-09-08 14:12:33

标签: memory memory-management cuda bigdata ram

我有一个大型数据集,比如5 GB,我正在对数据进行 - 处理,现在,我需要弄清楚我可以向GPU发送多少数据处理时间,以便我可以充分利用GPU内存。

另外,如果我的RAM不足以处理/保留5 GB的数据,那么解决这个问题的方法是什么?

1 个答案:

答案 0 :(得分:3)

流水线应用程序可能在GPU上使用3个缓冲区。一个缓冲区用于保存当前正在传输到 GPU(来自主机)的数据,一个缓冲区用于保存当前由处理 GPU的数据,以及一个缓冲区保存当前传输到主机的数据(结果)。

这意味着您的应用程序处理可以分解为" chunk"。对于许多处理大型数据集的应用程序来说都是如此。

CUDA streams使开发人员能够编写允许这3个操作(转移,处理,转移)同时运行的代码。

在上面的场景中,没有特定的数字来定义缓冲区的大小。当然,一个简单的实现将创建3个缓冲区,每个缓冲区小于GPU上总内存的1/3,留下一些内存用于开销和其他可能需要存在于GPU内存中的数据。因此,如果你的GPU有5GB,你可以使用三个1GB缓冲区运行。但是没有像deviceQuery这样的工具会告诉你这个;它不是设备的属性。

您可能需要仔细阅读上述链接的编程指南部分,并查看CUDA simple streams示例代码。