首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分子计算的内存存储系统

分子计算的内存存储系统
EN

Stack Overflow用户
提问于 2016-10-20 16:29:35
回答 2查看 42关注 0票数 0

我目前正在做一个MD模拟。它将分子的位置存储在一个矢量中。对于每个时间步,该向量被存储以在第二个向量中显示,从而导致

代码语言:javascript
复制
std::vector<std::vector<molecule> > data;

data的大小是time steps*<number of molecules>*sizeof(molecule),其中sizeof(分子)是(已经减少的) 3*sizeof(double),作为位置向量。尽管如此,对于更多的时间步长和分子数量,我仍然会遇到记忆问题。

因此,是否存在减少数据量的额外可能性?我目前的工作流程是,我首先计算所有分子,存储它们,然后使用每一步每个分子的数据来渲染它们,渲染是用Irrlicht完成的。(也许稍后再使用搅拌器)。

EN

回答 2

Stack Overflow用户

发布于 2016-10-20 16:47:11

如果轨迹是平滑的,您可以考虑通过每N步只存储一次并通过插值恢复中间位置来压缩数据。

如果时间步长很小,则可以使用线性插值。三次样条可以提供最好的质量。无论如何,样条系数的计算是一个全局操作,您只能在最后执行该操作,并且需要额外的存储空间(!),并且您可能更喜欢基数样条,它可以从四个连续的位置在本地构建。

票数 3
EN

Stack Overflow用户

发布于 2016-10-20 16:37:32

通过以单精度而不是双精度存储位置,您可以获得2倍的性能提升-如果不是用于模拟,它将足以用于渲染。

但最终,您需要将结果存储在文件中并离线渲染。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40149260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档