UMBC High Performance Computing Facility

How to run MATLAB programs on tara

For more information about the software, see the MATLAB website.

% Generate two 100x100 matrices with random contents: A=rand(100); B=rand(100); % Multiply the two matrices: AB=A*B; % Calculate the sum of the contents: sumAB=sum(AB(:)); % Save the AB and sumAB variables to the Matlab save file out.mat: save out.mat AB sumAB;

Download: ../code-2010/matrixmultiply-matlab/matrixmultiply.m

#!/bin/bash #SBATCH --job-name=matrixmultiply #SBATCH --output=slurm.out #SBATCH --error=slurm.err #SBATCH --partition=develop matlab -nodisplay -r "matrixmultiply, exit"

Download: ../code-2010/matrixmultiply-matlab/run.slurm

[araim1@tara-fe1 matrixmultiply-matlab]$ sbatch run.slurm sbatch: Submitted batch job 2621 [araim1@tara-fe1 matrixmultiply-matlab]$

>> load out.mat

[araim1@tara-fe1 matrixmultiply-matlab]$ cat slurm.out < M A T L A B (R) > Copyright 1984-2008 The MathWorks, Inc. Version 7.6.0.324 (R2008a) February 10, 2008 To get started, type one of these: helpwin, helpdesk, or demo. For product information, visit www.mathworks.com. [araim1@tara-fe1 matrixmultiply-matlab]$

#!/bin/bash #SBATCH --job-name=plotsine #SBATCH --output=slurm.out #SBATCH --error=slurm.err #SBATCH --partition=develop matlab -nodisplay -r "plotsine, exit"

Download: ../code-2010/plotsine-matlab/run.slurm

zero_to_2pi=linspace(0,2*pi,1000); them_sine=sin(zero_to_2pi); plot(zero_to_2pi,them_sine); print -dpng sine.png print -deps sine.eps print -djpeg sine.jpeg

Download: ../code-2010/plotsine-matlab/plotsine.m

[araim1@tara-fe1 plotsine-matlab]$ ls run.slurm plotsine.m sine.eps sine.jpeg sine.png slurm.err slurm.out [araim1@tara-fe1 plotsine-matlab]$

The encapsulated postscript file (sine.eps) will be in greyscale since I used -deps instead of -depsc. Here are links to the three output files if you want to download them

First grab the following C files, which are also used in How to check memory usage

The following C code is written in a specific form which Matlab can interface to. It will call the get_memory_usage_kb function defined in the C files above. The code retrieves the VmRSS and VmSize quantities for the current process (see How to check memory usage for more information), and returns them as a pair to Matlab.#include <sys/types.h> #include <unistd.h> #include "mex.h" #include "memory.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { int* data; long vmrss; long vmsize; if (nrhs > 0) { mexErrMsgTxt("Too many input arguments."); } get_memory_usage_kb(&vmrss, &vmsize); plhs[0] = mxCreateNumericMatrix(1, 1, mxUINT32_CLASS, mxREAL); data = mxGetData(plhs[0]); data[0] = vmrss; plhs[1] = mxCreateNumericMatrix(1, 1, mxUINT32_CLASS, mxREAL); data = mxGetData(plhs[1]); data[0] = vmsize; }

Download: ../code-2010/check_memory-matlab/getmemusage.c

[araim1@tara-fe1 check_memory-matlab]$ mex getmemusage.c memory.c [araim1@tara-fe1 check_memory-matlab]$ ls getmemusage.c getmemusage.mexa64 memory.c memory.h [araim1@tara-fe1 check_memory-matlab]$

[araim1@tara-fe1 check_memory-matlab]$ matlab -nodisplay < M A T L A B (R) > Copyright 1984-2009 The MathWorks, Inc. Version 7.9.0.529 (R2009b) 64-bit (glnxa64) August 12, 2009 To get started, type one of these: helpwin, helpdesk, or demo. For product information, visit www.mathworks.com. >> [vmrss, vmsize] = getmemusage vmrss = 101140 vmsize = 933132 >> A = rand(5000, 5000); >> [vmrss, vmsize] = getmemusage vmrss = 298572 vmsize = 1128448 >>