如何处理太多数据?


14

我们的等离子体动力学模拟通常会产生太多信息。在仿真过程中,我们至少在10个属性上将各种物理属性记录在最大(8192x1024x1024x1500)的网格(x,y,z,t)上。仿真完成后,将处理此信息。有了它,我们

  1. 拍电影,
  2. 进行傅立叶分析,
  3. 计算平均性能。

当研究较小的系统时,尽可能多地进行简单的信息转储就可以了。这使我们可以灵活地与结果进行交互,并在以后决定我们要怎么做。它也使我们能够分配计算资源(CPU时间)来简单地运行仿真。

我们已经开始进行动态傅里叶分析的过程,并且仅对选定范围的长度刻度进行过滤。出于数字原因,有时我们需要解析小于实际所需长度的比例尺,因此在这种情况下,此过滤器会很有帮助。我们还在探索各种并行IO库,例如并行I / O选项,尤其是并行HDF5

有哪些策略可以使数据处理效率最大化?

快速执行所有分析(不包括后期处理,例如电影和情节)是否有任何好处?

我可以想象这个问题会在其他研究领域出现。例如,您可能需要进行长时间的分子动力学模拟,但是您对发生有趣事件的短暂瞬间感兴趣。或在CFD中,早期开发可能会变慢,但是一旦出现动荡,您可能需要更高的时间分辨率来监视动态。

是否有免费提供的从模拟中收集复杂结果的示例?


这似乎是一个广泛的问题。如果您有这种感觉,请提出有关我的具体建议。
Yann

1
还要看看一些实验小组如何处理这个问题。高能物理(称为CERN)和天体物理学可能会产生更大的数据规模,因此必须进行存储(或在存储之前进行过滤,因为数据的传入速度快于其写入任何存储器的速度),分布和分析。
Brian Diggs

Answers:


10

我认为您可能必须拆分输出以匹配目标:

  1. 对于属性电影,您可能不需要完整的空间分辨率和所有变量。仔细选择要显示的内容,然后考虑将要显示的电影的最终分辨率,它可能没有80亿像素。
  2. 对于傅里叶分析(或诸如POD之类的东西),如果它们是时间性的,则可能只需要采样在您的域中明智选择的几百个点即可。如果它们是空间快照,则可能只需要几个快照而不是1500。同样,也不需要所有属性。
  3. 对于时间平均,您可以继续添加到同一字段,而不必担心时间维度对吗?但是,空间平均很痛苦,尤其是当您要查看其随时间的变化时。但是在转储数据之前进行更多的在线处理可能会减小数据的大小...

这意味着需要大量工作来拥有专用输出,而不是大型通用输出,但这应该有助于降低成本和尺寸。希望这可以帮助 !

通常,我想添加的另一件事是,仅对于重新启动文件(即重新启动仿真的文件)才需要数据的完整分辨率。对于给定的模拟,您不需要太多(假设100,因此,如果两次重启之间发生某件事,您最多损失1%的计算),而您可能想提高输出频率电影。例如,您可以仅以分辨率的1/64(在每个方向上每4个点1个)进行操作。


为什么空间平均令人痛苦?即时进行操作并写入结果,该结果应该很小。
大卫·凯奇森2011年

@DavidKetcheson空间平均很麻烦,因为它需要大量的通信,并且可能会受到域拓扑的影响,不是吗?当然,如果您有一个与参考框架对齐的纯正交网格,那还不错,但是您仍然必须对计算和MPI_REDUCE进行一些巧妙的组合,因为对于这样大小的网格,您不能只对1执行ALL_REDUCE我会认为处理器...
FrenchKheldar 2011年

1
好的,现在我明白您的评论了。但是通信通常不会太差,因为您可以本地平均每个进程,然后减少每个进程的单个浮动。根据我的经验(在65K核心BlueGene / P上),此成本微不足道,尤其是与I / O成本相比。实际上,我们在每个时间步长上对整个65K内核执行ALL_REDUCE,而且速度非常快。
David Ketcheson

@DavidKetcheson实际上,我现在也认为我也误会了您的观点,并且我也高估了数据缩减的成本。我想到的是像跨度/方位角平均法,您必须存储/输出完整的2D数据,该数据可能与计算网格不在同一网格上。但是您是对的,MPI_ALL_REDUCE的实际成本本身并不是问题。
FrenchKheldar 2011年

8

我认为当前的艺术大师是大粒子物理实验(我最熟悉CDFD0,因为我年纪大并且在芝加哥大学工作)。它们具有硬件触发器,这些触发器每年会丢弃PB(或更多)。但是,这是量化/离散化的整个主题,或者是“只丢弃不需要的内容”。我不确定您总体上能否给出一个明智的答案。最好将问题缩小为“我以以下方式离散化了PDE仿真,并希望有效地降低采样率”。


3

彼得·勒佩奇(Peter LePage)在点阵QCD圈子中非常有名,他提出了一种方法,该方法可以通过找到并应用良好的短距离解析解来减少不可行的大点阵网格。

这大致相当于注意到,与梯形方法相比,一组精心选择的样条可以以更少的节数进行精确的集成(除非您在这种情况下可以一次在四个维度上利用它)。

结果是您将数据集的原始大小换成每个节点更多的计算步数,但是由于问题的高维性而最终领先。

我不是一个非常了解的主题,无法给出任何体面的提示,但是过去它在某些领域都起作用。


3

这个问题有点笼统,所以我将提供一个相对模糊的答案,建议在这种情况下可能的技术。

1)您已经在进行中的即时处理。快速进行处理并将其与数据生成步骤分离的一种方法是生成一个循环输出文件,该文件始终包含最后N个步骤,并使分析在单独的过程中运行。显然,您必须同步两者以防止出现竞争状况。

2)更仔细地选择存储的数据。不幸的是,这是高度特定于情况的。

3)在存储数据之前先对其进行压缩,或者使用具有集成压缩选项的存储库,例如HDF5。

4)存储常规检查点而不是完整输出。如果每N步存储一个完整的检查点,即有足够的数据从那里重新开始仿真,则在必要时可以高度并行的方式重建丢失的数据。注意,在蒙特卡洛方法的情况下,检查点必须包括随机数生成器的状态。您实际上可以认为这是一种高度特定于应用程序的压缩技术。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.