Table of Contents
Matlab is a high performance language for technical computing. Computation, visualization, and programming are integrated in an easy-to-use environment. Matlab can be used for mathematics, modeling, simulation, data analysis, visualization, scientific and engineering graphics.
|Default Version:||2013a (Kure/Killdevil)|
2012a, 2012b, 2013a (Kure/Killdevil)
|Research Computing Servers:||Kure, Killdevil|
Research Computing purchases the licenses (for university owned machines) for not only the basic Matlab but also for a number of toolboxes. Too see the complete list run the Matlab command
from within Matlab.
You can choose to either install Matlab locally in your personal computer by ordering copy of Matlab from UNC’s Software Acquisition office or run Matlab on ITS lab computers, or the Research Computing server. Campus-wide licenses for the use of Matlab at UNC-CH are checking out from the UNC license server.
You can install Matlab locally in your computer but check out licenses from the UNC license server. Matlab is available to faculty/staff and students for various operating systems through UNC Software Acquisition Office. Please visit their webpage for more information.
Matlab will be started locally on your machine, but the application will look for the UNC license servers through the Internet and check out licenses when it starts. Therefore, a network connection for your machine is required for Matlab to run.
After you get the installation copy of Matlab, refer to these directions:
- You will need a license file in order to install Matlab. Refer to these instructions to obtain a license file (license.dat).
- Follow these installation instructions to install Matlab locally.
Matlab is available for use on the Research Computing Servers: Kure, and Killdevil. The following documents provide instructions for invoking Matlab and other high performance computing software. These documents include general instructions common to all applications, and specific instructions for each application.
- Invoking applications on a Research Computing Server from a UNIX/Linux desktop computer
- Invoking applications on a Research Computing Server from a Microsoft Windows computer
This section covers specific examples of how to submit various types of Matlab jobs on Research Computing’s two main compute clusters: Kure and KillDevil.
To start you will need to add Matlab to your cluster environment using the module commands:
module add matlab
module initadd matlab
All of the following examples assume you are in the directory where your Matlab script is located.
Interactive job submission
Finally, to start a Matlab job on the compute cluster which gives you the Matlab GUI you can do the command
For the “xmatlab” command to work you need to have an X connection to the server.
Serial job submission
The first examples cover submitting serial Matlab jobs. On Kure and KillDevil, the easiest way to submit a serial Matlab job is to use the bmatlab script:
In the above example, “matlabjob.m” is the name of the Matlab script being submitted.
If you do not want to use the bmatlab script then you can use the following command instead and modify it as necessary to suit your job’s requirements:
bsub matlab -nodisplay -nosplash -singleCompThread -r matlabjob
The above command (which should all be on one line) submits the Matlab script “matlabjob.m” (yes, leave the .m off in the “-r” part of job submission command) and creates an output file called “matlabjob.out” in the current working directory.
Parallel job submission
Note. MDCS is under a trial license and currently under evaluation.
Research Computing licenses the Matlab Disbtributed Computing Server (MDCS) which can be used to run parallel Matlab jobs in a distributed fashion on the compute clusters. To use the MDCS you need to use the matlab/2013a module, which you can do by using the aforementioned module commands.
To get started, at the top of your Matlab script you should have the line
which will change your default cluster profile to the one we have created (“killdevil_local_r2013a“) for use with the MDCS and which gives you access to up to 16 workers. Then you can use the “matlabpool open” command to set the poolsize. For example, if I wanted to set a poolsize of 14 then my Matlab script would have
matlabpool open 14
By leaving out the name of a cluster profile in the above “matlabpool open” statement you are by default using the “killdevil_local_r2013a” profile we have set up and therefore you will have to specify a poolsize less than or equal to 16. So, for example, something like
matlabpool open 22
would not work since you are using the “killdevil_local_r2013a” profile but specifying a poolsize larger than what that profile allows.
If you need access to more than 16 workers then you can create your own cluster profile using the Matlab GUI. If you decide to do this you should use the “killdevil_local_r2013a” profile as the model for your new cluster profile. Note that if you don’t see the
profile in the Cluster Profile Manager then close the manager, execute the command
in the Matlab GUI terminal, reopen the Cluster Profile Manger, and the profile should now be there.
In your new profile, edit only the one field for “Number of workers available to cluster” making sure to keep everything else the same and then give your new cluster profile a name. An example would be creating a new cluster profile called
where “Number of workers available to cluster” is set to 32 but is otherwise identical to
Using the killdevil32 profile in your Matlab script will give you access to up to 32 workers. In this case, the script would contain
and, if you wanted to use 22 workers, the line
matlabpool open killdevil32 22
specifying the cluster profile “killdevil32” and a poolsize of 22.
Another thing to keep in mind is that, given how the MDCS works, you should have your matlabpool open and close statements directly around the parfor loop, i.e.
matlabpool open 14
[...rest of Matlab code...]
That is, open and close the matlabpools specifically around the portions of your code that are parallel.
To submit the Matlab job, you can use the usual Matlab job submission command:
bsub matlab -nodisplay -nosplash -singleCompThread
-r MyMDCScode -logfile MyMDCScode.out
Note that with the MDCS it is not necessary to specify the number of job slots for your job submission. This is because of how the MDCS works, which is that when Matlab executes your script and hits the “matlabpool open” statement it turns around and submits a n-way job for you where “n” is the size of your matlabpool (as indicated in your “matlabpool open” statement). So, when you submit the original script (i.e. the one containing the matlabpool calls) there is no need to ask for multiple job slots (because Matlab takes care of this detail for you); it is sufficient to ask for just one job slot (which is the default). Because of this behavior, it is important to make sure you open and close matlabpools around the parallel portion of your code (as discussed above).
For further questions regarding how to use the MDCS, please contact Research Computing (firstname.lastname@example.org).
- Introduction to Matlab is an online documentation written by the Research Computing group can help you start learning Matlab. It contains a number of examples.
- The Matlab Tutorial section of the Matlab online documentation provided by MathWorks is also useful for users new to this software.
- D. Redfern and C. Campbell, “The Matlab 5 Handbook”, Springer, New York, 1998.
- D. Hanselman and B. Littlefield, “Mastering Matlab 6 – A Comprehensive Tutorial and Reference”, Prentice Hall, New Jersey, 2001.