日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

matlab分布式计算报告,简单的matlab分布式计算

發布時間:2024/3/12 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab分布式计算报告,简单的matlab分布式计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

matlab的分布式計算可以理解為一臺機器作為client(主控機),其他的機器分別作為計算的結點,要由client進行控制和操作。如果把單機上的.m文件直接放到client運行,是不會產生分布式計算的效果的,只相當于在主控機進行了計算,而其他的結點都還處于閑置狀態。要想使用所有的結點或者部分結點進行計算,必須使用findResource()找到可利用的閑置cpu,使用createJob()創建工作,再使用createTask()為工作分配一個或多個任務,最后提交工作,這樣,計算任務才分配到各個結點上。

分布式計算的環境是需要配置的,但是我使用的環境是學院的刀片機,已經被配置好了,運行的時候直接用ssh或者xmanager 登陸,所以對這一部分不了解。假設環境已經配置好了,想要進行分布式計算,一般寫一個主函數,進行分布式計算的資源分配下發任務。

舉例來說,如果要調用FunA和FunB(一般FunA和FunB是相互獨立的),并且FunA要調用目錄下的sub_floderA文件夾,FunB要調用目錄下的sub_floderB文件夾,則把FunA、FUnB、sub_floderA、sub_floderB都拷貝到主控機的matlab的工作目錄下,在這個目錄下再建立main.m(當然也可以是其他名字),假設當前控制機的matlab的工作目錄是 ”/hpc/home/myTask“,則main.m應如所示:

clear;clc;

sched = findResource();

%findResource默認可以無參,讓matlab自己去找可用的資源,但最好自己分配一下,

%也可以調用已有的配置文件

job=createJob(sched);

%將當前工作所需要的目錄及文件拷貝至各個結點,如果想調用自定義的函數,這一步幾乎是必須的。

set(job,'FileDependencies',{'/hpc/home/myTask/sub_floderA' '/hpc/home/myTask/sub_floderB' 'Fun_A.m' 'Fun_B.m'});

%也可以用下面這個將所有需要的路徑共享給各個計算結點,但我用這個沒有成功,好像要先設置文件共享才行

%set(job,'pathDependencies',{'...' '...'})

%用FileDependencies的方法雖然麻煩一點,但拷貝的方法可能會穩定些

job,%這里可以讓job顯示一下,以確認工作目錄等是否都分配正確了。

createTask(job,@FunA,2,{});%2表示FunA的返回參數個數,{}里是FunA的參數,如果無參,就寫{}

createTask(job,@FunB,3,{para1,para2}); %3表示FunB的返回參數個數,{}里是FunB的參數

submit(job);

waitForState(job,'finished');

results = getAllOutputArguments(job);

save('result.mat','results');

%因為分布式計算一般都是遠程登錄控制機,所以最好把結果保存下來,再用FTP等工具傳回本地查看。

%還有一個好的習慣是FunA和FunB中也寫下save語句,將計算結果保存下來,

%此時的save應該是控制節點%的絕對地址,

%如要在FunA中寫下保存FunA的運算結果,則應寫如下語句:

%save('/hpc/home/myTask/resultOfFunA.mat','result');

%將結果保存到控制節點的工作目錄下

destroy(job);

此時,執行main,便可在分布環境下執行FunA和FunB。

總結

以上是生活随笔為你收集整理的matlab分布式计算报告,简单的matlab分布式计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。