【问题标题】:Dedicated distributed system to handle matlab jobs处理matlab作业的专用分布式系统
【发布时间】:2011-11-20 10:11:24
【问题描述】:

我是一名软件工程师,目前期待在我的实验室设置一个分布式系统,以便我可以处理一些 matlab 作业。我已经研究了 MATLAB MPI,但我想知道是否有某种方法可以在这里设置系统而无需任何费用或金额。

【问题讨论】:

    标签: matlab distributed distributed-computing parallel-processing


    【解决方案1】:

    我花了很多时间研究这个问题,简短的回答是:不,不可能。

    有两个长答案。首先,如果您受限于使用 Matlab,那么所有的道路都会回到 MathWorks。一种可能性是您可以编译您的代码,不过您需要从 Mathworks 购买编译器,然后您可以在任何您希望的网格基础架构上运行编译后的代码,例如 Hadoop。

    其次,出于这个原因,我发现将代码简单地移植到另一种语言(通常是开源语言)要好得多。对于我倾向于做的工作,Octave 是 Matlab 的糟糕替代品。相反,R 和 Python 非常适合大多数相同的功能。就个人而言,我更倾向于 R 而不是 Python,但那是因为 R 更适合这些应用程序(即它们本质上非常适合统计)。

    我已将 很多 的 Matlab 代码移植到 R 中,而且还不错。不过,总体而言,移植到 Python 会更容易,而且有一个非常大的 Matlab 难民社区已经改用 Python。

    一旦您使用 Python 或 R,就会有很多用于 MPI、多核工具、分布式系统、GPU 工具等的选项。事实上,通过用 Python 或 R 编写一些分布式函数,加载一个易于使用的网格系统,然后让 Matlab 将作业提交到服务器,您可能会发现迁移更容易。你的本地代码可能是一样的,但是你可以只移植网格部分,无论如何你可能不得不花一些时间在 Matlab 中编写。

    【讨论】:

      【解决方案2】:

      我不会说这完全不可能;您可以使用 TCP/IP 套接字来构建客户端/服务器应用程序(您会在 File Exchange 上找到许多 BSD 套接字的 MEX 实现)。

      架构很简单:您的主要 MATLAB 客户端脚本将作业(代码以及任何需要的序列化数据)发送到节点,以评估并在完成后发回结果。这些节点将是分布式 MATLAB 实例,运行服务器部分,该部分侦听连接,并运行它通过 EVAL 函数接收到的任何内容。

      显然,要编写可分解为可破坏任务的代码。

      这不像分布式计算工具箱提供的那样复杂,但基本上做同样的事情......

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多