arrays - 如何操作*大量*数据

标签 arrays memory memory-management hpc

我遇到以下问题。我需要存储 大量 信息 (~32 GB) 并能够尽可能快地操作它。我想知道最好的方法是什么(编程语言 + 操作系统 + 任何你认为重要的组合)。

我使用的信息结构是 double float (8 字节)的 4D 数组 (NxNxNxN)。现在我的解决方案是将 4D 数组分割成 2D 数组并将它们存储在我计算机硬盘中的单独文件中。这真的很慢,而且对数据的操作令人难以忍受,所以这根本不是解决方案!

我正在考虑搬到我所在国家/地区的 super 计算设施并将所有信息存储在 RAM 中,但我不确定如何实现应用程序以利用它(我不是专业程序员,所以任何书籍/引用资料都会对我有很大帮助)。

我正在考虑的另一种解决方案是购买具有大量 RAM 的专用服务器,但我不确定这是否能解决问题。所以现在我的无知并没有让我选择最好的方法。

如果你遇到这种情况,你会怎么做?我愿意接受任何想法。

提前致谢!


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

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

由于这是对提议实验的模拟,因此这些操作只会应用一次。一旦得到结果,就不需要对数据进行更多的操作了。


编辑(2):

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

最佳答案

亚马逊的“High Memory Extra Large Instance”只有$1.20/hr并且有 34 GB of memory .假设您没有经常运行此程序,您可能会发现它很有用..

关于arrays - 如何操作*大量*数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2629988/

相关文章:

php - 递归获取数组的键并创建下划线分隔的字符串

Golang 中的字符串内存使用

visual-c++ - 如果内存泄漏会发生什么?

java - 如何验证Java中的内存泄漏

swift - 如何从数组中释放所有引用元素?

xcode - 简单菜单应用程序内存溢出

c - 在 C 中使用加倍方案设置数组值的正确方法?

javascript - 通过 JS 获取 Select 选项值并设置数组索引

arrays - shell 脚本中的 HashMap 与文件路径

java - Java使用的内存远大于堆大小(或正确大小的Docker内存限制)