PDF de programación - Ejecución de código MATLAB sin licencias disponibles : Compilador de MATLAB

<<>>
Imágen de pdf Ejecución de código MATLAB sin licencias disponibles : Compilador de MATLAB

Ejecución de código MATLAB sin licencias disponibles : Compilador de MATLABgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 15 de Diciembre del 2017)
297 visualizaciones desde el 15 de Diciembre del 2017. Una media de 7 por semana
143,3 KB
2 paginas
Ejecución de código MATLAB sin licencias disponibles : Compilador
de MATLAB

Un problema habitual de los usuarios de MATLAB en el CESGA es el limitado número de licencias
disponibles: Por ejemplo si en el HPC320 3 usuarios están utilizando MATLAB en un momento dado, un
cuarto usuario debe esperar para ejecutar su código. Una solución a este problema estriba en el uso del
compilador de MATLAB "mcc" para crear a partir de código MATLAB un programa independiente. Este
programa es más rápido y no requiere una licencia de MATLAB para su ejecución.

Uso recomendado del mcc:
1. Adaptar el código matlab a una función sin argumentos (por ej main.m) desde la cual se
llame al resto de funciones.
2. Desde la terminal ejecutar "source /opt/cesga/matlab/bin/usemcc"
3. Desde la terminal ejecutar mcc [-o <nombre_del_ejecutable>] -m main.m
4. Ejecutar el programa resultante
5. Para su ejecución en cola es necesario incluir "source /opt/cesga/matlab/bin/usemcc" en el
script de envio a cola




Ejemplo:
Radiación de un cuerpo negro (Fórmula de Planck):

u

p

n
)(

=

3

pn
8
c

3

h
n
h
)
(
Tk
Be



1

-

blackbody.m:
function BB = blackbody(T,lambda)
h = 6.6261*10^-34; % Planck's constant J s
c = 2.9979*10^8; % speed of light m/s
k = 1.3807*10^-23; % Boltzmann's constant
J/K
A = (h.*c)./(k.*T.*lambda);

%energy density function:
B = (8.*pi.*h.*c)./lambda.^5;
BB = B.*(1./(exp(A)-1));


Si quisiéramos ver la variación de la intensidad de la radiación con la temperatura y la longitud de onda
podríamos utilizar un programa como el que sigue:

script.m:
T = 1000:100:8000;
lambda = 50e-9:10e-9:3000e-9;
i=1;
for TT = T
j=1;
for nn = lambda
U(i,j) = blackbody(TT,nn);
j=j+1;
end
i=i+1;
end
surf(lambda,T,U,'EdgeColor','none',
'FaceColor','interp',
'FaceLighting','phong');
hold on;
contour3(lambda,T,U,20,'k');
colormap hsv;
l = light('Position',[-50 -15 29]);
xlabel('lambda');
ylabel('T');
zlabel('U');
print('-depsc2','fig.eps');
save blackbody.mat lambda T U;




fichero blackbody.mat
En el
salvamos datos de
intensidad
variando la longitud de onda de
50 nm a 3000 nm a temperaturas
entre 1000 y 8000 K. A su vez en
el fichero fig.eps se salva el
gráfico tridimensional.










1. añadimos “function main” al principio de script.m y lo
salvamos como main.m
2. ejecutamos "source /opt/cesga/matlab/bin/usemcc"
(esto sólo es necesario una vez por sesión)
3. ejecutamos "mcc -o blackbody -m main.m" y
obtenemos el ejecutable "blackbody"
4. ejecutamos "./blackbody" y obtenemos el mismo
resultado que en la ejecución usando matlab aunque sin
necesidad de tener una licencia del mismo disponible.


Para su ejecución:
matlab -nosplash < script.m

Para su compilación con el compilador de MATLAB:
main.m:
function main
T = 1000:100:8000;
lambda = 50e-9:10e-9:3000e-9;
i=1;
for TT = T
j=1;
for nn = lambda
U(i,j) = blackbody(TT,nn);
j=j+1;
end


En el caso de la versión del compilador del SVGD existen pocas limitaciones en código que puede ser
compilable, sin embargo, en el caso del HPC320 hay más, por ej las funciones gráficas del ejemplo no
compilarán. Se pueden ver las limitaciones en los siguientes enlaces:
HPC320: Compiler 3.0
http://www.mathworks.com/access/helpdesk_r13/help/toolbox/compiler/ch01in13.html
SVGD: Compiler 4.3
http://www.mathworks.com/products/compiler/compiler_support.html

Más información:
http://www.mathworks.com/access/helpdesk/help/toolbox/compiler/

Lectura recomendada: Mathworks white paper Writing Fast MATLAB Code
http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=5685&objectType=file

Cualquier duda al respecto no dude en consultarnos en aplicacions@cesga.es

(c) CESGA 2006
Autor: Aurelio Rodríguez
Trabajo cofinanciado por el FSE (Fondo Social Europeo)
  • Links de descarga
http://lwp-l.com/pdf7884

Comentarios de: Ejecución de código MATLAB sin licencias disponibles : Compilador de MATLAB (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

Revisar política de publicidad