gpt4 book ai didi

java - 如何创建用于在 Java 中运行物理模拟的 Linux 集群?

转载 作者:IT王子 更新时间:2023-10-29 00:40:31 24 4
gpt4 key购买 nike

我正在开发一个用于执行物理模拟的科学应用程序。使用的算法是 O(n3),因此对于大量数据需要很长时间来处理。该应用程序在大约 17 分钟内运行一次模拟,而我必须运行大约 25,000 次模拟。那是大约一年的处理时间。

好消息是模拟完全相互独立,因此我可以轻松更改程序以在多台计算机之间分配工作。

我可以看到多种解决方案来实现这一点:

  • 获取一台多核计算机并将工作分配给所有核心。不足以完成我需要做的事情。
  • 编写连接到多个“处理”服务器的应用程序并在它们之间分配负载。
  • 获取一组廉价的 Linux 计算机,并让程序将所有内容视为一个整体。

选项 2 相对容易实现,所以我没有过多地寻求有关如何实现它的建议(可以通过编写一个程序来完成,该程序在给定端口上等待参数、处理值和将结果作为序列化文件返回)。那将是 Grid Computing 的一个很好的例子.

但是,我想知道最后一个选项(传统集群)的可能性。在 Linux 网格中运行 Java 程序有多难?是否将所有独立的计算机都视为具有多核的单台计算机,从而使程序更容易适应?是否有任何好的资源指示可以让我开始?还是我让这个过于复杂,我最好选择选项 2?

编辑:作为额外信息,我对如何实现 Wired 杂志这篇文章中描述的内容很感兴趣:Scientific replaced a supercomputer with a Playstation 3 linux cluster .毫无疑问,第二个听起来像是要走的路……但是很酷。

编辑 2:计算非常受 CPU 限制。基本上有很多对大矩阵的操作,比如求逆和乘法。我试图为这些操作寻找更好的算法,但到目前为止我发现我需要的操作是 0(n3) (在通常可用的库中)。数据集很大(对于这样的操作),但它是根据输入参数在客户端创建的。


我现在明白我对 linux 下的计算机集群如何工作有误解。我假设它会以这样一种方式工作,即看起来所有计算机中的所有处理器都可用,就好像您有一台多核计算机一样,但事实似乎并非如此。似乎所有这些 super 计算机的工作方式都是让节点执行由某个中央实体分配的任务,并且有几个不同的库和软件包可以轻松执行这种分配。

所以问题真的变成了,因为没有数字 3 这样的东西:创建集群 Java 应用程序的最佳方法是什么?

最佳答案

我强烈推荐 Java 并行处理框架,尤其是因为您的计算已经是独立的。我和这个本科生一起做了很多工作,效果很好。实现工作已经为您完成,因此我认为这是实现“第二项”目标的好方法。

http://www.jppf.org/

关于java - 如何创建用于在 Java 中运行物理模拟的 Linux 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/333626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com