2

我是一名軟件工程師,目前期待在我的實驗室建立一個分佈式系統,以便我可以處理一些matlab作業。我研究過MATLAB MPI,但是我想知道是否有某種方法可以在沒有任何FEE或AMOUNT的情況下設置系統。專用分佈式系統來處理matlab作業

回答

2

我花了很多時間看這個問題,簡短的答案是:不可能的,不可能的。

有兩個很長的答案。首先,如果您受限於使用Matlab,那麼所有道路都會返回到MathWorks。一種可能性是你可以編譯你的代碼,但是你需要從Mathworks購買編譯器,然後你可以在你希望的任何網格基礎設施上運行編譯代碼,比如Hadoop。其次,由於這個原因,我發現簡單地將代碼移植到另一種語言(通常是一種開源代碼)會好得多。對於我傾向於做的工作,Octave是Matlab的糟糕替代品。相反,R和Python對於大部分相同的功能都很棒。就我個人而言,我比Python更傾向於R,但這是因爲R更適合這些應用程序(即它們本質上是非常統計的)。

我已經移植了一個很多的Matlab代碼到R,它不是太糟糕。儘管如此,移植到Python會更容易,而且有一個非常大的Matlab難民社區已經轉向Python。

一旦你在Python或R中,MPI,多核工具,分佈式系統,GPU工具等等有很多選擇。事實上,通過在Python或R中編寫一些分佈式函數,加載一個易於使用的網格系統,然後讓Matlab將作業提交給服務器,您可能會發現遷移更容易。你的本地代碼可能是相同的,但是你可以只移植網格化的部分,無論如何,你可能需要花費一些時間在Matlab中編寫代碼。

0

我不會說這完全不可能;您可以使用TCP/IP套接字來構建客戶端/服務器應用程序(您將在文件交換上找到許多用於BSD套接字的MEX實現)。

該架構很簡單:您的主要MATLAB客戶端腳本將作業(代碼連同任何需要的數據串行化)發送到節點,以便在完成時評估和發回結果。這些節點將分佈運行服務器部分的MATLAB實例,該服務器部分監聽連接,並運行通過EVAL函數接收到的任何內容。

很明顯,它需要編寫可分爲易碎任務的代碼。

這不是什麼是分佈式計算工具箱提供作爲複雜,但基本上做同樣的事情......

+0

也看看這個類似的帖子:http://stackoverflow.com/questions/6511534/可以-I-購買-遠程MATLAB的處理時間/ 6564784#6564784 – Amro