# Computing facilities

Students in the Hero laboratory have access to state of the art parallel computing through the Advanced Computing Research (ARC) environment. In addition the lab has several dedicated computing resources hosting data and software including Matlab and Mathematica under the comprehensive licence held by the University of Michigan College of Engineering. The lab also hosts the free access R and Python environments. All students and postdocs in the Hero group have a desktop or laptop to access these resources. The servers are mounted in a rack located in the EECS machine room and include over 100 Terabytes of storage and 3 RTX2080 GPU’s. These resources can be accessed from laptops and desktops through the College’s high throughput ethernet and WIFI networks.Students in the Hero laboratory have access to state of the art parallel computing through the Advanced Computing Research (ARC) environment (Great Lakes, Conflux and Aramis). The lab has several dedicated computing resources hosting data and software including Matlab and Mathematica under the licence at the University of Michigan College of Engineering. They also host the free access R and Python environments. These computers located in the EECS machine room with desktop access from student offices through the network. The computers include over a dozen rack mounted data and compute servers in addition to 3 RTX2080 GPU’s. Go to (.html) or to Computing Resources for more details.

## Accounts for the machines

- You use EECS account to login. If you don’t have one already (possibly because you are not in EECS), you need to ask DCO to make one.
- Since only people in prof. Hero’s group are allowed to use the machines, your EECS account must be granted the access. You need to send DCO an e-mail to have this done.

## Parallel Computing in Matlab

Each of the machines has the Parallel Computing Toolbox installed with Matlab which enables parallel computing. One of the most basic ways to use this feature is via a parfor loop. A parfor loop computes iterations of a for loop in parallel. Note that this requires some restrictions on what can be done within the parfor loop. Also, on machines with older versions of matlab, you need to open a pool of Matlab workers using matlabpool first. On newer versions, this is done automatically.

## Running Matlab Remotely

- The guide was originally written up by Greg Newstadt, and posted to wiki under his permission.
- Add new information or tip you want to share with others!

For a Windows PC, you will want the following software:

- Putty
- Available at: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
- Special instructions: To get the best out of this program, you can modify several options. I suggest the following:
- SSH tab: Make sure that enable compression is checked
- SSH-X11 tab: Under compression, make sure that Blowfish is the first compression type selected.
- Session tab: type the full name of the server (i.e., arcadelt.eecs.umich.edu) under server.

- Also, make sure that you save your session after you make these changes (so that you don’t have to do it again)

- Xming
- Available at: http://www.straightrunning.com/XmingNotes/
- Special instructions: None

- WinSCP
- Available at: http://winscp.net/eng/download.php
- Special instructions:
- Once again, I suggest saving the session so that you don’t have to retype server names/passwords all the time.

- I also suggest that you use a different text editor than the default one in WinSCP (look through the options to select the proper program). I like to use
- EditPlus
- Available at: ftp://ftp.editplus.com/epp310_en.exe
- Special instructions: You can also have EditPlus highlight matlab syntax and some basic autocompletions (‘for’ loops etc.) by downloading the style files from http://www.editplus.com/dn.cgi?matlabr12.zip.

- EditPlus

General instructions on how to use these software to use Matlab remotely:

- Get access to the computers in Dr. Hero’s lab. Basically if you can login to any of the computers (arcadelt, palestrina, irabi, fkrick, etc.), then you are fine.
- If not, you will need to contact DCO and Dr. Hero to get access. Note that access will be through your DCO account, not your normal umich account.

- Open Xming.
- Open Putty and login to an appropriate server.
- Open WinSCP and login to the same server.
- At this point you have the option of how to use Matlab.

- Full graphical display (+ Matlab editor), type

'matlab'

- Graphical display (outside editor), type

`'matlab -nodesktop' or 'matlab -nodesktop -nosplash'`

- Text display only (only command prompt), type

`'matlab -nodisplay'`

What I usually do is use either the text only display or the graphical display without the Matlab editor. In both of these cases, you should use WinSCP to edit files (make sure that you click ‘Edit File’ and not ‘Open File’, since the former will allow you to save directly to the server). Then you can use the command prompt to run scripts or short commands.

Lastly, if you are still having problems with figures taking too long to load on the screen, you can use the following commands to print directly to a file (which you can then open with WinSCP). For example:

```
h = figure('visible','off');
t=1:10;
plot(t, sin(t), '-*');
print(h, '-depsc2', 'file.eps');
close(h);
```

Note that you can change the option ‘-depsc2’ to any other format, including:

- JPEG (‘-djpeg’)
- BMP (‘dbmp’)
- EPS (‘deps2’)
- EPS in color (‘depsc2’)
- TIFF (‘-dtiff’)
- PDF (‘-dpdf’)

See http://www.mathworks.com/access/helpdesk/help/techdoc/ref/print.html for more information on the print command.

When using Matlab figures in TeX documents, you might want to keep the plot margins minimal. For example:

```
set(h,'Units','points')
set(h,'PaperUnits','points')
pos = get(h,'Position');
u=pos(3); v=pos(4);
set(h,'PaperPosition',[0 0 u v])
set(h,'PaperSize',[u v])
print(h,'-dpdf','file.pdf')
```

Another useful tool is to run a script in matlab without actually opening up matlab. One way to do this is to open up a terminal, and type in

matlab -nodisplay >&! matlab.out << EOF

where matlab.out is a text file that will be written to the current directory. At this point, the terminal will give a matlab command line to type in commands. For example

```
> t = 1:5;
> x = sin(t);
```

or if you wanted to run some script and save the output:

```
> output = runGoodScript(options);
> save output.mat output;
```

at the end of what you run, make sure you exit matlab

`> exit`

And then to finish the batch command you have to type in

`> EOF`

Thus, a batch job may look like:

```
% matlab -nodisplay >&! matlab.out << EOF
> output = runGoodScript(options);
> save output.mat output;
> exit
> EOF
%
```

I suggest two additional options here. First, to make sure that you get control in the terminal again, you can use the “&” after the first “EOF”. Moreover, to make sure that even if you lose your internet connection, the job will still run, type in “nohup” before matlab. Thus, it would like:

```
% nohup matlab -nodisplay >&! matlab.out << EOF &
> output = runGoodScript(options);
> save output.mat output;
> exit
> EOF
%
```