Original Article: Using Matlab on the ACCRE Cluster
Author: accre.vanderbilt.edu

Usando Matlab no Cluster ACCRE

  1. Versões de Matlab no Cluster ACCRE
  2. Verificando pacotes instalados
  3. Scripts de exemplo
  4. Contribuindo com novos exemplos

Matlab é uma linguagem de programação comercial e ambiente de computação que é amplamente popular em muitas áreas de engenharia e ciência. Para executar o Matlab no cluster, você deve primeiro comprar uma licença Matlab do Vanderbilt Software Store (ou loja de software VUMC). Certifique-se de selecionar a versão correta do Matlab (você deve ver um que é especificamente para o ambiente de cluster ACCRE, que historicamente foi listado em "Outro" e não "Linux"). Depois de fornecer uma prova de compra para a licença apropriada, você será adicionado a um grupo de usuários no cluster que possui as permissões necessárias para executar o software. Você pode verificar se você está neste grupo executando o comando groups enquanto estiver conectado ao cluster:

[[email protected] ~]$ groups
science_lab matlab

Aqui, o usuário jill esta em science_lab como seu principal grupo e matlab como um grupo secundário, então ela poderia executar o Matlab no cluster.

1 Versões de Matlab no Cluster ACCRE

Para ver uma lista de versões instaladas do Matlab no cluster, use LMod:

[[email protected] ~]$ module avail MATLAB
       MATLAB/2017a

Várias versões do Matlab estão disponíveis no cluster. Nós encorajamos os usuários a usar a versão mais recente do Matlab (r2015a) instalada, se possível, pois não ofereceremos suporte para versões anteriores indefinidamente.

Para carregar uma versão específica do Matlab, use LMod:

[[email protected] ~]$ module load MATLAB/2017a
[[email protected] ~]$ which matlab
/opt/easybuild/software/Core/MATLAB/2017a/bin/matlab

Se você não estiver no grupo Matlab Unix como descrito acima, você receberá um erro ao tentar carregar o Matlab no primeiro comando "module load". Veja a introdução acima para obter mais detalhes sobre a obtenção de uma licença Matlab para o cluster ACCRE. Can’t find any door style on the market that really complements your unique design intention? Design your own! Contact a local designer or craftsperson to help you create a personalized design.

Para executar o Matlab de forma interativa, basta digitar matlab a partir da linha de comando do Linux:

[[email protected] ~]$ matlab
MATLAB is selecting SOFTWARE OPENGL rendering.

              < M A T L A B (R) >
    Copyright 1984-2015 The MathWorks, Inc.
       R2015a (8.5.0.197613) 64-bit (glnxa64)
                February 12, 2015

To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

    Academic License

>>

Observe que o prompt de comando do Matlab pode levar ~ 30-60 segundos para carregar completamente, dependendo da versão que você está usando e se você o carregou anteriormente na sua sessão de shell atual. Você também pode carregar a interface de usuário gráfica completa (GUI) em sua máquina local entrando no cluster com o encaminhamento X11 ativado (ssh -X <vunetid>@login.accre.vanderbilt.edu). Em geral, usar a GUI do Matlab do cluster será muito lento, especialmente se você estiver fora da rede Vanderbilt, então não recomendamos. Em vez disso, a maioria dos usuários desenvolve seu código Matlab localmente (a partir de um laptop ou ambiente de trabalho) para testar e, em seguida, enviar tarefas para o cluster para processamento em lote (não interativo).

2 Verificando pacotes instalados

Para ver uma lista das caixas de ferramentas Matlab disponíveis no cluster, use a ver comando do prompt de comando do Matlab:

>>ver
----------------------------------------------------------------------------------------------------
MATLAB Version: 8.5.0.197613 (R2015a)
MATLAB License Number: 299681
Operating System: Linux 2.6.32-220.2.1.el6.x86_64 #1 SMP Fri Dec 23 02:21:33 CST 2011 x86_64
Java Version: Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode
----------------------------------------------------------------------------------------------------
MATLAB                                                Version 8.5        (R2015a)
Simulink                                              Version 8.5        (R2015a)
Aerospace Blockset                                    Version 3.15       (R2015a)
Aerospace Toolbox                                     Version 2.15       (R2015a)
Bioinformatics Toolbox                                Version 4.5.1      (R2015a)
Communications System Toolbox                         Version 6.0        (R2015a)
Computer Vision System Toolbox                        Version 6.2        (R2015a)
Control System Toolbox                                Version 9.9        (R2015a)
Curve Fitting Toolbox                                 Version 3.5.1      (R2015a)
DSP System Toolbox                                    Version 9.0        (R2015a)
Database Toolbox                                      Version 5.2.1      (R2015a)
Datafeed Toolbox                                      Version 5.1        (R2015a)
Econometrics Toolbox                                  Version 3.2        (R2015a)
Embedded Coder                                        Version 6.8        (R2015a)
Filter Design HDL Coder                               Version 2.9.7      (R2015a)
Financial Instruments Toolbox                         Version 2.1        (R2015a)
Financial Toolbox                                     Version 5.5        (R2015a)
Fixed-Point Designer                                  Version 5.0        (R2015a)
Fuzzy Logic Toolbox                                   Version 2.2.21     (R2015a)
Global Optimization Toolbox                           Version 3.3.1      (R2015a)
Image Acquisition Toolbox                             Version 4.9        (R2015a)
Image Processing Toolbox                              Version 9.2        (R2015a)
Instrument Control Toolbox                            Version 3.7        (R2015a)
MATLAB Coder                                          Version 2.8        (R2015a)
MATLAB Compiler                                       Version 6.0        (R2015a)
MATLAB Compiler SDK                                   Version 6.0        (R2015a)
Mapping Toolbox                                       Version 4.1        (R2015a)
Model Predictive Control Toolbox                      Version 5.0.1      (R2015a)
Neural Network Toolbox                                Version 8.3        (R2015a)
Optimization Toolbox                                  Version 7.2        (R2015a)
Parallel Computing Toolbox                            Version 6.6        (R2015a)
Partial Differential Equation Toolbox                 Version 2.0        (R2015a)
RF Toolbox                                            Version 2.16       (R2015a)
Robust Control Toolbox                                Version 5.3        (R2015a)
Signal Processing Toolbox                             Version 7.0        (R2015a)
SimBiology                                            Version 5.2        (R2015a)
SimDriveline                                          Version 2.8        (R2015a)
SimElectronics                                        Version 2.7        (R2015a)
SimEvents                                             Version 4.4        (R2015a)
SimMechanics                                          Version 4.6        (R2015a)
SimPowerSystems                                       Version 6.3        (R2015a)
SimRF                                                 Version 4.4        (R2015a)
Simscape                                              Version 3.13       (R2015a)
Simulink 3D Animation                                 Version 7.3        (R2015a)
Simulink Coder                                        Version 8.8        (R2015a)
Simulink Control Design                               Version 4.2        (R2015a)
Simulink Design Optimization                          Version 2.7        (R2015a)
Stateflow                                             Version 8.5        (R2015a)
Statistics and Machine Learning Toolbox               Version 10.0       (R2015a)
Symbolic Math Toolbox                                 Version 6.2        (R2015a)
System Identification Toolbox                         Version 9.2        (R2015a)
Wavelet Toolbox                                       Version 4.14.1     (R2015a)

Observe que a ACCRE possui uma licença para o Caixa de ferramentas de computação paralela , que permite o processamento em múltiplos núcleos de CPU e / ou GPUs, e, portanto, pode permitir um melhor desempenho (tempo de execução mais rápido), dependendo da aplicação.

3 Scripts de exemplo

Executar um script Matlab dentro de um trabalho SLURM é geralmente direto. A menos que você esteja tentando executar vários núcleos de CPU usando o Parallel Computing Toolbox da Matlab, você quer solicitar uma única tarefa, carregar a versão apropriada do Matlab do seu script SLURM e, em seguida, iniciar o seu trabalho Matlab. O exemplo a seguir executa um script Matlab simples que demonstra a utilidade de escrever o código vectorial Matlab:

[[email protected] run1]$ ls
matlab.slurm  vectorization.m
[[email protected] run1]$ cat matlab.slurm 
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --time=00:10:00
#SBATCH --mem=500M
#SBATCH --output=matlab_job_slurm.out

module load MATLAB   # load the default version of Matlab

matlab -nodisplay -nosplash < vectorization.m

A bandeira -nodisplay informa Matlab que você está operando no modo batch, enquanto a bandeira -nosplash impedirá que a tela inicial seja exibida durante a inicialização. Além disso, você pode tentar passar o -nojvm flag, que informa a Matlab que você não precisa de recursos Java para processamento. Passar esta bandeira muitas vezes leva a tempos de carregamento mais rápidos do Matlab, mas algumas operações de E / S podem depender do suporte a Java, então use esta bandeira com cautela. Mais informações podem ser encontradas nesta pagina .

[[email protected] run1]$ cat vectorization.m
% surrounding a block of code with tic and toc
% will time its execution

% non-vectorized code
tic
i = 0;
for t = 0:.00001:10
i = i + 1;
y(i) = sin(t);
end
toc

% vectorized code
tic
t = 0:.00001:10;
y = sin(t);
toc
[[email protected] run1]$ sbatch matlab.slurm 
Submitted batch job 2135971

Depois de esperar alguns minutos:

[[email protected] run1]$ ls
matlab_job_slurm.out  matlab.slurm  vectorization.m
[[email protected] run1]$ cat matlab_job_slurm.out 

                 < M A T L A B (R) >
        Copyright 1984-2015 The MathWorks, Inc.
         R2015a (8.5.0.197613) 64-bit (glnxa64)
                   February 12, 2015

To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.

    Academic License

>> >> >> >> >> >> >> >> >> O tempo decorrido é 0.477166 segundos.
>> >> >> >> >> >> O tempo decorrido é 0.057248 segundos.

Neste exemplo particular, nenhuma função foi definida no arquivo vectorization.m. Muitas vezes, os usuários escrevem scripts com funções e precisam chamar uma função da linha de comando do Linux. Isso pode ser feito passando o intérprete Matlab a opção -r. Por exemplo:

matlab -nodisplay -nosplash -r "myFunc(1),quit()"

Aqui estamos ligando myFunc() e passando um único argumento (1) para a função. Também é necessário chamar quit () depois para garantir que seu trabalho termine assim que o processamento do Matlab for concluído. Você também pode precisar atualizar seu caminho Matlab para incluir diretórios contendo arquivos .m e suas definições de função. Existem algumas maneiras de realizar isso. A primeira maneira é atualizar sua variável de ambiente MATLABPATH Bash. Algo como o seguinte pode ser feito dentro de um script SLURM antes do lançamento do Matlab:

export MATLABPATH=/home/jill/myDir

Alternativamente, o caminho pode ser atualizado em tempo de execução assim:

matlab -nodisplay -nosplash -r "addpath(genpath('/home/jill/myDir')),myFunc(1),quit()"

 

4 Contribuindo com novos exemplos

A fim de promover a colaboração e desenvolver a experiência local da Matlab na Vanderbilt, incentivamos os usuários a enviar exemplos de sua própria Repositório Matlab Github do ACCRE . Instruções para fazer isso podem ser encontradas nesta pagina .