我正在使用Trilinos构建基于分布式线性代数的应用程序,主要问题是内存消耗远高于预期。
我已经构建了一个简单的测试用例,用于构建一个 Epetra::VbrMatrix,其中包含 150 万个双精度数,这些双精度数组合为 500 万个 3 个双精度数块,大约为 115MB。
在 2 个处理器上构建矩阵后,每个处理器一半数据,我在每个处理器上消耗 500MB 的内存,大约是数据的 7.5 倍,这对我来说看起来不合理,矩阵应该只有一些整数数组来定位非零块.
我在 trilinos-users 邮件列表上询问,他们说内存使用率看起来太高了,但希望在这里能得到更多帮助。
我在使用 Ubuntu + gcc 4.4.5 + Trilinos 10.0 的笔记本电脑和使用 PGI 编译器和 Trilinos 10.4.0 的集群上进行了测试,结果大致相同。
我的测试代码在 gist https://gist.github.com/848310上,我还在笔记本电脑上使用 2 个 MPI 进程在测试的不同阶段编写了内存消耗。
如果有人有任何真正有用的建议。此外,如果您甚至可以构建、运行和报告内存消耗,那就太好了。