Comparteix:

Matlab

Execució de Matlab

Per executar una simulació de Matlab, has d'executar:

>> srun -p <partition> -c <number of CPUs> --mem <RAM size in MB> matlab -batch "<command>;exit;"&

Recomanem l'ús de byobu o tmux per assegurar la continuïtat del procés.

Com Imprimir els Resultats a la Línia de Comandaments

Posem un exemple. Volem executar el següent fitxer matlabtest.m:

function test = matlabtest ()
A = 1;
B = 1;
C = A+B;
end

Si executem el comandament següent:

>> srun -p gpi.compute -c 1 --mem 1000 /opt/matlab2022a/bin/matlab -batch matlabtest

L'execució funcionarà, però no s'imprimirà res a la línia de comandaments.

Per imprimir els resultats, podem utilitzar la funció disp. Pots trobar més informació aquí.

function test = matlabtest ()
A = 1;
B = 1;
C = A+B;
disp('Result:')
disp(C);
end

Si el que volem és guardar tota la sortida en un fitxer, podem fer servir la funció diary. Més informació aquí.

function test = matlabtest ()
diary  on;
diary log.txt;
A = 1;
B = 1;
C = A+B;
disp('Result:')
disp(C);
end

No obstant això, a través de la línia de comandaments no podem mostrar els resultats gràfics. Per poder obtenir els gràfics, hem de guardar aquestes figures amb la funció savefig(). Pots veure més informació aquí.

function test = matlabtest ()
diary  on;
diary log.txt;
figure=bar([1 11 7 8 2 2 9 3 6]);
savefig('grafic.fig');
end

A més, podem utilitzar sbatch en lloc de srun per executar un script de bash. Aquí pots consultar el tutorial de sbatch.

Exemple de myscript.sh:

#!/bin/bash
#SBATCH -p gpi.compute          # Partition to submit to
#SBATCH --mem=1G                  # Max CPU Memory
#SBATCH --gres=gpu:1
matlab -batch matlabtest

>> sbatch myscript.sh