Changing stack size of system shell
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I'm calling several pieces of FORTRAN code from within MATLAB using the system command as such:
system(['myFORTRANcode ', num2str(input variable)]);
This works great but one of the FORTRAN programs requires a stack size larger than the default 8192kB. I'm using Linux. If I was running the FORTRAN program from a standard terminal shell, I would simply use
ulimit -s unlimited
However, the ulimit command doesn't seem to work within the MATLAB shell interface, ie I cannot simply type:
system('ulimit -s unlimited');
The command doesn't error, but it doesn't change anything either. Using
system('ulimit -s');
to echo the stack size back returns 8192 as before, instead of the (expected) unlimited.
Any ideas? I don't understand how ulimit alters the stack size, nor do I have a good handle on MATLAB's memory issues with respect to its system shell.
0 comentarios
Respuesta aceptada
Walter Roberson
el 24 de En. de 2012
ulimit -s unlimited has to be run in the same shell session as your code. Each system() call invokes a new shell.
system(['ulimit -s unlimited; myFORTRANcode ', num2str(input variable)]);
Más respuestas (1)
Jason Ross
el 26 de En. de 2012
You can change a lot of these parameters at the system level. It generally starts with editing limits.conf and making a few alterations to some of the PAM module configuration files. You didn't state what distro you are using, but google has some decent howtos on how to set this up so that the limit is set to higher value (or unlimited). It sounds harder than it is :)
0 comentarios
Ver también
Categorías
Más información sobre Fortran with MATLAB en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!