#### Summary

What you will learn: (for **Windows user**)

- How to run Matlab Distributed computing

- How to run Matlab Parallel computing

What you need before reading this tutorial

**Setup your Matlab to work with VPAC (for Windows Users)**

**Step1:** setup to connect to our account using public key and private keyusing Putty key generator:

**Step2:** download PSCP and Plink and save in any folder for example I save it in C:\WINDOWS

then you have to go in to Environment tab of the System Control Panel.and set the path to C:\WINDOWS like below

.

** Step3:** open putty software and enter the detail as below. then save this session

after
doing all of this save this session and try log in your account by this
putty software, you will see that you dont have to enter username and
password and it automatically go in to command window.

**Step4:** run pageant software, and do

as below

**Step5: **you will need to establish a

`c:\matlab`

directory where
you can put your data and results, as scp does not work with spaces in
path names in this instance. The entire MATLAB Windows toolbox needs to
be copied into this directory. e.g.,

cp c:\$matlabroot\toolbox\distcomp\examples\integration\pbs\nonshared\windows\ c:\matlab\windows

### Setting the MATLAB path correctly

Before using MATLAB PCT you will need to configure the MATLAB path
to include the correct set of submit functions for your system. To do
this go to the File menu and select the "Set Path" option. Select the
"Add Folder" option and then add one of the two options below depending
on whether you use Linux or Windows. $MATLAB represents the location
where MATLAB is installed on your computer, you will need to navigate
to the directory below by hand.

Linux: `$MATLAB/toolbox/distcomp/examples/integration/pbs/nonshared/unix`

Again in MS-Windows the task is a little trickier. First the existing path has to be removed i.e.,

`$MATLAB\toolbox\distcomp\examples\integration\pbs\nonshared\windows`

Then the new path (see above) has to be added.

`c:\matlab\windows`

### Run simple job using Matlab Distributed Computing

The concept for this process is that you will write some simple code to send to Vpac server and it will run the code there then return back to you the result. You can copy the following code put in an .m file and run it your matlab directly

*(make sure that all the above sections is setup correctly)*

#### distributedcomputingsimple.m

clusterHost = 'tango.vpac.org';

remoteDataLocation = '/home/xxxxxxxx'; //replace this by your own location in your account space where you want to store the job data

sched = findResource('scheduler', 'type', 'generic');

get(sched)

set(sched, 'DataLocation', 'C:\matlab\share'); //you can choose and folder in your computer to be share file system - matlab will create some job data in thic location.

set(sched, 'ClusterMatlabRoot', '/usr/local/matlab/R2008a'); // change the version of matlab to your version of matlab such as R2009a, R2008b,

set(sched, 'HasSharedFilesystem', true);

set(sched, 'ClusterOsType', 'unix');

set(sched, 'SubmitFcn', {@pbsNonSharedSimpleSubmitFcn, clusterHost, remoteDataLocation});

j = createJob(sched); //create a job to send to vpac

get(j)

createTask(j, @rand, 1, {3,3}); //create task for this job to generate randomly 3x3 matrix

createTask(j, @rand, 1, {3,3}); //create task for this job to generate randomly 3x3 matrix

get(j,'Tasks')

submit(j)

waitForState(j)

results = getAllOutputArguments(j);

results{1:2}

### Run Parallel Job using Matlab Distributed Computing

#### Palalleljob.m

clusterHost = 'tango.vpac.org';

remoteDataLocation = '/home/xxxxxxxx'; //replace this by your own location in your account space where you want to store the job data

sched = findResource('scheduler', 'type', 'generic');

get(sched)

set(sched, 'DataLocation', 'C:\matlab\share'); //you can choose and folder in your computer to be share file system - matlab will create some job data in thic location.

set(sched, 'ClusterMatlabRoot', '/usr/local/matlab/R2008a'); // change the version of matlab to your version of matlab such as R2009a, R2008b,

set(sched, 'HasSharedFilesystem', true);

set(sched, 'ClusterOsType', 'unix');

`set(sched, 'ParallelSubmitFcn', {@pbsNonSharedParallelSubmitFcn, clusterHost, remoteDataLocation}); //the`

` pbsNonSimpleParallelSubmitFcn`

from above example has been changed to `pbsNonSharedParallelSubmitFcn`

` `

pjob = createParallelJob(sched)

//Create a parallel task using the rand function to provide 3 random numbers.

createTask(pjob, @rand, 1, {3});

set(pjob,'MinimumNumberOfWorkers',5);

set(pjob,'MaximumNumberOfWorkers',9);

submit(pjob)

waitForState(pjob, 'finished')

results = getAllOutputArguments(pjob)

celldisp(results);

In general, To connect to vpac server, Matlab
will make use of the running Pegant to connect to the server using the
public and private key, it will prepare the job and submit it to vpac
server, after done, the result will be send back to our matlab program.

For
further function in matlab, please read more other information, the
above instruction is only show how to set up and run a small matlab code
in windows on vpac server.

For more information and some more trick relating to this tutorial, please contact Quan Vu , TULIP Lab