Matlab

Introducció

En aquest exemple, explorarem com enviar a Multivac un programa en Matlab per a calcular una funció objectiu senzilla en MATLAB.

Execució de matlab per línia de comandes

Hem d’executar:

/usr/local/programari/matlab2024b/bin/matlab -nodisplay -nojvm

S’ha de tenir una mica de paciència ja que tarda un xic.

Codi d’exemple

Suposem que volem minimitzar la següent funció objectiu:

\[f(x) = x^2 + 3x + 2\]

Crearem un arxiu per exemple anomenat test_matlab.m per a calcular el valor de la funció objectiu per a un valor específic de x:

% Definim la funció objectiu
f = @(x) x^2 + 3*x + 2;
% Definim un valor específic de x
x_val = 5;
% Calculem el valor de la funció objectiu per a x_val
resultat = f(x_val);
% Mostrem el resultat
fprintf('El valor de la funció objectiu per a x = %d és %f\n', x_val, resultat);

Aquest codi defineix la funció objectiu, assigna un valor específic a x (en aquest cas, 5), i calcula el resultat de la funció objectiu per a aquest valor de x.

Execució

Crearem un document amb els parametres de conficuració, per exemple: test_matlab.slurm` que conté la configuració d’execució per a aquest script de matlab.

VERSION=1.3
JOB_NAME=matlab_example
NAME_OUTPUT=out
PARTITION=all
N_TASKS=1
CPUS_PER_TASK=1
MAIL_TYPE=END,FAIL
MAIL_USER=nom.usuari@upc.edu
MEMORY=1G
BEGIN=now
TIME_LIMIT=00:05:00
LOG_OUTPUT=log
FORCED_NODES=
EXCLUDED_NODES=
ROUTE=~/
COMMANDS=(
   "/usr/local/programari/matlab2024b/bin/matlab -nodisplay -r \"run('$ROUTE/test_matlab.m'); exit;\" "
)

Aquest script el llançarem des de iocex usant la següent comanda:

multivac test_matlab.slurm

El resultat del nostre programa un cop finalitzada l’execució serà visible al mateix directori a on hem fet l’execució.