(This documentation should work with MATLAB >= 2019b)

MATLAB Parallel Severs is a toolbox that allows you to launch your script to the SCITAS clusters directly from your local installation of MATLAB. This documentation will guide you through the steps to properly configure the SCITAS clusters as parallel servers in your MATLAB installation.

- The first step is to install MATLAB 2019b on your personal computer. To this end, you can download from Distrilog (or by following this link for a Linux machine). During the installation, you will be prompted with different toolboxes available. You must select the "Parallel Computing toolbox" for installation. Once MATLAB is installed, you will also need to install the "Parallel Computing Toolbox plugin for MATLAB Parallel Server with Slurm".
- Once the first step is completed, open MATLAB and in the "Home" menu, select "Parallel" and "Create and Manage Clusters":

In the dialog window, click on "Import" and select the following configuration files (you will need to download them on your computer):

+ SCITAS cluster: fidis (R2019b).mlsettings

+ SCITAS cluster: helvetios (R2019b).mlsettings - Select the newly imported configurations and, in the "Scheduler Plugin" section, correct the location of the plugin installation to reflect your setup:
PluginScriptsLocation: INSTALL_DIR/MATLAB/SupportPackages/R2019b/parallel/slurm/nonshared

where INSTALL_DIR is the path where you have installed the Slurm plugin.

- Test your installation with the "Validate" button (the "Parpool" test might fail if you don't have a static IP). This may take a long time depending on the current workload of the cluster.

nslookup YOU_IP_ADDRESS ad1.epfl.ch

pctconfig('hostname','MY_PC_NAME.epfl.ch');

When launching a simulation using MATLAB Parallel Server, you may need to change a SLURM option to fit your needs. Typically, without any action from you, the time limit of the simulation is the default one (15 minutes). To change that, you must create a cluster object inheriting from the cluster configuration, add an additional submission argument, and create the parallel pool of workers:

cluster = parcluster('fidis'); % Create a cluster with the configuration corresponding to the Fidis machine cluster.AdditionalProperties.AdditionalSubmitArgs = '--time 01:00:00'; % Add the option of your choice. Here, we set the time limit to 1h. parpool(cluster) % Start the parallel pool |

In this small example, we want to compute the maximum eigenvalue of some random matrices in parallel. To do this, we proceed in three steps:

- Create the parallel pool on the SCITAS cluster we want to use
- Do the actual computations
- Shutdown the parallel pool

% Part 1: Create a cluster c using the 'fidis' profile and start the pool p with 28 workers (cores) c = parcluster('fidis'); p = parpool(c, 28); % Part 2: Do the actual computations. Here we use parfor to exploit the parallel execution of a for loop. tic n = 200; A = 500; a = zeros(1,n); parfor i = 1:n a(i) = max(abs(eig(rand(A)))); end toc % Part 3: Shutdown the parallel pool delete(p) |

Please, note that using MATLAB Parallel Server is an interactive process, i.e. you need to keep your MATLAB instance open. This can be difficult if your computations need tens of hours to complete. In this case, you may want to consider launching them directly on the SCITAS cluster.