Mathematical and Statistical Application – Matlab

Table of Contents



Setting up the environment and invoking from a Research Computing server

Submitting Matlab jobs on a Research Computing server



Useful links


Additional help


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)
Installed Version(s):

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.

Toolboxes available to the locally installed Matlab will be different from those available to Matlab invoked on the Research Computing server.

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:

Setting up the environment and invoking from a Research Computing server

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.

Submitting Matlab jobs on a Research Computing server

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:

bmatlab matlabjob.m

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
-logfile matlabjob.out

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

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

killdevil_local_r2013a (default)

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

killdevil_local_r2013a (default)

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.

[...Matlab code...]
matlabpool open 14
parfor loop
mablabpool close
[ 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 (


  • 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.


Matlab Common FAQs

Useful links


  • 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.

Additional help

Research Computing home page