【发布时间】:2013-10-16 14:11:05
【问题描述】:
对于一个项目,我必须处理 30 GB 的数据集。我可以使用一个非常强大的超级计算机,它可以让我将所有数据集存储在 RAM 内存中,以便对其进行计算(我需要整个数据集来实现我必须实现的一些算法)。问题是加载数据集仍然很慢。
我想请您提供一些实用的建议来加快这个过程。我的想法是将加载过程划分为 C++11 显式线程,这些线程将根据线程索引加载单独的数据块。我也听说过 STXXL 库,但它似乎处理核外计算,因此没有在 RAM 上加载数据(我想避免这种情况,因为我有必要的 RAM——我想我可能会得到通过在其上加载数据集可以更快地获得结果)。
【问题讨论】:
-
你在使用内存映射吗?
-
@seanmcl 你到底是什么意思?
-
类似于 mmap 的东西。 (en.wikipedia.org/wiki/Memory-mapped_file)。请告诉我们您尝试过的速度太慢了。
-
嗯,实际上到目前为止还没有。我只有一个串行 C++ 代码,它加载数据并在上面做一些事情。
-
如果我理解正确,对于内存映射文件,您的意思是与使用 STXXL 库类似的方法:避免将数据加载到 RAM 上并执行计算,将其留在硬盘上。对吗?