<div dir="ltr">Hi Developers,<div style>I know it's not that helpful for folks like me to make suggestions that they're not skilled enough to implement, but how hard would it be for ADMB to add a -o option that would turn on or off the <span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">-O3 or </span><span style="color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px">-Ox? And wasn't </span>-s going to become the default at some point, or was the only proposed change the one that Arni to set this as default in the IDE?</div>
<div style>-Ian</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Mar 28, 2013 at 7:45 AM, Larry Jacobson (NOAA Federal) <span dir="ltr"><<a href="mailto:larry.jacobson@noaa.gov" target="_blank">larry.jacobson@noaa.gov</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sorry, my original note summarizing approaches to reducing compile time for ADMB using the MinGW or Visual C++ 2010 Express compilersin Windows left out 3 important items.  Unfortunately, one cannot recompile e-mails.  In any case:<br>

<br>
1) Optimization is turned off using the MinGW compiler by changing line line sym=-O3 in adcomp.bat so that it reads sym=-O.<br>
<br>
2) Optimization is turned off using the Microsoft compiler by omitting -Ox from the first call to the compiler.  That is, use:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
cl -c /EHsc -DUSE_LAPLACE -DWIN32 %opt% -D__MSVC32__=8 -I. -I"%ADMB_HOME%"\include -I"%ADMB_HOME%"\contrib %1.cpp<br>
</blockquote>
instead of:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
cl -c /EHsc -DUSE_LAPLACE -DWIN32 %opt% /Ox -D__MSVC32__=8 -I. -I"%ADMB_HOME%"\include -I"%ADMB_HOME%"\contrib %1.cpp<br>
</blockquote>
<br>
3) The popular IDE for Windows uses the MinGW compilerwith a slightly different adcomp.bat file that is probably in a directory named something like C:\admb\admb101-gcc452-win32\<u></u>bin. To turn off optimization in the IDE, change theline sym=-O3 in adcomp.bat so that it reads sym=-O(same as #1).  See Arni's note belowand an additional one from John Sibert below Arni's.<br>

<br>
Cheers!<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Larry,<br>
<br>
ADMB-IDE does not reinvent any wheels, so to compile models it just invokes the "adcomp" shell script that comes with ADMB. In the compilation window, you see something like:<br>
<br>
*** adcomp simple<br>
g++ -c -O3 -Wno-deprecated -D__GNUDOS__ -Dlinux -DOPT_LIB -DUSE_LAPLACE -fpermissive -I. -I"c:/admb/admb101-gcc452-<u></u>win32\include" -o simple.obj simple.cpp<br>
<br>
The easiest way to change the compiler optimization options is to edit the adcomp.bat script directly, after making a backup copy of the original. Then you will see something like this in the compilation window:<br>
<br>
*** adcomp simple<br>
g++ -whatever the adcomp.bat script does now<br>
<br>
Given the importance of optimization options (btw, thanks for analyzing that), we might modify the "adcomp" script in the near future to allow the user to set optimization options outside the script, like "adcomp -O2 mymodel". ADMB-IDE will then introduce a new menu entry to set those options within the IDE.<br>

<br>
Arni<br>
</blockquote>
<br>
>From John Sibert:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Another way to greatly decrease compile time for applications is to break the source code into  smaller pieces by changing ADMB FUNCTIONs into real C++ functions. It is generally considered good practice for maintaining large software projects. It is not difficult to do, but does require extra work and and climbing a bit of a learning curve for the "make". A simple Makefile for ADMB projects hidden on the ADMB website <a href="http://www.admb-project.org/developers/admb-developers-workshops/admb-developers-workshop-march-13-16-2012/simple-makefile-for-admb" target="_blank">http://www.admb-project.org/<u></u>developers/admb-developers-<u></u>workshops/admb-developers-<u></u>workshop-march-13-16-2012/<u></u>simple-makefile-for-admb</a>.<br>

</blockquote>
<br>
-------- Original Message --------<br>
Subject:        Summary -> ADMB V11.0 build (compile/link) time using MinGW or Visual C++ 2010 Express in Windows 7 (32 bit) - very slow<br>
Date:   Mon, 25 Mar 2013 07:56:56 -0400<br>
From:   Larry Jacobson (NOAA Federal) <<a href="mailto:larry.jacobson@noaa.gov" target="_blank">larry.jacobson@noaa.gov</a>><br>
Reply-To:       <a href="mailto:Larry.Jacobson@noaa.gov" target="_blank">Larry.Jacobson@noaa.gov</a><br>
To:     ADMB Users <<a href="mailto:Users@admb-project.org" target="_blank">Users@admb-project.org</a>><br>
<br>
<br>
<br>
My original question concerned speeding up ADMB builds using the MingGW<br>
and Microsoft 2010 Express compilers with ADMB V11.0 on a 32 bit Windows<br>
computer.<br>
<br>
Rick Methot, Jim Ianelli, Alen Hicks, Johnoel Ancheta and Dave Fournier<br>
responded.  All suggested reducing the level of optimization with the<br>
cpp program gets compiled.  This is done in the adcomp.bat file.<br>
<br>
Turning off optimization works wonders for compile time and has modest<br>
effects on run time. Build time with the Microsoft compiler dropped from<br>
8.25 minutes to 0.13 minutes (not a typo!) and the run time increased by<br>
only 0.17 minutes.  Build time with the MinGW compiler dropped from 1.75<br>
minutes to 1 minute and the run time decreased by about 0.25 minutes<br>
(surprising but the MinGW web site said this can happen and my results<br>
varied a bit from trial to trial). Some results are summarized in a<br>
bitmap table below.<br>
<br>
I wouldn't say that there was a clear winner between Microsoft and<br>
MinGW.  It depends on the optimization level and whether you are<br>
interested in time to build or time to run.  Both are free...<br>
<br>
Rick Methot got the same results building the Stock Synthesis model<br>
using the Microsoft compiler. Getting rid of the optimization shortened<br>
the build time a lot but had little effect on run times.<br>
<br>
Johnoel Ancheta indicated that the ADMBTeam is currently working on this<br>
issue also.<br>
<br>
Dave Fournier recommended getting a new computer or running in Linux. I<br>
use the Linux option pretty routinely for ADMB models (for speed) but<br>
didn't test it here.  I have noticed that the compile times on Linux are<br>
longish too and I bet they get much shorter when the optimization level<br>
is reduced.  I agree with him about the new computer but with<br>
sequestration etc. on the horizon it is not going to happen.<br>
<br>
Alan Hicks recommended (several times) using reduced optimization for<br>
debugging/programming and full optimization for releases. Sounds like a<br>
good idea to me. Some care seems advisable because turning off the<br>
optimization may have unintended side effects.  I shouldn't have any<br>
effect on error checking during the compilation step but what do I know?<br>
<br>
<br>
Thanks everyone and cheers!<br>
<br>
<br>
<br>
-- <br>
**********************<br>
Larry Jacobson<br>
National Marine Fisheries Service<br>
Northeast Fisheries Science Center<br>
166 Water Street<br>
Woods Hole, MA 02543-1026<br>
Voice: <a href="tel:508-495-2317" value="+15084952317" target="_blank">508-495-2317</a><br>
Fax: <a href="tel:508-495-2393" value="+15084952393" target="_blank">508-495-2393</a><br>
E-mail: <a href="mailto:larry.jacobson@noaa.gov" target="_blank">larry.jacobson@noaa.gov</a><br>
**********************<br>
<br>
-- <br>
**********************<br>
Larry Jacobson<br>
National Marine Fisheries Service<br>
Northeast Fisheries Science Center<br>
166 Water Street<br>
Woods Hole, MA 02543-1026<br>
Voice: <a href="tel:508-495-2317" value="+15084952317" target="_blank">508-495-2317</a><br>
Fax: <a href="tel:508-495-2393" value="+15084952393" target="_blank">508-495-2393</a><br>
E-mail: <a href="mailto:larry.jacobson@noaa.gov" target="_blank">larry.jacobson@noaa.gov</a><br>
**********************<br>
<br>
<br>
<br>
______________________________<u></u>_________________<br>
Users mailing list<br>
<a href="mailto:Users@admb-project.org" target="_blank">Users@admb-project.org</a><br>
<a href="http://lists.admb-project.org/mailman/listinfo/users" target="_blank">http://lists.admb-project.org/<u></u>mailman/listinfo/users</a><br>
</blockquote></div><br></div>