1、distributed job
distributed job是一種比較簡單的並行任務。假定用戶須要完畢一組作業。各個計算作業之間是獨立的。並且相互之間不須要進行數據通信。這意味着各個作業的運行順序不影響終於的運行結果。
這樣的情況下能夠採用distributed job完畢此類作業。
distributed job能夠通過job manager(集群的scheduler)、local scheduler(單機的scheduler)或第三方的scheduler(pbs)運行。
創建distributed job的過程例如以下:
1、創建scheduler對象
2、創建job
3、創建tasks
4、提交job至scheduler
5、獲取job的運行結果
distributed job演示樣例代碼:
clear all;
% 尋找資源。
jm = findResource('scheduler', 'type', 'jobmanager', 'name', 'mu01', 'LookupURL', '192.168.100.100');
% 使用剛才找到的資源建立一個distributed job
job = createJob(jm);
% 設置該工作的文件關聯。讓全部workers都能夠找到原程序文件,須要在Client上設置共享目錄。
set(job, 'PathDependencies', {'\\192.168.0.101\matlab_code\', '/mnt/'})
% 還有一種方法,把用到的原程序文件傳給全部workers。
% set(job, 'FileDependencies', {'hm.m'});
N = 5;
M = 4;
% 建立4個任務,每任務都是算hp(M, N)。
createTask(job, @hp, 1, {{M, N}, {M, N}, {M, N}, {M, N}});
% 提交工作給jobmanager。
submit(job)
% 等待全部workers都把任務做完。
waitForState(job, 'finished')
% 取出計算結果。
results = getAllOutputArguments(job);
% 銷毀Job,釋放資源
destroy(job);
2、parallel job
parallel job僅僅包括1個task。並且此task必須在多個工作單元中同步運行。
各個task之間能夠進行數據通信。在matlab並行程序中,將運行parallel job的能夠進行數據通信的通信單元稱為lab,能夠將lab視為一類特殊的worker。
parallel job的各個工作單元運行的並行程序全然同樣,但能夠完畢不同的功能。在parallel job並行程序中。能夠獲得並行程序運行的工作單元的編號以及工作單元的總數等信息。用戶能夠依據工作單元編號,為不同工作單元分配不同的計算任務。
創建parallel job的步驟:
1、創建或尋找scheduler
2、創建parallel job
3、創建task
4、提交job。等待job manager運行job
5、查看job的運行狀態,返回運行結果
