我是一名软件工程师,目前期待在我的实验室设置分布式系统,以便我可以处理一些matlab工作。我已经研究了MATLAB MPI,但我想知道是否有某种方法可以在这里设置一个没有任何FEE或AMOUNT的系统。
答案 0 :(得分:2)
我花了很多时间研究这个问题,简短的回答是:不,不可能。
有两个很长的答案。首先,如果你被限制使用Matlab,那么所有的道路都会回到MathWorks。一种可能性是您可以编译代码,但是您需要从Mathworks购买编译器,然后您可以在任何您希望的网格基础结构上运行已编译的代码,例如Hadoop。
其次,出于这个原因,我发现将代码简单地移植到另一种语言(通常是开源代码语言)要好得多。对于我倾向于做的工作,Octave是Matlab的不良替代品。相反,R和Python非常适合大多数相同的功能。就个人而言,我更倾向于R而不是Python,但这是因为R更适合这些应用程序(即它们本质上非常统计)。
我已经将一个很多的Matlab代码移植到了R,这并不算太糟糕。但是,移植到Python通常会更容易,并且有一个非常大的Matlab难民社区已经切换到Python。
一旦进入Python或R,MPI,多核工具,分布式系统,GPU工具等都有很多选择。事实上,通过在Python或R中编写一些分布式函数,加载易于使用的网格系统,然后让Matlab将作业提交给服务器,您可以更轻松地找到迁移。你的本地代码可能是相同的,但是你可以只移植网格部分,无论如何你可能不得不花费一些时间用Matlab编写。
答案 1 :(得分:0)
我不会说这完全不可能;您可以使用TCP / IP套接字构建客户端/服务器应用程序(您将在文件交换上找到许多用于BSD套接字的MEX实现)。
架构很简单:您的主MATLAB客户端脚本将作业(代码以及任何所需的序列化数据)发送到节点以评估并在完成后发回结果。这些节点将是运行服务器部分的MATLAB实例,它监听连接,并运行通过EVAL函数接收的任何内容。
显然,编写代码可以划分为可分解的任务。
这不像分布式计算工具箱提供的那么复杂,但基本上做同样的事情......