当前位置: 首页 > 面试题库 >

如何创建一个Linux集群以在Java中运行物理模拟?

巴洲
2023-03-14
问题内容

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

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

我可以看到实现此目的的多种解决方案:

  • 获得一台多核计算机,然后在所有核之间分配工作。我需要做的还不够。
  • 编写一个连接到多个“处理”服务器并在其中分配负载的应用程序。
  • 获取廉价的linux计算机群集,并使该程序将所有内容视为一个实体。

选项2相对容易实现,因此我对如何实现它的建议并不多(可以通过编写一个程序在给定端口上等待参数,处理值并返回结果来完成)作为序列化文件)。那将是网格计算的一个很好的例子。

但是,我不知道最后一个选择的可能性,即传统集群。在linux网格中运行Java程序有多困难?是否将所有单独的计算机都视为具有多个内核的单台计算机,从而使程序易于调整?是否有任何好的资源指南可以让我开始使用?还是我使这个问题变得过于复杂了,所以我最好选择2号?

编辑:作为额外的信息,我对如何实现《连线杂志》这篇文章中所述的内容感兴趣:Scientific用Playstation 3
linux集群代替了超级计算机
。绝对地,第二个听起来像是要走的路…但是凉爽因素。

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

现在,我发现我对Linux下的计算机集群的工作方式有误解。我假设它会以某种方式工作,就好像您拥有所有可用计算机中的所有处理器一样,就好像您有一台具有多个内核的计算机一样,但事实并非如此。似乎所有这些超级计算机都是通过执行由某个中央实体分发的任务的节点来工作的,并且有几种不同的库和软件包可以轻松地执行此分发。

因此,真正的问题是,因为没有数字3,创建一个集群Java应用程序的最佳方法是什么?


问题答案:

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

http://www.jppf.org/



 类似资料:
  • 使用 ceph-deploy 的第一步就是新建一个集群,新集群具备: 一个 Ceph 配置文件,以及 一个监视器密钥环。 Ceph 配置文件至少要包含: 它自己的文件系统 ID ( fsid ) 最初的监视器(们)及其主机名(们),以及 最初的监视器及其 IP 地址。 详情见监视器配置参考。 ceph-deploy 工具也创建了一个监视器密钥环并置于 [mon.] 内,详情见 Cephx 手册。

  • 我已经创建了代理X,我如何在其中创建10个不同的代理?

  • 有没有人知道,如果我们想在运行在多个docker容器上的Hazelcast实例之间形成Hazelcast集群,那么需要在Hazelcast.xml中进行哪些配置。我们应该提供127.0.0.1作为成员的地址还是应该提供docker主机的地址?Local.LocalAddress属性是否需要指向docker主机地址? 编辑:

  • Navicat Data Modeler 让你创建物理模型,包括数据库或模式的表、字段、视图、外键约束和其他物理属性。 若要创建一个物理模型,从菜单栏选择“文件”->“新建”。在“新建模型”窗口中,选择“模型类型”为“物理”,以及选择目标“数据库”和“版本”。 你也可以使用下列的功能来创建一个物理模型: 从数据库导入 - 从现有的数据库/模式或 ODBC 数据源逆向工程。 模型转换 - 从一个逻辑

  • Navicat Data Modeler 让你创建物理模型,包括数据库或模式的表、字段、视图、外键约束和其他物理属性。 若要创建一个物理模型,从菜单栏选择“文件”->“新建模型”。在“新建模型”窗口中,选择“模型类型”为“物理”,以及选择目标“数据库”和“版本”。 你也可以使用下列的功能来创建一个物理模型: 从数据库导入 - 从现有的数据库/模式或 ODBC 数据源逆向工程。 模型转换 - 从一个