- SSH onto the mercury login node
- Request an interactive session on a compute node
srun --pty bash -l
- Load the module with the desired version of matlab
module load matlab/2017b
- Start the matlab interpreter by typing:
To run a matlab script in batch mode, generate a submission script similar to the one below, and run by typing
#!/bin/bash #SBATCH --account=phd #SBATCH --mem=2G #SBATCH --time=0-01:00:00 #SBATCH --job-name=example_job # Load the module with the desired version of matlab module load matlab/2017b # [optional] - load knitro if using the optimization package module load knitromatlab/10.1/10.1.0 # run matlab script named myscript.m srun matlab -nodisplay -nojvm < myscript.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
% Get the number of cores allocated to your job num_cores = str2num(getenv('SLURM_CPUS_PER_TASK')) % Start a pool of workers c = parcluster; poolobj = parpool(c, num_cores); % Distribute tasks among workers in parallel parfor ix = 1:poolobj.NumWorkers taskID = get(getCurrentTask,'ID'); workerPID = get(getCurrentWorker, 'ProcessId') fprintf('Worker %d has taskID %d and PID %d \n:', ix, taskID, workerPID) end % Shut down pool of workers delete(poolobj)
There are 3 options for performing GPU computations in Matlab. Option #1 is simplest and commonly used, while #3 is most difficult and highest performance.
- Use one of the numerous built-in Matlab functions that support gpuArray data. In Matlab, methods(‘gpuArray’) lists all methods with class gpuArray support.
- Implement a custom Matlab function of element-wise operations to be performed on the GPU, via arrayfun or bsxfun.
- Create a custom GPU kernel that will process Matlab’s gpuArray data.
The basic method (option #1) for transforming a CPU-based Matlab program into one that runs on the GPU using the supported built-in Matlab functions is:
- Move the input data from Matlab to GPU using the gpuArray function, or directly create the input data on the GPU using static gpuArray methods.
- Use exactly the same processing code as for the CPU implementation.
- Move the results back into Matlab memory using the gather function.
There are many good articles on the Internet on how to use a GPU in Matlab. Here are some starters: