cluster:96
This is an old revision of the document!
Table of Contents
Matlab 2010b
So, now that 2010b is the version of Matlab and we're using Lava scheduler we need to integrate the two.
Serial 1
In the example below, the code waits for the results. Don't do that when submitting jobs, it is just for debugging purposes.
This old way still works for distributed jobs:
% distributed matlab jobs
% start 'matlab -nodisplay', issue the command 'Simple'
% set up the scheduler and matlab worker environment
sched = findResource('scheduler', 'type', 'generic');
set(sched, 'HasSharedFilesystem', true);
set(sched, 'ClusterMatlabRoot', '/share/apps/matlab/2010b')
set(sched, 'SubmitFcn', @lsfSimpleSubmitFcn)
% specify location for worker output
set(sched, 'DataLocation', '/home/hmeij/hp/matlab')
% create job and assign tasks to be done
j = createJob(sched);
T = createTask(j, @rand, 1, {{3,3} {3,3} {3,3} {3,3} {3,3}});
% submit job, wait for jobs to finish, fetch output
submit(j)
% WARNING: this may hang if the workers are busy!
waitForState(j)
results = getAllOutputArguments(j);
results{1:5}
% better to do it like Simple2.m
Serial 2
After you submit the job, you can exit matlab.
% distributed matlab jobs
% start 'matlab -nodisplay', issue the command 'Simple2'
% set up the scheduler and matlab worker environment
sched = findResource('scheduler', 'type', 'generic');
set(sched, 'HasSharedFilesystem', true);
set(sched, 'ClusterMatlabRoot', '/share/apps/matlab/2010b')
set(sched, 'SubmitFcn', @lsfSimpleSubmitFcn)
% specify location for worker output
set(sched, 'DataLocation', '/home/hmeij/hp/matlab')
% create job and assign tasks to be done
j = createJob(sched);
T = createTask(j, @rand, 1, {{3,3} {3,3} {3,3} {3,3} {3,3}});
% submit job, then exit matlab interactive session
submit(j)
get(sched)
Parallel
Slightly different syntax. Adjust your number of workers values based on some benchmarking, not always do the most workers finish a job in the shortest amount of time.
% parallel matlab jobs
% start 'matlab -nodisplay', issue the command 'Simplep'
% set up the scheduler and matlab worker environment
sched = findResource('scheduler', 'type', 'generic')
set(sched, 'HasSharedFilesystem', true);
set(sched, 'ClusterMatlabRoot', '/share/apps/matlab/2010b')
set(sched, 'ParallelSubmitFcn', @lsfParallelSubmitFcn)
% specify location for worker output
set(sched, 'DataLocation', '/home/hmeij/hp/matlab')
pj = createParallelJob(sched);
set(pj, 'MaximumNumberOfWorkers', 8)
set(pj, 'MinimumNumberOfWorkers', 8)
T = createTask(pj, @rand, 1, {{300,300}});
% submit job, wait to finish, get status jobs, gather results
submit(pj)
get(sched)
% you can now exit matlab
% at system prompt type 'bjobs'
cluster/96.1298581513.txt.gz · Last modified: by hmeij
