如何操纵*巨大*数据量

Ale*_*ara 11 memory arrays memory-management hpc

我有以下问题.我需要存储大量的信息(〜32 GB)的量和能够尽可能快地操纵它.我想知道最好的方法是什么(编程语言+操作系统的组合+你认为重要的东西).

我正在使用的信息的结构是双精度浮点数(8字节)的4D数组(NxNxNxN).现在我的解决方案是将4D阵列切成2D阵列并将它们存储在我的计算机硬盘中的单独文件中.这真的很慢,数据操作难以忍受,所以这根本不是解决方案!

我正在考虑进入我国的超级计算设施并将所有信息存储在RAM中,但我不确定如何实现应用程序以利用它(我不是专业的程序员,所以任何书籍/ reference将帮助我很多).

我正在考虑的替代解决方案是购买具有大量RAM的专用服务器,但我不确定这是否能解决问题.所以现在我的无知并没有让我选择最好的方式继续前进.

如果你遇到这种情况,你会怎么做?我对任何想法持开放态度.

提前致谢!


编辑:很抱歉没有提供足够的信息,我会尝试更具体.

我正在存储一个离散的4D数学函数.我想要执行的操作包括数组的转置(改变b [i,j,k,l] = a [j,i,k,l]等),数组乘法等.

由于这是对拟议实验的模拟,因此操作仅应用一次.一旦获得结果,就不必对数据执行更多操作.


编辑(2):

我也希望将来能够存储更多信息,因此解决方案应该以某种方式可扩展.当前的32 GB目标是因为我想让N = 256点的数组,但如果我可以使用N = 512(这意味着512 GB来存储它)会更好.

Dar*_*mas 2

任何合适的答案都取决于您需要如何访问数据。随机访问?顺序访问?

32GB其实并没有那么大。

您需要多久处理一次数据?每(寿命|年|日|小时|纳秒)一次?通常,事情只需要完成一次。这对于您需要优化解决方案的程度有着深远的影响。

您将执行什么类型的运算(您提到乘法)?是否可以将数据分割成块,以便一组操作所需的所有数据都包含在一个块中?这将使分割并行执行变得更容易。

现在您购买的大多数计算机都有足够的 RAM 来容纳您的 32GB 内存。为此,您不需要一台超级计算机。