Difference between revisions of "Stacksize"
From MohidWiki
(→How-To) |
|||
(8 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
Stacksize reserve is a problem in windows because windows OSes limit the use of code data and static data to 2GB only (even for x64 architectures). The best description found over this matter, to this date, on the internet is in this thread in intel forums | Stacksize reserve is a problem in windows because windows OSes limit the use of code data and static data to 2GB only (even for x64 architectures). The best description found over this matter, to this date, on the internet is in this thread in intel forums | ||
− | [http://software.intel.com/en-us/articles/memory-limits-applications-windows/] | + | [http://software.intel.com/en-us/articles/memory-limits-applications-windows/ Intel Forum: memory-limits-applications-windows] |
− | |||
==Requirements== | ==Requirements== | ||
Line 15: | Line 14: | ||
or | or | ||
− | * Visual Studio C++ 2010 Express (free software) | + | * [http://www.microsoft.com/express/Downloads/ Visual Studio C++ 2010 Express (free software)] |
Visual Studio 2008 (or Visual Studio C++ 2010 Express) provides the [[dumpbin]] and the [[editbin]] command-line tools. | Visual Studio 2008 (or Visual Studio C++ 2010 Express) provides the [[dumpbin]] and the [[editbin]] command-line tools. | ||
==How-To== | ==How-To== | ||
− | * Copy paste the following code and save it as a batchfile in your simulation ''\exe'' folder | + | * Copy paste the following code and save it as a batchfile in your simulation ''\exe'' folder under the name ''[[IncrementSizeOfStack]].bat'': |
@echo off | @echo off | ||
+ | REM IncrementSizeOfStack.bat | ||
REM ARG1 %1 is for example "MohidWater_x64_release_double_27-03-2011.exe" | REM ARG1 %1 is for example "MohidWater_x64_release_double_27-03-2011.exe" | ||
set MOHID=%1 | set MOHID=%1 | ||
Line 29: | Line 29: | ||
%MOHID% | %MOHID% | ||
) | ) | ||
+ | |||
+ | * You also need to create a file containing a single column of integers ranging from 1 to 1000 (copy paste from an excel column, for example) and save it as ''indexes.txt'' in your simulation ''\exe'' folder: | ||
+ | 1 | ||
+ | 2 | ||
+ | 3 | ||
+ | 4 | ||
+ | ... | ||
+ | 1000 | ||
* Open the special console ''Start-->All programs-->VS2008-->VS2008 Tools-->VS2008 Command prompt'' and type | * Open the special console ''Start-->All programs-->VS2008-->VS2008 Tools-->VS2008 Command prompt'' and type | ||
Line 34: | Line 42: | ||
> IncrementSizeOfStack.bat MohidWater_x64_release_double_DD-MM-YYYY.exe | > IncrementSizeOfStack.bat MohidWater_x64_release_double_DD-MM-YYYY.exe | ||
− | The batch file starts testing different stack sizes. Once you get the MohidWater running, edit the laststacksize.txt file to see what is the minium number of Stack reserve that made the model run. | + | The batch file starts testing different stack sizes. |
+ | |||
+ | Once you get the MohidWater running, use ''Ctrl-C'' to break the batchfile from running and edit the ''laststacksize.txt'' file to see what is the minium number of Stack reserve that made the model run. Keep a note of it. | ||
+ | |||
+ | You now have a properly configured executable to run your simulation. | ||
==See also== | ==See also== | ||
+ | *[[stack overflow]] | ||
*[[dumpbin]] | *[[dumpbin]] | ||
*[[editbin]] | *[[editbin]] | ||
Line 42: | Line 55: | ||
[[Category:programming]] | [[Category:programming]] | ||
+ | [[Category:Windows]] |
Latest revision as of 11:39, 1 April 2011
Setting the stacksize reserve with the ifort compiler can be critical to run MOHIDWater without any stack exception or other stack overflow.
This article helps the developper to find the appropriate stacksize for its program to run.
Stacksize reserve is a problem in windows because windows OSes limit the use of code data and static data to 2GB only (even for x64 architectures). The best description found over this matter, to this date, on the internet is in this thread in intel forums
Intel Forum: memory-limits-applications-windows
Requirements
In order to find the optimal minimal stacksize reserve to run the software application one needs to install either one of:
- Visual Studio 2008 (paid software)
or
Visual Studio 2008 (or Visual Studio C++ 2010 Express) provides the dumpbin and the editbin command-line tools.
How-To
- Copy paste the following code and save it as a batchfile in your simulation \exe folder under the name IncrementSizeOfStack.bat:
@echo off REM IncrementSizeOfStack.bat REM ARG1 %1 is for example "MohidWater_x64_release_double_27-03-2011.exe" set MOHID=%1 for /F %%i in (indexes.txt) do ( editbin /STACK:%%i000000 %MOHID%.exe @echo %%i000000 > lastStackSize.txt %MOHID% )
- You also need to create a file containing a single column of integers ranging from 1 to 1000 (copy paste from an excel column, for example) and save it as indexes.txt in your simulation \exe folder:
1 2 3 4 ... 1000
- Open the special console Start-->All programs-->VS2008-->VS2008 Tools-->VS2008 Command prompt and type
> cd rootOfSim\exe > IncrementSizeOfStack.bat MohidWater_x64_release_double_DD-MM-YYYY.exe
The batch file starts testing different stack sizes.
Once you get the MohidWater running, use Ctrl-C to break the batchfile from running and edit the laststacksize.txt file to see what is the minium number of Stack reserve that made the model run. Keep a note of it.
You now have a properly configured executable to run your simulation.