所有的Ram都用在一个元胞自动机Python脚本中

时间:2014-05-13 01:23:57

标签: python arrays memory-management anaconda cellular-automata

我有一个用python编写的高强度模型,阵列计算涉及超过200,000个单元,超过4000个时间步。有两个阵列,一个是精细网格阵列,一个是粗网格网格,来自精细网格阵列的信息用于通知粗网格网格的特征。程序运行时,它只使用1%的cpu但最大化ram(8GB)。运行需要几天时间。什么是开始解决这个问题的最佳方法? GPU处理是一个好主意还是我需要找到一种方法将一些已完成的计算卸载到HDD?

我只是想找到解决方案的思路。我的模型是否只是将太多数据拉入ram,导致计算速度变慢?

2 个答案:

答案 0 :(得分:1)

听起来你的问题是内存管理。您可能正在写入交换文件,这会大大减慢您的处理速度。 GPU对你没有帮助,因为你说你的内存最多,而不是你的处理(CPU)。您可能需要重写算法或使用不同的数据类型,但是您还没有共享代码,因此很难根据您编写的内容进行诊断。我希望这足以让你朝着正确的方向前进。

答案 1 :(得分:1)

如果网格填充稀疏,最好使用不同的数据结构而不是巨型python列表(数组)来跟踪填充的部分。