【问题标题】:Can we distribute computations to multiple machines without running an instance of the software in every machine?我们可以将计算分配到多台机器上,而无需在每台机器上运行软件实例吗?
【发布时间】:2019-01-08 08:54:43
【问题描述】:

我是一名建筑设计专业的学生,​​使用 3D 程序(如 Blender、Rhino 等)。我通常发现计算繁重的几何图形需要很多时间。所以,我想我们是否可以将计算分配到多台机器上以快速完成工作。

现在的问题是,我想在不实际运行我在每台机器上使用的软件实例的情况下分发计算。因为,我读过很多分布式系统都是这样工作的,通过在执行该工作的每个节点中运行软件实例。但是,我的问题是,我们能否只在一台机器上运行“主软件”,并通过在每台机器上运行“支持软件”(我们编写的)来使用许多机器的资源来完成工作.因此,这就像将“n”台机器视为“一台”。

有没有可能……?

【问题讨论】:

  • 简短(也是唯一的)答案是:不,这是不可能的。如果没有在其他系统上运行一些特殊程序,就没有什么可以做任何工作(或者甚至监听关于工作的网络通信)。
  • 我的意思是,假设我在软件 X 中渲染某些东西。我们是否可以编写一个程序 Y,它可以将渲染工作分配到多台机器上,而无需在每台机器上安装软件 X。我并不是说其他​​任何机器都不应该在任何其他机器上运行。我在问,我们是否可以在每台机器上运行 Y 来分发 X 的工作,而无需在每台机器上都有 X。
  • 我绝对不是这个主题的专家,但在我看来,你可以在“工人”机器上拥有更多简化的程序,并在机器上拥有更多的“主”程序单机。
  • 那么是的,这通常是可能的。但是,如果您当前的软件可能的话,那是一个不同的问题,而不是真正的话题。

标签: python networking network-programming distributed-computing


【解决方案1】:

不要从机器的角度来考虑它们,而是从资源的角度来考虑它们。 因此,您不需要在机器上运行软件,而是需要您的软件能够利用软件范围内的机器中的资源(比如您的“服务器”所在的网络),而不是运行它的实际机器.

不幸的是,大多数工作站不将其显卡作为服务公开。除非您实现 vGPU (https://www.nvidia.com/en-us/design-visualization/technologies/virtual-gpu/) 之类的东西,否则我看不出您需要发生什么。

【讨论】:

  • 是的,这正是我要问的。我想使用许多机器的资源。你能建议我一些开始的资源吗? python中是否有任何用于分发的框架,或者有什么好地方可以阅读它?
  • 很抱歉,这个问题太复杂了,单个 python 模块无法修复 IMO。您需要大量 GPU 以及控制它们的方法。就像英伟达一样。
【解决方案2】:

取决于supporting software 的确切含义。在任何情况下,执行实际工作的代码都必须驻留在每个节点中,才能完成工作。

但是,您可以使用 master-worker 架构,其中 master 负责分配、收集和集成结果,而每个 worker 只坚持纯粹的数字运算。在这种情况下,master 和 worker 上运行的软件可能不同,因为 master 做了更多的管理工作,但 worker 仍然拥有执行实际工作的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 2011-03-30
    • 2014-02-22
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多