MATLAB on sherlock
Here is an easy to make files/directories easily accessible on a local machine.
How to mount sherlock directories locally
All you have to do mount_sherlock
to have access to sherlock directories at your fingertips at a local directory $SHERLOCK/
$SHERLOCK/
|-- .
|-- home/
|-- scratch/
If you need to reconnect after getting disconnected, first unmount using unmount_sherlock
and then mount again.
Requirements & Setup
kinit
.~/.bashrc
with the following environment variables and alias commandsStep 1: Create environment variables that store your sherlock directory paths, and where you want to mount sherlock locally
# Local mount points. Create this directory if it doesn't exist
export SHERLOCK=/path/to/Sherlock
# Make these once and for all
mkdir $SHERLOCK/home
mkdir $SHERLOCK/scratch
# Directories on Sherlock. Replace <username> and <groupname> appropriately
export SHERLOCK_HOME = /home/<username>
export SHERLOCK_SCRATCH = /scratch/PI/<groupname>/<username>
Step 2: Now make an alias containing mount and unmount commands in your ~/.bashrc
alias mount_sherlock="sshfs sherlock:$SHERLOCK_HOME $SHERLOCK/home; sshfs $SHERLOCK_SCRATCH $SHERLOCK/scratch;"
alias umount_sherlock="umount $SHERLOCK/home; umount $SHERLOCK/scratch;"
If you have followed instructions provided by Research Computing and still failed to successfully call matlab. Make the following changes and try again.
vi ~/.bashrc
Add the following lines to your ~.bashrc
file on sherlock 1
module load jre
export MATLAB_JAVA=/share/sw/free/jre/jre1.8.0_91/
module load matlab/R2016b
alias start_matlab='unset _JAVA_OPTIONS ; matlab -nodesktop -nosplash -nodisplay
For sherlock 2
module load java
export MATLAB_JAVA=/share/software/user/open/java/1.8.0_131/jre
module load math
module load matlab/R2017a
alias start_matlab='unset _JAVA_OPTIONS ; matlab -nodesktop -nosplash -nodisplay
Now you are ready to try this
ssh -X sherlock
# For interactive dev environment
sdev -m 8gb --pty --x11=first
start_matlab
If you need to obtain larger memory allocation on your node or a longer time-frame then use
salloc -N 1 -n 2 --mem-per-cpu=8G -t 4:00:00 --pty --x11=first
Once the node has been allocated, you can ssh into the first node and start an interactive matlab session using start_matlab
Notes: Mathworks also has patches for Java exception errors in older versions of MATLAB. There might be similar issues on linux systems. See here