Author: accre.vanderbilt.edu
Usando Matlab no Cluster ACCRE
- Versões de Matlab no Cluster ACCRE
- Verificando pacotes instalados
- Scripts de exemplo
- 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:
[jill@vmps12 ~]$ 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
:
[jill@vmps12 ~]$ 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:
[jill@vmps12 ~]$ module load MATLAB/2017a
[jill@vmps12 ~]$ 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:
[jill@vmps12 ~]$ 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:
[jill@vmps12 run1]$ ls
matlab.slurm vectorization.m
[jill@vmps12 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 .
[jill@vmps12 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
[jill@vmps12 run1]$ sbatch matlab.slurm
Submitted batch job 2135971
Depois de esperar alguns minutos:
[jill@vmps12 run1]$ ls
matlab_job_slurm.out matlab.slurm vectorization.m
[jill@vmps12 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 .