Diferencia entre revisiones de «MATLAB Compilación»
(Página creada con «Beneficios Al usar el Toolbox Compiler, es posible crear una aplicación standalone que no hace uso de licencias de MATLAB, ni de sus toolbox. Además esta puede ejecutars…») |
|||
(No se muestran 2 ediciones intermedias de otro usuario) | |||
Línea 1: | Línea 1: | ||
Beneficios | == Beneficios == | ||
Al usar el Toolbox Compiler, es posible crear una aplicación standalone que '''no hace uso de licencias de [https://wiki.nlhpc.cl/MATLAB MATLAB], ni de sus toolbox.''' Además esta puede ejecutarse en otro ambiente que no tenga instalado MATLAB, solo se necesita instalar el [https://mathworks.com/products/compiler/matlab-runtime.html MATLAB Runtime], que se puede obtener de forma gratuita. | |||
Al usar el Toolbox Compiler, es posible crear una aplicación standalone que no hace uso de licencias de MATLAB, ni de sus toolbox. Además esta puede ejecutarse en otro ambiente que no tenga instalado MATLAB, solo se necesita instalar el MATLAB Runtime, que se puede obtener de forma gratuita. | |||
== ¿Como compilar? == | |||
Usaremos el siguiente código de ejemplo que utiliza la función [https://mathworks.com/help/distcomp/parfor.html parfor] del Toolbox Distrib Computing de [https://wiki.nlhpc.cl/MATLAB MATLAB] | |||
<pre> | |||
pc = parcluster(); | pc = parcluster(); | ||
pc.JobStorageLocation = strcat('/tmp/', getenv('SLURM_JOB_ID'), '/lcj/'); | pc.JobStorageLocation = strcat('/tmp/', getenv('SLURM_JOB_ID'), '/lcj/'); | ||
Línea 16: | Línea 15: | ||
A | A | ||
</pre> | |||
Script SBATCH indicando que toolbox vamos a ocupar, ya que al compilar se hace uso de una licencia por cada toolbox, si ejecutamos directamente en la consola el comando mcc, este podría fallar si otro usuario esta ocupando la licencia. | Script SBATCH indicando que toolbox vamos a ocupar, ya que al compilar se hace uso de una licencia por cada toolbox, si ejecutamos directamente en la consola el comando mcc, este podría fallar si otro usuario esta ocupando la licencia. | ||
<pre> | |||
#!/bin/bash | #!/bin/bash | ||
#SBATCH -J ejemplo | #SBATCH -J ejemplo | ||
#SBATCH -p | #SBATCH -p general | ||
#SBATCH -n 1 | #SBATCH -n 1 | ||
#SBATCH --ntasks-per-node=1 | #SBATCH --ntasks-per-node=1 | ||
#SBATCH --mem-per-cpu= | #SBATCH --mem-per-cpu=4363 | ||
#SBATCH --mail-user=usuario@correo.cl | #SBATCH --mail-user=usuario@correo.cl | ||
#SBATCH --mail-type=ALL | #SBATCH --mail-type=ALL | ||
Línea 34: | Línea 34: | ||
mcc -m ejemplo.m | mcc -m ejemplo.m | ||
</pre> | |||
Ahora para enviar el trabajo al cluster, usamos el siguiente script, solo necesitamos cargar el RUNTIME de MATLAB | Ahora para enviar el trabajo al cluster, usamos el siguiente script, solo necesitamos cargar el [https://la.mathworks.com/products/compiler/matlab-runtime.html RUNTIME] de [https://wiki.nlhpc.cl/MATLAB MATLAB] | ||
<pre> | |||
#!/bin/bash | #!/bin/bash | ||
#SBATCH -J ejemplo | #SBATCH -J ejemplo | ||
#SBATCH -p | #SBATCH -p general | ||
#SBATCH -n 4 | #SBATCH -n 4 | ||
#SBATCH --ntasks-per-node=4 | #SBATCH --ntasks-per-node=4 | ||
#SBATCH --mem-per-cpu= | #SBATCH --mem-per-cpu=4363 | ||
#SBATCH --mail-user=usuario@correo.cl | #SBATCH --mail-user=usuario@correo.cl | ||
#SBATCH --mail-type=ALL | #SBATCH --mail-type=ALL | ||
Línea 54: | Línea 55: | ||
./ejemplo | ./ejemplo | ||
</pre> | |||
Referencias | == Referencias == | ||
* [https://mathworks.com/products/compiler.html MATLAB Compiler™] | |||
* [https://mathworks.com/help/compiler/mcc.html Compile MATLAB functions for deployment] |
Revisión actual - 19:52 27 feb 2024
Beneficios
Al usar el Toolbox Compiler, es posible crear una aplicación standalone que no hace uso de licencias de MATLAB, ni de sus toolbox. Además esta puede ejecutarse en otro ambiente que no tenga instalado MATLAB, solo se necesita instalar el MATLAB Runtime, que se puede obtener de forma gratuita.
¿Como compilar?
Usaremos el siguiente código de ejemplo que utiliza la función parfor del Toolbox Distrib Computing de MATLAB
pc = parcluster(); pc.JobStorageLocation = strcat('/tmp/', getenv('SLURM_JOB_ID'), '/lcj/'); parpool(pc, str2num(getenv('SLURM_CPUS_ON_NODE'))) clear A parfor i = 1:30 A(i) = i; end A
Script SBATCH indicando que toolbox vamos a ocupar, ya que al compilar se hace uso de una licencia por cada toolbox, si ejecutamos directamente en la consola el comando mcc, este podría fallar si otro usuario esta ocupando la licencia.
#!/bin/bash #SBATCH -J ejemplo #SBATCH -p general #SBATCH -n 1 #SBATCH --ntasks-per-node=1 #SBATCH --mem-per-cpu=4363 #SBATCH --mail-user=usuario@correo.cl #SBATCH --mail-type=ALL #SBATCH -o %j_%x.out #SBATCH -e %j_%x.err #SBATCH --license=matlab,matlab-compiler,matlab-distrib_computing # indico licencias a usar module load MATLAB/2017a mcc -m ejemplo.m
Ahora para enviar el trabajo al cluster, usamos el siguiente script, solo necesitamos cargar el RUNTIME de MATLAB
#!/bin/bash #SBATCH -J ejemplo #SBATCH -p general #SBATCH -n 4 #SBATCH --ntasks-per-node=4 #SBATCH --mem-per-cpu=4363 #SBATCH --mail-user=usuario@correo.cl #SBATCH --mail-type=ALL #SBATCH -o %j_%x.out #SBATCH -e %j_%x.err module load MCR/2017a mkdir -p /tmp/${SLURM_JOB_ID}/{lcj,mcr} # creo directorio temporal para archivos cache export MCR_CACHE_ROOT=/tmp/${SLURM_JOB_ID}/mcr # cambio a un directorio local el cache ./ejemplo